Index: src/incremental-marking-inl.h |
diff --git a/src/incremental-marking-inl.h b/src/incremental-marking-inl.h |
index 1e28e4a06b1cf1cf7ead93c810b17cf2134ebf4f..427a8f00ba177209c141bcf2af5e946c4da624c5 100644 |
--- a/src/incremental-marking-inl.h |
+++ b/src/incremental-marking-inl.h |
@@ -44,8 +44,13 @@ 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 (reinterpret_cast<Address>(slot) - reinterpret_cast<Address>(obj) |
Michael Starzinger
2012/11/21 17:11:38
We don't even need to record relocation slots when
Hannes Payer (out of office)
2012/11/21 18:03:57
Done.
|
+ < chunk->progress_bar()) { |
+ ASSERT(reinterpret_cast<Address>(slot) |
+ > reinterpret_cast<Address>(obj)); |
+ WhiteToGreyAndPush(value_heap_obj, value_bit); |
+ RestartIfNotMarking(); |
+ } |
} else { |
BlackToGreyAndUnshift(obj, obj_bit); |
RestartIfNotMarking(); |