Index: include/v8.h |
=================================================================== |
--- include/v8.h (revision 4596) |
+++ include/v8.h (working copy) |
@@ -126,6 +126,8 @@ |
class FunctionTemplate; |
class ObjectTemplate; |
class Data; |
+class StackTrace; |
+class StackFrame; |
namespace internal { |
@@ -691,9 +693,109 @@ |
// TODO(1245381): Print to a string instead of on a FILE. |
static void PrintCurrentStackTrace(FILE* out); |
+ |
+ static const int kNoLineNumberInfo = 0; |
+ static const int kNoColumnInfo = 0; |
}; |
+/** |
+ * Representation of a JavaScript stack trace. The information collected is a |
+ * snapshot of the execution stack and the information remains valid after |
+ * execution continues. |
+ */ |
+class V8EXPORT StackTrace { |
+ public: |
+ /** |
+ * Flags that determine what information is placed captured for each |
+ * StackFrame when grabbing the current stack trace. |
+ */ |
+ enum StackTraceOptions { |
+ kLineNumber = 1, |
+ kColumnOffset = 1 << 1 | kLineNumber, |
+ kScriptName = 1 << 2, |
+ kFunctionName = 1 << 3, |
+ kIsEval = 1 << 4, |
+ kIsConstructor = 1 << 5, |
+ kOverview = kLineNumber | kColumnOffset | kScriptName | kFunctionName, |
+ kDetailed = kOverview | kIsEval | kIsConstructor |
+ }; |
+ |
+ /** |
+ * Returns a StackFrame at a particular index. |
+ */ |
+ Local<StackFrame> GetFrame(uint32_t index) const; |
+ |
+ /** |
+ * Returns the number of StackFrames. |
+ */ |
+ int GetFrameCount() const; |
+ |
+ /** |
+ * Returns StackTrace as a v8::Array that contains StackFrame objects. |
+ */ |
+ Local<Array> AsArray(); |
+ |
+ /** |
+ * Grab a snapshot of the the current JavaScript execution stack. |
+ * |
+ * \param frame_limit The maximum number of stack frames we want to capture. |
+ * \param options Enumerates the set of things we will capture for each |
+ * StackFrame. |
+ */ |
+ static Local<StackTrace> CurrentStackTrace( |
+ int frame_limit, |
+ StackTraceOptions options = kOverview); |
+}; |
+ |
+ |
+/** |
+ * A single JavaScript stack frame. |
+ */ |
+class V8EXPORT StackFrame { |
+ public: |
+ /** |
+ * Returns the number, 1-based, of the line for the associate function call. |
+ * This method will return Message::kNoLineNumberInfo if it is unable to |
+ * retrieve the line number, or if kLineNumber was not passed as an option |
+ * when capturing the StackTrace. |
+ */ |
+ int GetLineNumber() const; |
+ |
+ /** |
+ * Returns the 1-based column offset on the line for the associated function |
+ * call. |
+ * This method will return Message::kNoColumnInfo if it is unable to retrieve |
+ * the column number, or if kColumnOffset was not passed as an option when |
+ * capturing the StackTrace. |
+ */ |
+ int GetColumn() const; |
+ |
+ /** |
+ * Returns the name of the resource that contains the script for the |
+ * function for this StackFrame. |
+ */ |
+ Local<String> GetScriptName() const; |
+ |
+ /** |
+ * Returns the name of the function associated with this stack frame. |
+ */ |
+ Local<String> GetFunctionName() const; |
+ |
+ /** |
+ * Returns whether or not the associated function is compiled via a call to |
+ * eval(). |
+ */ |
+ bool IsEval() const; |
+ |
+ /** |
+ * Returns whther or not the associated function is called as a |
+ * constructor via "new". |
+ */ |
+ bool IsConstructor() const; |
+}; |
+ |
+ |
// --- V a l u e --- |