v8/test/unittests/heap/cppgc
Anton Bikineev 2792a669e4 cppgc: young-gen: Support young generation with stack
Before this CL Oilpan young generation didn't support running with
stack. The problem was in initializing stores that don't have the write
barrier. If a GC happens during object initialization, the following
pointer stores can be missed:

struct GCed: GarbageCollected<GCed> {
  GCed():
    m1(MakeGarbageCollected<>()),  // calls GC
    m2(MakeGarbageCollected<>())   // old-to-young ref missing barrier
  {}
  ...
};

The CL solves it by recording in-construction objects in a dedicated
remembered-set, which is retraced on next GCs.

Bug: chromium:1029379
Change-Id: I17975e2e2253b2792f71fb64a639e5bdb2ef4935
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3990829
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#84009}
2022-11-02 13:03:18 +00:00
..
age-table-unittest.cc cppgc: Fix AgeTableTest 2022-09-05 12:56:15 +00:00
allocation-unittest.cc Reland "cppgc: Add DCHECK that object start bitmap is safe to use" 2022-03-23 22:58:42 +00:00
compactor-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
concurrent-marking-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
concurrent-sweeper-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
cross-thread-persistent-unittest.cc Migrate CrossThreadPersistent 2020-10-09 14:33:57 +00:00
custom-spaces-unittest.cc cppgc: Add support for double-word aligned allocations 2021-10-12 13:18:16 +00:00
ephemeron-pair-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
explicit-management-unittest.cc cppgc: young-gen: Fix compilation and tests with cppgc_enable_young_gen 2022-05-02 13:34:04 +00:00
finalizer-trait-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
free-list-unittest.cc cppgc: Cleanups around testing 2021-03-05 17:04:19 +00:00
garbage-collected-unittest.cc Replace STATIC_ASSERT with static_assert 2022-05-13 13:46:27 +00:00
gc-info-unittest.cc [cppgc] Use global OOM handler for GCInfoTable 2022-07-05 17:11:15 +00:00
gc-invoker-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
heap-growing-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
heap-object-header-unittest.cc cppgc: Rename HoH methods 2021-05-12 18:54:43 +00:00
heap-page-unittest.cc [cppgc, cppgc-js] Implement GC on allocation failure 2022-08-30 19:36:18 +00:00
heap-registry-unittest.cc cppgc: Improve Member checking 2021-05-17 13:48:26 +00:00
heap-statistics-collector-unittest.cc cppgc: Add support for double-word aligned allocations 2021-10-12 13:18:16 +00:00
heap-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
incremental-marking-schedule-unittest.cc cppgc: Fix reporting of marked bytes in the atomic pause 2021-02-18 21:52:14 +00:00
liveness-broker-unittest.cc cppgc: LivenessBroker: Treat nullptr as live 2021-08-11 11:59:31 +00:00
logging-unittest.cc cppgc: fix sourceLocation test on gcc 2021-04-23 21:45:24 +00:00
marker-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
marking-verifier-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
marking-visitor-unittest.cc cppgc: Split of roots visitation from regular Visitor 2022-08-01 14:36:03 +00:00
member-unittest.cc cppgc: Avoid decompression for Member write barriers 2022-07-19 15:23:16 +00:00
metric-recorder-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
minor-gc-unittest.cc cppgc: young-gen: Support young generation with stack 2022-11-02 13:03:18 +00:00
name-trait-unittest.cc [heap] Adjust cppgc heap statistics 2022-07-15 20:06:20 +00:00
object-size-trait-unittest.cc cppgc: Introduce ObjectSizeTrait 2021-01-22 20:53:55 +00:00
object-start-bitmap-unittest.cc cppgc: Remove -inl.h files 2020-07-01 08:46:26 +00:00
page-memory-unittest.cc [cppgc, cppgc-js] Implement GC on allocation failure 2022-08-30 19:36:18 +00:00
persistent-family-unittest.cc cppgc: Split of roots visitation from regular Visitor 2022-08-01 14:36:03 +00:00
platform-unittest.cc cppgc-js: Allow custom OOM handling and redirect to V8 handler 2021-08-24 20:21:28 +00:00
prefinalizer-unittest.cc Revert "cppgc: Add regression test and check for object start bitmap" 2022-03-23 21:07:16 +00:00
run-all-unittests.cc [test] Add a unittest platform setup mixin 2022-04-06 13:07:43 +00:00
sanitizer-unittest.cc cppgc: Allow ASAN-safe memset in SetMemoryInaccessible() 2021-05-07 08:14:17 +00:00
source-location-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
stack-unittest.cc cppgc: stack unittest: Fix order of attributes 2021-05-06 23:10:17 +00:00
stats-collector-scopes-unittest.cc cppgc: Fix configs in stand-alone tests 2022-10-07 08:06:13 +00:00
stats-collector-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
sweeper-unittest.cc cppgc: young-gen: Switch from std::set to slot-set. 2022-10-10 11:54:36 +00:00
test-platform.cc cppgc: Add tracing scopes 2020-11-19 15:48:17 +00:00
test-platform.h [config] Add V8_NODISCARD for Scope classes 2020-11-26 11:08:45 +00:00
testing-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
tests.cc cppgc: Remove the 2GB split 2022-09-15 17:04:23 +00:00
tests.h cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
visitor-unittest.cc Revert "cppgc: Add regression test and check for object start bitmap" 2022-03-23 21:07:16 +00:00
weak-container-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
workloads-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00
write-barrier-unittest.cc cppgc: Move configs to heap-config.h 2022-09-23 12:25:12 +00:00