[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:
Ulan Degenbaev 2017-06-29 11:45:10 +02:00 committed by Commit Bot
parent 347e6215c5
commit 8b97f512ac

View File

@ -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;