| Index: src/incremental-marking-inl.h
|
| diff --git a/src/incremental-marking-inl.h b/src/incremental-marking-inl.h
|
| index 1e28e4a06b1cf1cf7ead93c810b17cf2134ebf4f..cacdc87bc1be2cfb67b55241f142f8addffe1bdf 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->IsAheadOfProgressBar(slot)) {
|
| + WhiteToGreyAndPush(value_heap_obj, value_bit);
|
| + RestartIfNotMarking();
|
| + } else {
|
| + return false;
|
| + }
|
| } else {
|
| BlackToGreyAndUnshift(obj, obj_bit);
|
| RestartIfNotMarking();
|
|
|