5#ifndef V8_V8_PROFILER_H_
6#define V8_V8_PROFILER_H_
8#include <unordered_set>
18struct HeapStatsUpdate;
31template class V8_EXPORT std::vector<v8::CpuProfileDeoptFrame>;
39 std::vector<CpuProfileDeoptFrame>
stack;
45template class V8_EXPORT std::vector<v8::CpuProfileDeoptInfo>;
74 external_callback_entry(nullptr),
76 has_external_callback(false),
93 bool use_simulator_reg_state =
true);
116 void** frames,
size_t frames_limit,
118 bool use_simulator_reg_state =
true);
125 static const unsigned kMaxFramesCountLog2 = 8;
126 static const unsigned kMaxFramesCount = (1 << kMaxFramesCountLog2) - 1;
127 void* stack[kMaxFramesCount];
205 "Use GetScriptId, GetLineNumber, and GetColumnNumber instead.",
220 static const int kNoLineNumberInfo = Message::kNoLineNumberInfo;
221 static const int kNoColumnNumberInfo = Message::kNoColumnInfo;
347 kContextVariable = 0,
617 static const int kNoLineNumberInfo = Message::kNoLineNumberInfo;
618 static const int kNoColumnNumberInfo = Message::kNoColumnInfo;
629 kSamplingNoFlags = 0,
630 kSamplingForceGC = 1 << 0,
633 typedef std::unordered_set<const v8::PersistentBase<v8::Value>*>
635 typedef std::vector<std::pair<v8::RetainedObjectInfo*, RetainerChildren>>
637 typedef std::vector<std::pair<const v8::PersistentBase<v8::Value>*,
739 int64_t* timestamp_us = NULL);
776 int stack_depth = 16,
801 WrapperInfoCallback callback);
810 static const uint16_t kPersistentHandleNoClassId = 0;
899 : index(index), count(count), size(size) { }
Definition: v8-profiler.h:523
virtual ControlOption ReportProgressValue(int done, int total)=0
ControlOption
Definition: v8-profiler.h:525
virtual ~ActivityControl()
Definition: v8-profiler.h:529
Definition: v8-profiler.h:542
virtual ~AllocationProfile()
Definition: v8-profiler.h:615
virtual Node * GetRootNode()=0
Definition: v8-profiler.h:136
const CpuProfileNode * GetChild(int index) const
bool GetLineTicks(LineTick *entries, unsigned int length) const
unsigned GetHitCount() const
unsigned int GetHitLineCount() const
int GetLineNumber() const
unsigned GetNodeId() const
const char * GetScriptResourceNameStr() const
unsigned GetCallUid() const
const char * GetFunctionNameStr() const
const std::vector< CpuProfileDeoptInfo > & GetDeoptInfos() const
int GetColumnNumber() const
Local< String > GetFunctionName() const
Local< String > GetScriptResourceName() const
const char * GetBailoutReason() const
int GetChildrenCount() const
Definition: v8-profiler.h:229
const CpuProfileNode * GetTopDownRoot() const
int GetSamplesCount() const
Local< String > GetTitle() const
int64_t GetEndTime() const
const CpuProfileNode * GetSample(int index) const
int64_t GetSampleTimestamp(int index) const
int64_t GetStartTime() const
Definition: v8-profiler.h:280
void SetIdle(bool is_idle)
void StartProfiling(Local< String > title, bool record_samples=false)
CpuProfile * StopProfiling(Local< String > title)
void SetSamplingInterval(int us)
static CpuProfiler * New(Isolate *isolate)
Definition: v8-profiler.h:344
Type
Definition: v8-profiler.h:346
const HeapGraphNode * GetToNode() const
const HeapGraphNode * GetFromNode() const
Local< Value > GetName() const
Definition: v8-profiler.h:380
Local< String > GetName() const
SnapshotObjectId GetId() const
Type
Definition: v8-profiler.h:382
const HeapGraphEdge * GetChild(int index) const
size_t GetShallowSize() const
int GetChildrenCount() const
Definition: v8-profiler.h:695
virtual ~ObjectNameResolver()
Definition: v8-profiler.h:704
virtual const char * GetName(Local< Object > object)=0
Definition: v8-profiler.h:626
void StartTrackingHeapObjects(bool track_allocations=false)
Local< Value > FindObjectById(SnapshotObjectId id)
AllocationProfile * GetAllocationProfile()
std::unordered_set< const v8::PersistentBase< v8::Value > * > RetainerChildren
Definition: v8-profiler.h:634
void DeleteAllHeapSnapshots()
bool StartSamplingHeapProfiler(uint64_t sample_interval=512 *1024, int stack_depth=16, SamplingFlags flags=kSamplingNoFlags)
SnapshotObjectId GetHeapStats(OutputStream *stream, int64_t *timestamp_us=NULL)
void SetWrapperClassInfoProvider(uint16_t class_id, WrapperInfoCallback callback)
void SetGetRetainerInfosCallback(GetRetainerInfosCallback callback)
const HeapSnapshot * TakeHeapSnapshot(ActivityControl *control=NULL, ObjectNameResolver *global_object_name_resolver=NULL)
SamplingFlags
Definition: v8-profiler.h:628
std::vector< std::pair< const v8::PersistentBase< v8::Value > *, const v8::PersistentBase< v8::Value > * > > RetainerEdges
Definition: v8-profiler.h:639
std::vector< std::pair< v8::RetainedObjectInfo *, RetainerChildren > > RetainerGroups
Definition: v8-profiler.h:636
SnapshotObjectId GetObjectId(Local< Value > value)
void StopSamplingHeapProfiler()
const HeapSnapshot * GetHeapSnapshot(int index)
void StopTrackingHeapObjects()
Definition: v8-profiler.h:460
const HeapGraphNode * GetNodeById(SnapshotObjectId id) const
int GetNodesCount() const
SerializationFormat
Definition: v8-profiler.h:462
const HeapGraphNode * GetRoot() const
SnapshotObjectId GetMaxSnapshotJSObjectId() const
const HeapGraphNode * GetNode(int index) const
void Serialize(OutputStream *stream, SerializationFormat format=kJSON) const
Definition: v8-profiler.h:429
virtual WriteResult WriteHeapStatsChunk(HeapStatsUpdate *data, int count)
Definition: v8-profiler.h:451
WriteResult
Definition: v8-profiler.h:431
virtual ~OutputStream()
Definition: v8-profiler.h:435
virtual WriteResult WriteAsciiChunk(char *data, int size)=0
virtual void EndOfStream()=0
virtual int GetChunkSize()
Definition: v8-profiler.h:439
Definition: v8-profiler.h:843
virtual const char * GetGroupLabel()
Definition: v8-profiler.h:872
virtual intptr_t GetSizeInBytes()
Definition: v8-profiler.h:881
RetainedObjectInfo()
Definition: v8-profiler.h:884
virtual bool IsEquivalent(RetainedObjectInfo *other)=0
virtual ~RetainedObjectInfo()
Definition: v8-profiler.h:885
virtual intptr_t GetHash()=0
virtual const char * GetLabel()=0
virtual intptr_t GetElementCount()
Definition: v8-profiler.h:878
Definition: v8-profiler.h:55
TracingCpuProfiler()=default
virtual ~TracingCpuProfiler()=default
static std::unique_ptr< TracingCpuProfiler > Create(Isolate *)
Definition: libplatform.h:12
uint32_t SnapshotObjectId
Definition: v8-profiler.h:20
@ kWeak
Definition: v8-util.h:29
StateTag
Definition: v8.h:1729
@ OTHER
Definition: v8.h:1735
Definition: v8-profiler.h:544
unsigned int count
Definition: v8-profiler.h:553
size_t size
Definition: v8-profiler.h:548
Definition: v8-profiler.h:559
std::vector< Node * > children
Definition: v8-profiler.h:600
int script_id
Definition: v8-profiler.h:576
int start_position
Definition: v8-profiler.h:581
std::vector< Allocation > allocations
Definition: v8-profiler.h:605
int column_number
Definition: v8-profiler.h:593
int line_number
Definition: v8-profiler.h:587
Local< String > script_name
Definition: v8-profiler.h:570
Local< String > name
Definition: v8-profiler.h:564
Definition: v8-profiler.h:23
size_t position
Definition: v8-profiler.h:25
int script_id
Definition: v8-profiler.h:24
Definition: v8-profiler.h:36
const char * deopt_reason
Definition: v8-profiler.h:38
std::vector< CpuProfileDeoptFrame > stack
Definition: v8-profiler.h:39
Definition: v8-profiler.h:138
unsigned int hit_count
Definition: v8-profiler.h:143
int line
Definition: v8-profiler.h:140
Definition: v8-profiler.h:641
RetainerEdges edges
Definition: v8-profiler.h:643
RetainerGroups groups
Definition: v8-profiler.h:642
Definition: v8-profiler.h:897
uint32_t size
Definition: v8-profiler.h:902
uint32_t index
Definition: v8-profiler.h:900
uint32_t count
Definition: v8-profiler.h:901
HeapStatsUpdate(uint32_t index, uint32_t count, uint32_t size)
Definition: v8-profiler.h:898
Definition: v8-profiler.h:65
unsigned frames_count
Definition: v8-profiler.h:128
TickSample()
Definition: v8-profiler.h:71
void * external_callback_entry
Definition: v8-profiler.h:123
static bool GetStackSample(Isolate *isolate, v8::RegisterState *state, RecordCEntryFrame record_c_entry_frame, void **frames, size_t frames_limit, v8::SampleInfo *sample_info, bool use_simulator_reg_state=true)
void * pc
Definition: v8-profiler.h:120
void Init(Isolate *isolate, const v8::RegisterState &state, RecordCEntryFrame record_c_entry_frame, bool update_stats, bool use_simulator_reg_state=true)
StateTag state
Definition: v8-profiler.h:119
void * tos
Definition: v8-profiler.h:122
bool has_external_callback
Definition: v8-profiler.h:129
RecordCEntryFrame
Definition: v8-profiler.h:69
@ kIncludeCEntryFrame
Definition: v8-profiler.h:69
bool update_stats
Definition: v8-profiler.h:130
#define V8_EXPORT
Definition: v8.h:56
#define V8_DEPRECATE_SOON(message, declarator)
Definition: v8config.h:340