Index: src/incremental-marking-inl.h |
diff --git a/src/incremental-marking-inl.h b/src/incremental-marking-inl.h |
index 1e28e4a06b1cf1cf7ead93c810b17cf2134ebf4f..e11db4002b400b1b5f7f0d15d7b70685178b3434 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(); |