5#ifndef V8_HEAP_MEMORY_MEASUREMENT_H_
6#define V8_HEAP_MEMORY_MEASUREMENT_H_
9#include <unordered_map>
23class NativeContextStats;
29 bool EnqueueRequest(std::unique_ptr<v8::MeasureMemoryDelegate> delegate,
42 std::unique_ptr<v8::MeasureMemoryDelegate>
delegate;
86 size_t Get(Address context)
const {
87 const auto it = size_by_context_.find(context);
88 if (it == size_by_context_.end())
return 0;
94 bool Empty()
const {
return size_by_context_.empty(); }
98 void IncrementExternalSize(Address context,
Tagged<Map> map,
bool eager_gc_task_pending_
std::vector< Address > StartProcessing()
bool EnqueueRequest(std::unique_ptr< v8::MeasureMemoryDelegate > delegate, v8::MeasureMemoryExecution execution, const std::vector< Handle< NativeContext > > contexts)
bool reporting_task_pending_
bool IsGCTaskPending(v8::MeasureMemoryExecution execution)
base::RandomNumberGenerator random_number_generator_
MemoryMeasurement(Isolate *isolate)
void FinishProcessing(const NativeContextStats &stats)
int NextGCTaskDelayInSeconds()
std::list< Request > received_
bool delayed_gc_task_pending_
static std::unique_ptr< v8::MeasureMemoryDelegate > DefaultDelegate(v8::Isolate *isolate, v8::Local< v8::Context > context, v8::Local< v8::Promise::Resolver > promise, v8::MeasureMemoryMode mode)
std::shared_ptr< v8::TaskRunner > task_runner_
std::list< Request > done_
void SetGCTaskPending(v8::MeasureMemoryExecution execution)
void ScheduleReportingTask()
void ScheduleGCTask(v8::MeasureMemoryExecution execution)
std::list< Request > processing_
static const int kGCTaskDelayInSeconds
void SetGCTaskDone(v8::MeasureMemoryExecution execution)
std::unordered_map< Address, size_t > size_by_context_
size_t Get(Address context) const
!IsContextMap !IsContextMap native_context
#define V8_EXPORT_PRIVATE
std::unique_ptr< v8::MeasureMemoryDelegate > delegate
std::vector< size_t > sizes
Handle< WeakFixedArray > contexts