e072615cc2
This is a revival of https://chromium-review.googlesource.com/c/v8/v8/+/2228332 The CL establishes the following: *) Objects are marked before being pushed to the worklists. *) Live bytes are always accounted after tracing an object (i.e. move from Gray to Black below). *) Previously not fully constructed objects are traced immediately instead of pushed to the marking worklist. This establishes the following invariants for all marking worklists: 1) White = !object.is_marked() && !worklist.contains(object) 2) Gray = object.is_marked() && worklist.contains(object) 3) Black = object.is_marked() && !worklist.contains(object) Bug: chromium:1056170 Change-Id: I821573b3fbc057e6ffb836154271ff986ecb4d2b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336797 Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#69268} |
||
---|---|---|
.. | ||
concurrent-sweeper-unittest.cc | ||
custom-spaces-unittest.cc | ||
finalizer-trait-unittest.cc | ||
free-list-unittest.cc | ||
garbage-collected-unittest.cc | ||
gc-info-unittest.cc | ||
gc-invoker-unittest.cc | ||
heap-growing-unittest.cc | ||
heap-object-header-unittest.cc | ||
heap-page-unittest.cc | ||
heap-unittest.cc | ||
logging-unittest.cc | ||
marker-unittest.cc | ||
marking-verifier-unittest.cc | ||
marking-visitor-unittest.cc | ||
member-unittest.cc | ||
minor-gc-unittest.cc | ||
object-start-bitmap-unittest.cc | ||
page-memory-unittest.cc | ||
persistent-unittest.cc | ||
prefinalizer-unittest.cc | ||
run-all-unittests.cc | ||
source-location-unittest.cc | ||
stack-unittest.cc | ||
stats-collector-unittest.cc | ||
sweeper-unittest.cc | ||
test-platform.cc | ||
test-platform.h | ||
tests.cc | ||
tests.h | ||
visitor-unittest.cc | ||
worklist-unittest.cc | ||
write-barrier-unittest.cc |