Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index f3f539d78153c120a75ac43478f9766f5d6c0ff4..c757d603358a6fc355df8b8ecf4022e4334ff1f2 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -4296,6 +4296,8 @@ bool Heap::IdleNotification(int idle_time_in_ms) { |
heap_state.incremental_marking_stopped = incremental_marking()->IsStopped(); |
// TODO(ulan): Start incremental marking only for large heaps. |
heap_state.can_start_incremental_marking = true; |
+ heap_state.sweeping_in_progress = |
+ mark_compact_collector()->sweeping_in_progress(); |
GCIdleTimeAction action = |
gc_idle_time_handler_.Compute(idle_time_in_ms, heap_state, tracer()); |
@@ -4321,18 +4323,13 @@ bool Heap::IdleNotification(int idle_time_in_ms) { |
case DO_SCAVENGE: |
CollectGarbage(NEW_SPACE, "idle notification: scavenge"); |
break; |
+ case DO_FINALIZE_SWEEPING: |
+ mark_compact_collector()->EnsureSweepingCompleted(); |
+ break; |
case DO_NOTHING: |
result = true; |
break; |
} |
- // If the IdleNotifcation is called with a large hint we will wait for |
- // the sweepter threads here. |
- // TODO(ulan): move this in GCIdleTimeHandler. |
- const int kMinHintForFullGC = 100; |
- if (idle_time_in_ms >= kMinHintForFullGC && |
- mark_compact_collector()->sweeping_in_progress()) { |
- mark_compact_collector()->EnsureSweepingCompleted(); |
- } |
return result; |
} |