Index: src/heap/gc-idle-time-handler.h |
diff --git a/src/heap/gc-idle-time-handler.h b/src/heap/gc-idle-time-handler.h |
index c50d6d33fb857e56477a94b61922f4f5971e521b..2d0114b82ef89cec98726f96f39fbe31a01c0913 100644 |
--- a/src/heap/gc-idle-time-handler.h |
+++ b/src/heap/gc-idle-time-handler.h |
@@ -27,7 +27,6 @@ class GCIdleTimeAction { |
result.type = DONE; |
result.parameter = 0; |
result.additional_work = false; |
- result.reduce_memory = false; |
return result; |
} |
@@ -36,17 +35,14 @@ class GCIdleTimeAction { |
result.type = DO_NOTHING; |
result.parameter = 0; |
result.additional_work = false; |
- result.reduce_memory = false; |
return result; |
} |
- static GCIdleTimeAction IncrementalMarking(intptr_t step_size, |
- bool reduce_memory) { |
+ static GCIdleTimeAction IncrementalMarking(intptr_t step_size) { |
GCIdleTimeAction result; |
result.type = DO_INCREMENTAL_MARKING; |
result.parameter = step_size; |
result.additional_work = false; |
- result.reduce_memory = reduce_memory; |
return result; |
} |
@@ -55,18 +51,14 @@ class GCIdleTimeAction { |
result.type = DO_SCAVENGE; |
result.parameter = 0; |
result.additional_work = false; |
- // TODO(ulan): add reduce_memory argument and shrink new space size if |
- // reduce_memory = true. |
- result.reduce_memory = false; |
return result; |
} |
- static GCIdleTimeAction FullGC(bool reduce_memory) { |
+ static GCIdleTimeAction FullGC() { |
GCIdleTimeAction result; |
result.type = DO_FULL_GC; |
result.parameter = 0; |
result.additional_work = false; |
- result.reduce_memory = reduce_memory; |
return result; |
} |
@@ -75,7 +67,6 @@ class GCIdleTimeAction { |
result.type = DO_FINALIZE_SWEEPING; |
result.parameter = 0; |
result.additional_work = false; |
- result.reduce_memory = false; |
return result; |
} |
@@ -84,7 +75,6 @@ class GCIdleTimeAction { |
GCIdleTimeActionType type; |
intptr_t parameter; |
bool additional_work; |
- bool reduce_memory; |
}; |
@@ -128,6 +118,8 @@ class GCIdleTimeHandler { |
// The maximum idle time when frames are rendered is 16.66ms. |
static const size_t kMaxFrameRenderingIdleTime = 17; |
+ static const int kMinBackgroundIdleTime = 900; |
+ |
// We conservatively assume that in the next kTimeUntilNextIdleEvent ms |
// no idle notification happens. |
static const size_t kTimeUntilNextIdleEvent = 100; |
@@ -147,28 +139,10 @@ class GCIdleTimeHandler { |
static const size_t kMinTimeForOverApproximatingWeakClosureInMs; |
- // The number of idle MarkCompact GCs to perform before transitioning to |
- // the kDone mode. |
- static const int kMaxIdleMarkCompacts = 3; |
- |
- // The number of mutator MarkCompact GCs before transitioning to the |
- // kReduceLatency mode. |
- static const int kMarkCompactsBeforeMutatorIsActive = 1; |
- |
- // Mutator is considered idle if |
- // 1) there are N idle notification with time >= kMinBackgroundIdleTime, |
- // 2) or there are M idle notifications with time >= kMinLongIdleTime |
- // without any mutator GC in between. |
- // Where N = kBackgroundIdleNotificationsBeforeMutatorIsIdle, |
- // M = kLongIdleNotificationsBeforeMutatorIsIdle |
- static const int kMinLongIdleTime = kMaxFrameRenderingIdleTime + 1; |
- static const int kMinBackgroundIdleTime = 900; |
- static const int kBackgroundIdleNotificationsBeforeMutatorIsIdle = 2; |
- static const int kLongIdleNotificationsBeforeMutatorIsIdle = 50; |
// Number of times we will return a Nothing action in the current mode |
// despite having idle time available before we returning a Done action to |
// ensure we don't keep scheduling idle tasks and making no progress. |
- static const int kMaxNoProgressIdleTimesPerMode = 10; |
+ static const int kMaxNoProgressIdleTimes = 10; |
class HeapState { |
public: |
@@ -178,7 +152,6 @@ class GCIdleTimeHandler { |
double contexts_disposal_rate; |
size_t size_of_objects; |
bool incremental_marking_stopped; |
- bool can_start_incremental_marking; |
bool sweeping_in_progress; |
bool sweeping_completed; |
bool has_low_allocation_rate; |
@@ -191,26 +164,11 @@ class GCIdleTimeHandler { |
size_t new_space_allocation_throughput_in_bytes_per_ms; |
}; |
- GCIdleTimeHandler() |
- : idle_mark_compacts_(0), |
- mark_compacts_(0), |
- scavenges_(0), |
- long_idle_notifications_(0), |
- background_idle_notifications_(0), |
- idle_times_which_made_no_progress_per_mode_(0), |
- next_gc_likely_to_collect_more_(false), |
- mode_(kReduceLatency) {} |
+ GCIdleTimeHandler() : idle_times_which_made_no_progress_(0) {} |
GCIdleTimeAction Compute(double idle_time_in_ms, HeapState heap_state); |
- void NotifyIdleMarkCompact() { ++idle_mark_compacts_; } |
- |
- void NotifyMarkCompact(bool next_gc_likely_to_collect_more) { |
- next_gc_likely_to_collect_more_ = next_gc_likely_to_collect_more; |
- ++mark_compacts_; |
- } |
- |
- void NotifyScavenge() { ++scavenges_; } |
+ void ResetNoProgressCounter() { idle_times_which_made_no_progress_ = 0; } |
static size_t EstimateMarkingStepSize(size_t idle_time_in_ms, |
size_t marking_speed_in_bytes_per_ms); |
@@ -239,36 +197,11 @@ class GCIdleTimeHandler { |
size_t scavenger_speed_in_bytes_per_ms, |
size_t new_space_allocation_throughput_in_bytes_per_ms); |
- enum Mode { kReduceLatency, kReduceMemory, kDone }; |
- |
- Mode mode() { return mode_; } |
- |
private: |
- bool IsMutatorActive(int contexts_disposed, int gcs); |
- bool IsMutatorIdle(int long_idle_notifications, |
- int background_idle_notifications, int gcs); |
- void UpdateCounters(double idle_time_in_ms); |
- void ResetCounters(); |
- Mode NextMode(const HeapState& heap_state); |
- GCIdleTimeAction Action(double idle_time_in_ms, const HeapState& heap_state, |
- bool reduce_memory); |
GCIdleTimeAction NothingOrDone(); |
- int idle_mark_compacts_; |
- int mark_compacts_; |
- int scavenges_; |
- // The number of long idle notifications with no GC happening |
- // between the notifications. |
- int long_idle_notifications_; |
- // The number of background idle notifications with no GC happening |
- // between the notifications. |
- int background_idle_notifications_; |
- // Idle notifications with no progress in the current mode. |
- int idle_times_which_made_no_progress_per_mode_; |
- |
- bool next_gc_likely_to_collect_more_; |
- |
- Mode mode_; |
+ // Idle notifications with no progress. |
+ int idle_times_which_made_no_progress_; |
DISALLOW_COPY_AND_ASSIGN(GCIdleTimeHandler); |
}; |