5#ifndef V8_HEAP_MEMORY_REDUCER_H_
6#define V8_HEAP_MEMORY_REDUCER_H_
89 enum Id { kUninit, kDone, kWait, kRun };
96 return {kDone, 0, 0, last_gc_time_ms, committed_memory};
100 double last_gc_time_ms) {
101 return {kWait, started_gcs, next_gc_time_ms, last_gc_time_ms, 0};
105 return {kRun, started_gcs, 0, 0, 0};
111 DCHECK(
id() == kWait ||
id() == kRun);
117 return next_gc_start_ms_;
121 DCHECK(
id() == kWait ||
id() == kDone ||
id() == kUninit);
122 return last_gc_time_ms_;
126 DCHECK(
id() == kUninit ||
id() == kDone);
127 return committed_memory_at_last_run_;
131 State(
Id action,
int started_gcs,
double next_gc_start_ms,
132 double last_gc_time_ms,
size_t committed_memory_at_last_run)
134 started_gcs_(started_gcs),
135 next_gc_start_ms_(next_gc_start_ms),
136 last_gc_time_ms_(last_gc_time_ms),
137 committed_memory_at_last_run_(committed_memory_at_last_run) {}
146 enum EventType { kTimer, kMarkCompact, kPossibleGarbage };
162 void NotifyMarkCompact(
size_t committed_memory_before);
163 void NotifyPossibleGarbage();
168 void ScheduleTimer(
double delay_ms);
184 static int MaxNumberOfGCs();
186 static bool IsFrozen(
const Heap*
heap);
197 void RunInternal()
override;
201 void NotifyTimer(
const Event& event);
203 static bool WatchdogGC(
const State& state,
const Event& event);
210 int start_delay_ms_ =
false;
213 friend class heap::HeapTester;
double next_gc_start_ms() const
static State CreateWait(int started_gcs, double next_gc_time_ms, double last_gc_time_ms)
static State CreateUninitialized()
State(Id action, int started_gcs, double next_gc_start_ms, double last_gc_time_ms, size_t committed_memory_at_last_run)
static State CreateDone(double last_gc_time_ms, size_t committed_memory)
size_t committed_memory_at_last_run_
double last_gc_time_ms() const
static State CreateRun(int started_gcs)
size_t committed_memory_at_last_run() const
TimerTask & operator=(const TimerTask &)=delete
TimerTask(const TimerTask &)=delete
MemoryReducer * memory_reducer_
std::shared_ptr< v8::TaskRunner > taskrunner_
static const double kCommittedMemoryFactor
static const size_t kCommittedMemoryDelta
double js_calls_sample_time_ms_
bool ShouldGrowHeapSlowly()
static const int kLongDelayMs
static const int kShortDelayMs
MemoryReducer(const MemoryReducer &)=delete
static const int kWatchdogDelayMs
unsigned int js_calls_counter_
MemoryReducer & operator=(const MemoryReducer &)=delete
enum v8::internal::@1270::DeoptimizableCodeIterator::@67 state_
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
#define V8_EXPORT_PRIVATE
bool should_start_incremental_gc
bool next_gc_likely_to_collect_more
bool can_start_incremental_gc