Commit 35e3489e authored by hpayer's avatar hpayer Committed by Commit bot

Set lower allocation limit in idle notification only if no GC happend recently.

BUG=475674
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28506}
parent d3c1a7fb
...@@ -725,6 +725,7 @@ void Heap::GarbageCollectionEpilogue() { ...@@ -725,6 +725,7 @@ void Heap::GarbageCollectionEpilogue() {
// Remember the last top pointer so that we can later find out // Remember the last top pointer so that we can later find out
// whether we allocated in new space since the last GC. // whether we allocated in new space since the last GC.
new_space_top_after_last_gc_ = new_space()->top(); new_space_top_after_last_gc_ = new_space()->top();
last_gc_time_ = MonotonicallyIncreasingTimeInMs();
} }
...@@ -4612,6 +4613,8 @@ bool Heap::IdleNotification(double deadline_in_seconds) { ...@@ -4612,6 +4613,8 @@ bool Heap::IdleNotification(double deadline_in_seconds) {
static_cast<size_t>(idle_time_in_ms) > static_cast<size_t>(idle_time_in_ms) >
GCIdleTimeHandler::kMaxFrameRenderingIdleTime; GCIdleTimeHandler::kMaxFrameRenderingIdleTime;
static const double kLastGCTimeTreshold = 1000;
GCIdleTimeHandler::HeapState heap_state; GCIdleTimeHandler::HeapState heap_state;
heap_state.contexts_disposed = contexts_disposed_; heap_state.contexts_disposed = contexts_disposed_;
heap_state.contexts_disposal_rate = heap_state.contexts_disposal_rate =
...@@ -4620,7 +4623,8 @@ bool Heap::IdleNotification(double deadline_in_seconds) { ...@@ -4620,7 +4623,8 @@ bool Heap::IdleNotification(double deadline_in_seconds) {
heap_state.incremental_marking_stopped = incremental_marking()->IsStopped(); heap_state.incremental_marking_stopped = incremental_marking()->IsStopped();
// TODO(ulan): Start incremental marking only for large heaps. // TODO(ulan): Start incremental marking only for large heaps.
intptr_t limit = old_generation_allocation_limit_; intptr_t limit = old_generation_allocation_limit_;
if (is_long_idle_notification) { if (is_long_idle_notification &&
(start_ms - last_gc_time_ > kLastGCTimeTreshold)) {
limit = idle_old_generation_allocation_limit_; limit = idle_old_generation_allocation_limit_;
} }
......
...@@ -2142,15 +2142,18 @@ class Heap { ...@@ -2142,15 +2142,18 @@ class Heap {
// Minimal interval between two subsequent collections. // Minimal interval between two subsequent collections.
double min_in_mutator_; double min_in_mutator_;
// Cumulative GC time spent in marking // Cumulative GC time spent in marking.
double marking_time_; double marking_time_;
// Cumulative GC time spent in sweeping // Cumulative GC time spent in sweeping.
double sweeping_time_; double sweeping_time_;
// Last time an idle notification happened // Last time an idle notification happened.
double last_idle_notification_time_; double last_idle_notification_time_;
// Last time a garbage collection happened.
double last_gc_time_;
MarkCompactCollector mark_compact_collector_; MarkCompactCollector mark_compact_collector_;
StoreBuffer store_buffer_; StoreBuffer store_buffer_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment