| 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.
|
|
|