| Index: src/incremental-marking-inl.h
|
| diff --git a/src/incremental-marking-inl.h b/src/incremental-marking-inl.h
|
| index 8c649781f5917619058e6b3a394bc5de9f15c917..1c30383d521e9e98e7865cbcea35aca2238fcaf3 100644
|
| --- a/src/incremental-marking-inl.h
|
| +++ b/src/incremental-marking-inl.h
|
| @@ -44,8 +44,12 @@ bool IncrementalMarking::BaseRecordWrite(HeapObject* obj,
|
| if (Marking::IsBlack(obj_bit)) {
|
| MemoryChunk* chunk = MemoryChunk::FromAddress(obj->address());
|
| if (chunk->IsFlagSet(MemoryChunk::HAS_PROGRESS_BAR)) {
|
| - WhiteToGreyAndPush(value_heap_obj, value_bit);
|
| - RestartIfNotMarking();
|
| + if (chunk->IsLeftOfProgressBar(slot)) {
|
| + WhiteToGreyAndPush(value_heap_obj, value_bit);
|
| + RestartIfNotMarking();
|
| + } else {
|
| + return false;
|
| + }
|
| } else {
|
| BlackToGreyAndUnshift(obj, obj_bit);
|
| RestartIfNotMarking();
|
|
|