[heap] Ensure that VisitFixedArray pushes grey or black array
in marking worklist. Bug: chromium:769173 Change-Id: I4b3ce27d37bec19ec5cc342b4d26a2a45af34b5f Reviewed-on: https://chromium-review.googlesource.com/691728 Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48224}
This commit is contained in:
parent
cbaa568275
commit
69aa6e5736
@ -214,11 +214,17 @@ class IncrementalMarkingMarkingVisitor final
|
||||
int start_offset =
|
||||
Max(FixedArray::BodyDescriptor::kStartOffset, chunk->progress_bar());
|
||||
if (start_offset < object_size) {
|
||||
// Ensure that the object is either grey or black before pushing it
|
||||
// into marking worklist.
|
||||
incremental_marking_->marking_state()->WhiteToGrey(object);
|
||||
if (FLAG_concurrent_marking) {
|
||||
incremental_marking_->marking_worklist()->PushBailout(object);
|
||||
} else {
|
||||
incremental_marking_->marking_worklist()->Push(object);
|
||||
}
|
||||
DCHECK(incremental_marking_->marking_state()->IsGrey(object) ||
|
||||
incremental_marking_->marking_state()->IsBlack(object));
|
||||
|
||||
int end_offset =
|
||||
Min(object_size, start_offset + kProgressBarScanningChunk);
|
||||
int already_scanned_offset = start_offset;
|
||||
|
Loading…
Reference in New Issue
Block a user