Index: src/frames.h |
=================================================================== |
--- src/frames.h (revision 3132) |
+++ src/frames.h (working copy) |
@@ -93,6 +93,7 @@ |
V(ENTRY, EntryFrame) \ |
V(ENTRY_CONSTRUCT, EntryConstructFrame) \ |
V(EXIT, ExitFrame) \ |
+ V(EXIT_DEBUG, ExitDebugFrame) \ |
V(JAVA_SCRIPT, JavaScriptFrame) \ |
V(INTERNAL, InternalFrame) \ |
V(CONSTRUCT, ConstructFrame) \ |
@@ -118,6 +119,7 @@ |
bool is_entry() const { return type() == ENTRY; } |
bool is_entry_construct() const { return type() == ENTRY_CONSTRUCT; } |
bool is_exit() const { return type() == EXIT; } |
+ bool is_exit_debug() const { return type() == EXIT_DEBUG; } |
bool is_java_script() const { return type() == JAVA_SCRIPT; } |
bool is_arguments_adaptor() const { return type() == ARGUMENTS_ADAPTOR; } |
bool is_internal() const { return type() == INTERNAL; } |
@@ -258,7 +260,6 @@ |
// Exit frames are used to exit JavaScript execution and go to C. |
class ExitFrame: public StackFrame { |
public: |
- enum Mode { MODE_NORMAL, MODE_DEBUG }; |
virtual Type type() const { return EXIT; } |
virtual Code* code() const; |
@@ -288,6 +289,26 @@ |
}; |
+class ExitDebugFrame: public ExitFrame { |
+ public: |
+ virtual Type type() const { return EXIT_DEBUG; } |
+ |
+ virtual Code* code() const; |
+ |
+ static ExitDebugFrame* cast(StackFrame* frame) { |
+ ASSERT(frame->is_exit_debug()); |
+ return static_cast<ExitDebugFrame*>(frame); |
+ } |
+ |
+ protected: |
+ explicit ExitDebugFrame(StackFrameIterator* iterator) |
+ : ExitFrame(iterator) { } |
+ |
+ private: |
+ friend class StackFrameIterator; |
+}; |
+ |
+ |
class StandardFrame: public StackFrame { |
public: |
// Testers. |