Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index 0432ee71fa0c329e6c1bf6e690883ab26f211a75..6a4acda903ed8cb6e7a95288b041f79197114b81 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -109,6 +109,7 @@ Heap::Heap() |
#endif // DEBUG |
old_generation_allocation_limit_(initial_old_generation_size_), |
old_gen_exhausted_(false), |
+ optimize_for_memory_usage_(false), |
inline_allocation_disabled_(false), |
store_buffer_rebuilder_(store_buffer()), |
hidden_string_(NULL), |
@@ -4906,6 +4907,9 @@ void Heap::CheckAndNotifyBackgroundIdleNotification(double idle_time_in_ms, |
event.can_start_incremental_gc = incremental_marking()->IsStopped() && |
incremental_marking()->CanBeActivated(); |
memory_reducer_.NotifyBackgroundIdleNotification(event); |
+ optimize_for_memory_usage_ = true; |
+ } else { |
+ optimize_for_memory_usage_ = false; |
} |
} |
@@ -5601,7 +5605,7 @@ void Heap::SetOldGenerationAllocationLimit(intptr_t old_gen_size, |
} |
if (freed_global_handles >= kFreedGlobalHandlesThreshold || |
- memory_reducer_.ShouldGrowHeapSlowly()) { |
+ memory_reducer_.ShouldGrowHeapSlowly() || optimize_for_memory_usage_) { |
factor = Min(factor, kConservativeHeapGrowingFactor); |
} |