5#ifndef V8_PROFILER_HEAP_PROFILER_H_
6#define V8_PROFILER_HEAP_PROFILER_H_
21class AllocationTracker;
25class SamplingHeapProfiler;
88 int64_t* timestamp_us);
100 bool is_native_object);
136 std::unique_ptr<HeapProfilerNativeMoveListener> listener) {
149 std::unique_ptr<HeapObjectsMap>
ids_;
157 std::vector<std::pair<v8::HeapProfiler::BuildEmbedderGraphCallback, void*>>
159 std::pair<v8::HeapProfiler::GetDetachednessCallback, void*>
EmbedderGraph::Node::Detachedness(*)( v8::Isolate *isolate, const v8::Local< v8::Value > &v8_value, uint16_t class_id, void *data) GetDetachednessCallback
void(*) BuildEmbedderGraphCallback(v8::Isolate *isolate, v8::EmbedderGraph *graph, void *data)
virtual ~HeapProfilerNativeMoveListener()=default
HeapProfilerNativeMoveListener & operator=(const HeapProfilerNativeMoveListener &other)=delete
virtual void StartListening()=0
HeapProfilerNativeMoveListener(const HeapProfilerNativeMoveListener &other)=delete
HeapProfilerNativeMoveListener(HeapProfiler *profiler)
void ObjectMoveEvent(Address from, Address to, int size)
virtual void StopListening()=0
void set_native_move_listener(std::unique_ptr< HeapProfilerNativeMoveListener > listener)
std::vector< std::pair< v8::HeapProfiler::BuildEmbedderGraphCallback, void * > > build_embedder_graph_callbacks_
base::Mutex profiler_mutex_
const char * CopyNameForHeapSnapshot(const char *name)
std::vector< std::unique_ptr< HeapSnapshot > > snapshots_
std::unique_ptr< StringsStorage > names_
DirectHandle< HeapObject > FindHeapObjectById(SnapshotObjectId id)
HeapObjectsMap * heap_object_map() const
std::vector< v8::Local< v8::Value > > GetDetachedJSWrapperObjects()
HeapProfiler(const HeapProfiler &)=delete
v8::EmbedderGraph::Node::Detachedness GetDetachedness(const v8::Local< v8::Value > v8_value, uint16_t class_id)
SnapshotObjectId GetSnapshotObjectId(DirectHandle< Object > obj)
SnapshotObjectId PushHeapObjectsStats(OutputStream *stream, int64_t *timestamp_us)
int GetSnapshotsCount() const
std::unique_ptr< SamplingHeapProfiler > sampling_heap_profiler_
void StopSamplingHeapProfiler()
void TakeSnapshotToFile(const v8::HeapProfiler::HeapSnapshotOptions options, std::string filename)
void StopHeapObjectsTracking()
void SetGetDetachednessCallback(v8::HeapProfiler::GetDetachednessCallback callback, void *data)
void AllocationEvent(Address addr, int size) override
void MaybeClearStringsStorage()
bool IsTakingSnapshot() const
HeapSnapshot * GetSnapshot(int index)
void RemoveBuildEmbedderGraphCallback(v8::HeapProfiler::BuildEmbedderGraphCallback callback, void *data)
bool HasGetDetachednessCallback() const
void StartHeapObjectsTracking(bool track_allocations)
void WriteSnapshotToDiskAfterGC(HeapSnapshotMode snapshot_mode=HeapSnapshotMode::kRegular)
bool is_sampling_allocations()
std::unique_ptr< HeapObjectsMap > ids_
void ObjectMoveEvent(Address from, Address to, int size, bool is_native_object)
std::unique_ptr< HeapProfilerNativeMoveListener > native_move_listener_
void AddBuildEmbedderGraphCallback(v8::HeapProfiler::BuildEmbedderGraphCallback callback, void *data)
void DeleteAllSnapshots()
bool HasBuildEmbedderGraphCallback()
AllocationProfile * GetAllocationProfile()
void UpdateObjectSizeEvent(Address addr, int size) override
bool StartSamplingHeapProfiler(uint64_t sample_interval, int stack_depth, v8::HeapProfiler::SamplingFlags)
void ClearHeapObjectMap()
StringsStorage * names() const
void RemoveSnapshot(HeapSnapshot *snapshot)
std::unique_ptr< AllocationTracker > allocation_tracker_
AllocationTracker * allocation_tracker() const
HeapProfiler & operator=(const HeapProfiler &)=delete
Isolate * isolate() const
bool is_tracking_object_moves_
void QueryObjects(DirectHandle< Context > context, QueryObjectPredicate *predicate, std::vector< v8::Global< v8::Object > > *objects)
bool is_tracking_object_moves() const
HeapSnapshot * TakeSnapshot(const v8::HeapProfiler::HeapSnapshotOptions options)
std::pair< v8::HeapProfiler::GetDetachednessCallback, void * > get_detachedness_callback_
void BuildEmbedderGraph(Isolate *isolate, v8::EmbedderGraph *graph)
uint32_t SnapshotObjectId