Index: src/heap.cc |
diff --git a/src/heap.cc b/src/heap.cc |
index c394a2c60b7a4177e43691c211826112118fe8b0..b3b2df9148fde8a0719bd91d3f214f1bd71d464e 100644 |
--- a/src/heap.cc |
+++ b/src/heap.cc |
@@ -615,7 +615,7 @@ bool Heap::CollectGarbage(AllocationSpace space, |
} |
if (collector == MARK_COMPACTOR && |
- !mark_compact_collector()->abort_incremental_marking_ && |
+ !mark_compact_collector()->abort_incremental_marking() && |
!incremental_marking()->IsStopped() && |
!incremental_marking()->should_hurry() && |
FLAG_incremental_marking_steps) { |
@@ -657,10 +657,13 @@ bool Heap::CollectGarbage(AllocationSpace space, |
GarbageCollectionEpilogue(); |
} |
- if (incremental_marking()->IsStopped()) { |
- if (incremental_marking()->WorthActivating() && NextGCIsLikelyToBeFull()) { |
- incremental_marking()->Start(); |
- } |
+ // Start incremental marking for the next cycle. The heap snapshot |
+ // generator needs incremental marking to stay off after it aborted. |
+ if (!mark_compact_collector()->abort_incremental_marking() && |
+ incremental_marking()->IsStopped() && |
+ incremental_marking()->WorthActivating() && |
+ NextGCIsLikelyToBeFull()) { |
+ incremental_marking()->Start(); |
} |
return next_gc_likely_to_collect_more; |