Use conservative heap growing factor for background tab.
authorulan <ulan@chromium.org>
Tue, 4 Aug 2015 12:04:51 +0000 (05:04 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 4 Aug 2015 12:05:22 +0000 (12:05 +0000)
BUG=chromium:515873
LOG=NO

Review URL: https://codereview.chromium.org/1257833005

Cr-Commit-Position: refs/heads/master@{#29994}

src/heap/heap.cc
src/heap/heap.h

index 0432ee7..6a4acda 100644 (file)
@@ -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);
   }
 
index 54dfc7a..7508279 100644 (file)
@@ -1806,6 +1806,10 @@ class Heap {
   // last GC.
   bool old_gen_exhausted_;
 
+  // Indicates that memory usage is more important than latency.
+  // TODO(ulan): Merge it with memory reducer once chromium:490559 is fixed.
+  bool optimize_for_memory_usage_;
+
   // Indicates that inline bump-pointer allocation has been globally disabled
   // for all spaces. This is used to disable allocations in generated code.
   bool inline_allocation_disabled_;