Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index a1e2e1671e42c0e7072e05fa194688400a41e296..4d5ea7a8826c7bbf4fd4b383168423518bed137e 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -907,6 +907,13 @@ bool Heap::CollectGarbage(GarbageCollector collector, const char* gc_reason, |
if (collector == MARK_COMPACTOR && FLAG_track_detached_contexts) { |
isolate()->CheckDetachedContextsAfterGC(); |
} |
+ |
+ if (collector == MARK_COMPACTOR) { |
+ gc_idle_time_handler_.NotifyMarkCompact(); |
+ } else { |
+ gc_idle_time_handler_.NotifyScavenge(); |
+ } |
+ |
tracer()->Stop(collector); |
} |
@@ -1634,8 +1641,6 @@ void Heap::Scavenge() { |
LOG(isolate_, ResourceEvent("scavenge", "end")); |
gc_state_ = NOT_IN_GC; |
- |
- gc_idle_time_handler_.NotifyScavenge(); |
} |
@@ -4570,6 +4575,7 @@ bool Heap::TryFinalizeIdleIncrementalMarking( |
static_cast<size_t>(idle_time_in_ms), size_of_objects, |
final_incremental_mark_compact_speed_in_bytes_per_ms))) { |
CollectAllGarbage(kNoGCFlags, "idle notification: finalize incremental"); |
+ gc_idle_time_handler_.NotifyIdleMarkCompact(); |
ReduceNewSpaceSize(is_long_idle_notification); |
return true; |
} |
@@ -4650,6 +4656,7 @@ bool Heap::IdleNotification(double deadline_in_seconds) { |
break; |
case DO_INCREMENTAL_MARKING: { |
if (incremental_marking()->IsStopped()) { |
+ // TODO(ulan): take reduce_memory into account. |
incremental_marking()->Start(); |
} |
double remaining_idle_time_in_ms = 0.0; |