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(); |