v8/test/unittests/heap
Jake Hughes 5f6aa2e5bf [heap] Add object start bitmap for conservative stack scanning
With conservative stack scanning enabled, a snapshot of the call stack
upon entry to GC will be used to determine part of the root-set. When
the collector walks the stack, it looks at each value and determines
whether it could be a potential on-heap object pointer. However, unlike
with Handles, these on-stack pointers aren't guaranteed to point to the
start of the object: the compiler may decide hide these pointers, and
create interior pointers in C++ frames which the GC doesn't know about.

The solution to this is to include an object start bitmap in the header
of each page. Each bit in the bitmap represents a word in the page
payload which is set when an object is allocated. This means that when
the collector finds an arbitrary potential pointer into the page, it can
walk backwards through the bitmap until it finds the relevant object's
base pointer. To prevent the bitmap becoming stale after compaction, it
is rebuilt during object sweeping.

This is experimental, and currently only works with inline allocation
disabled, and single generational collection.

Bug: v8:10614
Change-Id: I28ebd9562f58f335f8b3c2d1189cdf39feaa1f52
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2375195
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69615}
2020-08-31 07:10:36 +00:00
..
cppgc cppgc: Nullify source Members on move 2020-08-28 10:38:36 +00:00
allocation-observer-unittest.cc [heap] Support removing of observers during Step() 2020-08-17 10:42:32 +00:00
barrier-unittest.cc Reland "[d8] Remove maximum workers limitation" 2019-07-30 07:56:17 +00:00
bitmap-test-utils.h [heap] Relax accessing markbits in ranges. 2019-02-25 15:28:41 +00:00
bitmap-unittest.cc [heap] Fix an out-of-bounds access in the marking bitmap 2020-04-20 09:07:57 +00:00
code-object-registry-unittest.cc [heap] Split out paged-spaces.h 2020-05-14 19:25:25 +00:00
embedder-tracing-unittest.cc [unittests] Convert to the new MOCK_METHOD macro. 2020-06-10 15:50:38 +00:00
gc-idle-time-handler-unittest.cc [heap] Clean up GCIdleTimeHandler. 2020-02-26 10:43:14 +00:00
gc-tracer-unittest.cc [heap, tracing] Use WorkerThreadRuntimeCallStatsScope in background GC 2019-08-29 15:55:48 +00:00
heap-controller-unittest.cc [heap] Introduce a min heap size and skip GCs below that threshold 2019-06-06 15:49:50 +00:00
heap-unittest.cc [heap] Move external memory counters back into Heap 2020-08-12 12:27:17 +00:00
heap-utils.h Reland "cppgc,heap: Implement atomic unified heap GC" 2020-06-17 11:02:38 +00:00
item-parallel-job-unittest.cc [heap] Do not emit background GC trace events on the main thread 2019-07-18 08:56:58 +00:00
js-member-unittest.cc cppgc: Add basic operations for JSMember 2020-07-23 20:57:13 +00:00
list-unittest.cc [heap] Make Heap::Contains const 2020-05-13 13:19:22 +00:00
local-factory-unittest.cc [offthread] Change OffThreadIsolate to LocalIsolate 2020-08-14 10:57:27 +00:00
local-heap-unittest.cc [heap] Implement LocalHeap::Current using thread_local 2020-07-07 16:17:01 +00:00
marking-unittest.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
marking-worklist-unittest.cc [heap] Split marking worklist into global worklist and local worklists 2020-08-11 13:15:54 +00:00
memory-reducer-unittest.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
object-start-bitmap-unittest.cc [heap] Add object start bitmap for conservative stack scanning 2020-08-31 07:10:36 +00:00
object-stats-unittest.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
persistent-handles-unittest.cc [handles] Make DetachPersistent insert into ordered_blocks_ 2020-08-05 12:03:52 +00:00
safepoint-unittest.cc Reland "[heap] Allow LocalHeap on the main thread" 2020-07-10 11:22:19 +00:00
slot-set-unittest.cc [heap] Verify filler slots don't need clearing 2020-04-28 16:24:45 +00:00
spaces-unittest.cc [offthread] Change OffThreadIsolate to LocalIsolate 2020-08-14 10:57:27 +00:00
unified-heap-unittest.cc Reland "cppgc,heap: Implement atomic unified heap GC" 2020-06-17 11:02:38 +00:00
unmapper-unittest.cc [heap] Reenable UnmapOnTeardown test 2020-08-04 10:38:34 +00:00
worklist-unittest.cc [v8 heap]: Track GlobalSize in worklist. 2020-02-07 16:12:30 +00:00