Index: src/heap/memory-reducer.h |
diff --git a/src/heap/memory-reducer.h b/src/heap/memory-reducer.h |
deleted file mode 100644 |
index a9ba2980ad8e164a788bfb06e735b3a283dc74af..0000000000000000000000000000000000000000 |
--- a/src/heap/memory-reducer.h |
+++ /dev/null |
@@ -1,135 +0,0 @@ |
-// Copyright 2015 the V8 project authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef V8_HEAP_memory_reducer_H |
-#define V8_HEAP_memory_reducer_H |
- |
-#include "include/v8-platform.h" |
-#include "src/base/macros.h" |
- |
-namespace v8 { |
-namespace internal { |
- |
-class Heap; |
- |
- |
-// The goal of the MemoryReducer class is to detect transition of the mutator |
-// from high allocation phase to low allocation phase and to collect potential |
-// garbage created in the high allocation phase. |
-// |
-// The class implements an automaton with the following states and transitions. |
-// |
-// States: |
-// - DONE |
-// - WAIT <started_gcs> <next_gc_start_ms> |
-// - RUN <started_gcs> |
-// The <started_gcs> is an integer in range from 0..kMaxNumberOfGCs that stores |
-// the number of GCs initiated by the MemoryReducer since it left the DONE |
-// state. |
-// The <next_gc_start_ms> is a double that stores the earliest time the next GC |
-// can be initiated by the MemoryReducer. |
-// The DONE state means that the MemoryReducer is not active. |
-// The WAIT state means that the MemoryReducer is waiting for mutator allocation |
-// rate to drop. The check for the allocation rate happens in the timer task |
-// callback. |
-// The RUN state means that the MemoryReducer started incremental marking and is |
-// waiting for it to finish. Incremental marking steps are performed as usual |
-// in the idle notification and in the mutator. |
-// |
-// Transitions: |
-// DONE -> WAIT 0 (now_ms + long_delay_ms) happens: |
-// - on context disposal, |
-// - at the end of mark-compact GC initiated by the mutator. |
-// This signals that there is potential garbage to be collected. |
-// |
-// WAIT n x -> WAIT n (now_ms + long_delay_ms) happens: |
-// - on mark-compact GC initiated by the mutator, |
-// - in the timer callback if the mutator allocation rate is high or |
-// incremental GC is in progress. |
-// |
-// WAIT n x -> RUN (n+1) happens: |
-// - in the timer callback if the mutator allocation rate is low |
-// and now_ms >= x and there is no incremental GC in progress. |
-// The MemoryReducer starts incremental marking on this transition. |
-// |
-// RUN n -> DONE happens: |
-// - at end of the incremental GC initiated by the MemoryReducer if |
-// (n > 1 and there is no more garbage to be collected) or |
-// n == kMaxNumberOfGCs. |
-// RUN n -> WAIT n (now_ms + short_delay_ms) happens: |
-// - at end of the incremental GC initiated by the MemoryReducer if |
-// (n == 1 or there is more garbage to be collected) and |
-// n < kMaxNumberOfGCs. |
-// |
-// now_ms is the current time, long_delay_ms and short_delay_ms are constants. |
-class MemoryReducer { |
- public: |
- enum Action { kDone, kWait, kRun }; |
- |
- struct State { |
- State(Action action, int started_gcs, double next_gc_start_ms) |
- : action(action), |
- started_gcs(started_gcs), |
- next_gc_start_ms(next_gc_start_ms) {} |
- Action action; |
- int started_gcs; |
- double next_gc_start_ms; |
- }; |
- |
- enum EventType { |
- kTimer, |
- kMarkCompact, |
- kContextDisposed, |
- }; |
- |
- struct Event { |
- EventType type; |
- double time_ms; |
- bool low_allocation_rate; |
- bool next_gc_likely_to_collect_more; |
- bool can_start_incremental_gc; |
- }; |
- |
- explicit MemoryReducer(Heap* heap) : heap_(heap), state_(kDone, 0, 0.0) {} |
- // Callbacks. |
- void NotifyTimer(const Event& event); |
- void NotifyMarkCompact(const Event& event); |
- void NotifyScavenge(const Event& event); |
- void NotifyContextDisposed(const Event& event); |
- // The step function that computes the next state from the current state and |
- // the incoming event. |
- static State Step(const State& state, const Event& event); |
- // Posts a timer task that will call NotifyTimer after the given delay. |
- void ScheduleTimer(double delay_ms); |
- |
- static const int kLongDelayMs; |
- static const int kShortDelayMs; |
- static const int kMaxNumberOfGCs; |
- |
- Heap* heap() { return heap_; } |
- |
- private: |
- class TimerTask : public v8::Task { |
- public: |
- explicit TimerTask(MemoryReducer* memory_reducer) |
- : memory_reducer_(memory_reducer) {} |
- virtual ~TimerTask() {} |
- |
- private: |
- // v8::Task overrides. |
- void Run() override; |
- MemoryReducer* memory_reducer_; |
- DISALLOW_COPY_AND_ASSIGN(TimerTask); |
- }; |
- |
- Heap* heap_; |
- State state_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MemoryReducer); |
-}; |
- |
-} // namespace internal |
-} // namespace v8 |
- |
-#endif // V8_HEAP_memory_reducer_H |