[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:
parent
aa684004d0
commit
aad28b55da
@ -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());
|
||||
|
Loading…
Reference in New Issue
Block a user