[heap] Fix incremental marking of fixed array with progress bar when
concurrent marking is on. BUG=chromium:694255 Change-Id: I3cd74af9a3f7fb02d982d9366a6a2ebd119a92b2 Reviewed-on: https://chromium-review.googlesource.com/554627 Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#46324}
This commit is contained in:
parent
347e6215c5
commit
8b97f512ac
@ -238,6 +238,9 @@ class IncrementalMarkingMarkingVisitor
|
||||
int start_offset =
|
||||
Max(FixedArray::BodyDescriptor::kStartOffset, chunk->progress_bar());
|
||||
if (start_offset < object_size) {
|
||||
#ifdef CONCURRENT_MARKING
|
||||
heap->incremental_marking()->marking_worklist()->PushBailout(object);
|
||||
#else
|
||||
if (ObjectMarking::IsGrey<IncrementalMarking::kAtomicity>(
|
||||
object, heap->incremental_marking()->marking_state(object))) {
|
||||
heap->incremental_marking()->marking_worklist()->Push(object);
|
||||
@ -246,6 +249,7 @@ class IncrementalMarkingMarkingVisitor
|
||||
object, heap->incremental_marking()->marking_state(object)));
|
||||
heap->mark_compact_collector()->PushBlack(object);
|
||||
}
|
||||
#endif
|
||||
int end_offset =
|
||||
Min(object_size, start_offset + kProgressBarScanningChunk);
|
||||
int already_scanned_offset = start_offset;
|
||||
|
Loading…
Reference in New Issue
Block a user