| Index: include/v8.h
|
| diff --git a/include/v8.h b/include/v8.h
|
| index ec1941e6fd86eec42707e4d41011112961fe2109..1fe6bee30d1e90fa006dd8dd6b92695efcb8eb4f 100644
|
| --- a/include/v8.h
|
| +++ b/include/v8.h
|
| @@ -1415,6 +1415,27 @@ class V8_EXPORT StackFrame {
|
| };
|
|
|
|
|
| +// A StateTag represents a possible state of the VM.
|
| +enum StateTag { JS, GC, COMPILER, OTHER, EXTERNAL, IDLE };
|
| +
|
| +
|
| +// A RegisterState represents the current state of registers used
|
| +// by the sampling profiler API.
|
| +struct RegisterState {
|
| + RegisterState() : pc(NULL), sp(NULL), fp(NULL) {}
|
| + void* pc; // Instruction pointer.
|
| + void* sp; // Stack pointer.
|
| + void* fp; // Frame pointer.
|
| +};
|
| +
|
| +
|
| +// The output structure filled up by GetStackSample API function.
|
| +struct SampleInfo {
|
| + size_t frames_count;
|
| + StateTag vm_state;
|
| +};
|
| +
|
| +
|
| /**
|
| * A JSON Parser.
|
| */
|
| @@ -4548,6 +4569,21 @@ class V8_EXPORT Isolate {
|
| void GetHeapStatistics(HeapStatistics* heap_statistics);
|
|
|
| /**
|
| + * Get a call stack sample from the isolate.
|
| + * \param state Execution state.
|
| + * \param frames Caller allocated buffer to store stack frames.
|
| + * \param frames_limit Maximum number of frames to capture. The buffer must
|
| + * be large enough to hold the number of frames.
|
| + * \param sample_info The sample info is filled up by the function
|
| + * provides number of actual captured stack frames and
|
| + * the current VM state.
|
| + * \note GetStackSample should only be called when the JS thread is paused or
|
| + * interrupted. Otherwise the behavior is undefined.
|
| + */
|
| + void GetStackSample(const RegisterState& state, void** frames,
|
| + size_t frames_limit, SampleInfo* sample_info);
|
| +
|
| + /**
|
| * Adjusts the amount of registered external memory. Used to give V8 an
|
| * indication of the amount of externally allocated memory that is kept alive
|
| * by JavaScript objects. V8 uses this to decide when to perform global
|
|
|