Chromium Code Reviews| Index: src/heap/gc-idle-time-handler.cc |
| diff --git a/src/heap/gc-idle-time-handler.cc b/src/heap/gc-idle-time-handler.cc |
| index 8def9005e647b344685050b96c19bac4fa1e3e98..f36b4cd608228a76dd888a05ac04818e8ef56d90 100644 |
| --- a/src/heap/gc-idle-time-handler.cc |
| +++ b/src/heap/gc-idle-time-handler.cc |
| @@ -68,9 +68,24 @@ size_t GCIdleTimeHandler::EstimateMarkCompactTime( |
| } |
| +size_t GCIdleTimeHandler::EstimateScavengeTime( |
| + size_t new_space_size, size_t scavenge_speed_in_bytes_per_ms) { |
| + if (scavenge_speed_in_bytes_per_ms == 0) { |
| + scavenge_speed_in_bytes_per_ms = kInitialConservativeScavengeSpeed; |
| + } |
| + return new_space_size / scavenge_speed_in_bytes_per_ms; |
| +} |
| + |
| + |
| GCIdleTimeAction GCIdleTimeHandler::Compute(size_t idle_time_in_ms, |
| HeapState heap_state) { |
| - if (IsIdleRoundFinished()) { |
| + if (heap_state.available_new_space_memory < kNewSpaceAlmostFullTreshold && |
|
ulan
2014/09/10 14:25:00
We should also check new space size now against ne
|
| + idle_time_in_ms >= |
| + EstimateScavengeTime(heap_state.new_space_capacity, |
| + heap_state.scavenge_speed_in_bytes_per_ms)) { |
| + return GCIdleTimeAction::Scavenge(); |
| + } |
| + if (IsMarkCompactIdleRoundFinished()) { |
| if (EnoughGarbageSinceLastIdleRound() || heap_state.contexts_disposed > 0) { |
| StartIdleRound(); |
| } else { |