[heap] Fix IsBlack() DCHECK in MinorMC worklist draining

MinorMC uses now the standard white->grey->black process, so expect
worklist entries to be either grey or black.

The DCHECK likely never triggered because all the draining happened
in MarkRootSetInParallel(). Now with the unified-young-gen prototype
we see the dcheck triggers after performing wrapper tracing.

Drive-by: Fix flag MinorMC::FinishConcurrentMarking

Bug: v8:13475
Change-Id: I490d2ccefd13a09887111142e39d2e49fead4da3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4020296
Auto-Submit: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#84192}
This commit is contained in:
Anton Bikineev 2022-11-10 18:44:22 +01:00 committed by V8 LUCI CQ
parent aa684004d0
commit aad28b55da

View File

@ -5572,7 +5572,7 @@ void MinorMarkCompactCollector::TearDown() {
}
void MinorMarkCompactCollector::FinishConcurrentMarking() {
if (v8_flags.concurrent_marking) {
if (v8_flags.concurrent_minor_mc_marking) {
DCHECK_EQ(heap()->concurrent_marking()->garbage_collector(),
GarbageCollector::MINOR_MARK_COMPACTOR);
heap()->concurrent_marking()->Cancel();
@ -6304,7 +6304,7 @@ void MinorMarkCompactCollector::DrainMarkingWorklist() {
DCHECK(!object.IsFreeSpaceOrFiller(cage_base));
DCHECK(object.IsHeapObject());
DCHECK(heap()->Contains(object));
DCHECK(non_atomic_marking_state()->IsBlack(object));
DCHECK(!non_atomic_marking_state()->IsWhite(object));
main_marking_visitor_->Visit(object);
}
DCHECK(local_marking_worklists_->IsEmpty());