Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index c5f5f70f8983d635667e24d9adc1858125c33c5b..6ef3607fc56180c07a424a63dfe63a0b3b8ee661 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -1233,9 +1233,17 @@ bool Heap::PerformGarbageCollection( |
isolate_->counters()->objs_since_last_young()->Set(0); |
- // Callbacks that fire after this point might trigger nested GCs and |
- // restart incremental marking, the assertion can't be moved down. |
- DCHECK(collector == SCAVENGER || incremental_marking()->IsStopped()); |
+ if (collector != SCAVENGER) { |
+ // Callbacks that fire after this point might trigger nested GCs and |
+ // restart incremental marking, the assertion can't be moved down. |
+ DCHECK(incremental_marking()->IsStopped()); |
+ |
+ // We finished a marking cycle. We can uncommit the marking deque until |
+ // we start marking again. |
+ mark_compact_collector_.marking_deque()->Uninitialize(); |
+ mark_compact_collector_.EnsureMarkingDequeIsCommitted( |
+ MarkCompactCollector::kMinMarkingDequeSize); |
+ } |
gc_post_processing_depth_++; |
{ |
@@ -1258,9 +1266,6 @@ bool Heap::PerformGarbageCollection( |
SetOldGenerationAllocationLimit( |
PromotedSpaceSizeOfObjects(), |
tracer()->CurrentAllocationThroughputInBytesPerMillisecond()); |
- // We finished a marking cycle. We can uncommit the marking deque until |
- // we start marking again. |
- mark_compact_collector_.UncommitMarkingDeque(); |
} |
{ |