v8/test/unittests/heap/cppgc
Omer Katz d3a72e3c2a cppgc: Stack scanning using ObjectStartBitmap
This CL implements stack scanning for cppgc.
Given a value on the stack, the MarkingVisitor uses
PageBackend::Lookup to checks whether that address is on
the heap. If it is, BasePage::TryObjectHeaderFromInnerAddress
(introduced in this CL) is used to get the relevant object
header. Note that random addresses on the heap might point to
free memory, object-start-bitmap, etc.

If a valid object header is found:
* If the object is not in construction, the GCInfoIndex is used
the get the relevant Trace method and the object is traced.
* Otherwise, the object is conservatively scanned - i.e. the
payload of the object is iterated word by word and each word is
treated as a possible pointer.

Only addresses pointing to the payload on non-free objects are
traced.

BasePage::TryObjectHeaderFromInnerAddress assumes on LAB on the
relevant space, thus all LABs are reset before scanning the stack.

Bug: chromium:1056170
Change-Id: I172850f6f1bbb6f0efca8e44ad8fdfe222977b9f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190426
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/master@{#67795}
2020-05-14 10:56:28 +00:00
..
custom-spaces-unittest.cc cppgc: Add TraceCallback to GCInfo 2020-05-13 23:53:43 +00:00
finalizer-trait-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
free-list-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
garbage-collected-unittest.cc cppgc: Add TraceCallback to GCInfo 2020-05-13 23:53:43 +00:00
gc-info-unittest.cc cppgc: Add TraceCallback to GCInfo 2020-05-13 23:53:43 +00:00
heap-object-header-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
heap-page-unittest.cc cppgc: Stack scanning using ObjectStartBitmap 2020-05-14 10:56:28 +00:00
heap-unittest.cc cppgc: Add TraceCallback to GCInfo 2020-05-13 23:53:43 +00:00
logging-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
marker-unittest.cc cppgc: Stack scanning using ObjectStartBitmap 2020-05-14 10:56:28 +00:00
marking-visitor-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
member-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
object-start-bitmap-unittest.cc Reland "cppgc: Port ObjectStartBitmap" 2020-05-13 11:34:20 +00:00
page-memory-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
persistent-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
prefinalizer-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
run-all-unittests.cc cppgc: Hello world 2020-03-23 21:42:56 +00:00
source-location-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
stack-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00
sweeper-unittest.cc cppgc: Add TraceCallback to GCInfo 2020-05-13 23:53:43 +00:00
tests.cc cppgc: Avoid recursive GC during sweeping 2020-05-06 23:25:01 +00:00
tests.h heap,cppgc: Update StackState enum values 2020-05-12 12:07:27 +00:00
visitor-unittest.cc cppgc: Add TraceCallback to GCInfo 2020-05-13 23:53:43 +00:00
worklist-unittest.cc cppgc: Rename unittest files 2020-05-08 08:50:48 +00:00