diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-04-14 10:34:17 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-04-14 10:34:27 -0700 |
commit | 41ef1717e096a9e1761efa0df97c395f59c51f16 (patch) | |
tree | 7e854284ef8ce5189a63074857a408b6eea5a9cb /deps/v8/src/frames.h | |
parent | 760bba55186eba039ca00e532f7813d2aea450a2 (diff) | |
download | node-new-41ef1717e096a9e1761efa0df97c395f59c51f16.tar.gz |
Upgrade V8 to 2.2.3.1
Diffstat (limited to 'deps/v8/src/frames.h')
-rw-r--r-- | deps/v8/src/frames.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/deps/v8/src/frames.h b/deps/v8/src/frames.h index 8cbbc62679..98aaead28b 100644 --- a/deps/v8/src/frames.h +++ b/deps/v8/src/frames.h @@ -114,6 +114,12 @@ class StackFrame BASE_EMBEDDED { // by the debugger. enum Id { NO_ID = 0 }; + // Copy constructor; it breaks the connection to host iterator. + StackFrame(const StackFrame& original) { + this->state_ = original.state_; + this->iterator_ = NULL; + } + // Type testers. bool is_entry() const { return type() == ENTRY; } bool is_entry_construct() const { return type() == ENTRY_CONSTRUCT; } @@ -132,6 +138,8 @@ class StackFrame BASE_EMBEDDED { Address pc() const { return *pc_address(); } void set_pc(Address pc) { *pc_address() = pc; } + virtual void SetCallerFp(Address caller_fp) = 0; + Address* pc_address() const { return state_.pc_address; } // Get the id of this stack frame. @@ -200,7 +208,8 @@ class StackFrame BASE_EMBEDDED { friend class StackHandlerIterator; friend class SafeStackFrameIterator; - DISALLOW_IMPLICIT_CONSTRUCTORS(StackFrame); + private: + void operator=(const StackFrame& original); }; @@ -218,6 +227,7 @@ class EntryFrame: public StackFrame { ASSERT(frame->is_entry()); return static_cast<EntryFrame*>(frame); } + virtual void SetCallerFp(Address caller_fp); protected: explicit EntryFrame(StackFrameIterator* iterator) : StackFrame(iterator) { } @@ -268,6 +278,8 @@ class ExitFrame: public StackFrame { // Garbage collection support. virtual void Iterate(ObjectVisitor* v) const; + virtual void SetCallerFp(Address caller_fp); + static ExitFrame* cast(StackFrame* frame) { ASSERT(frame->is_exit()); return static_cast<ExitFrame*>(frame); @@ -303,6 +315,8 @@ class StandardFrame: public StackFrame { inline void SetExpression(int index, Object* value); int ComputeExpressionsCount() const; + virtual void SetCallerFp(Address caller_fp); + static StandardFrame* cast(StackFrame* frame) { ASSERT(frame->is_standard()); return static_cast<StandardFrame*>(frame); @@ -658,6 +672,10 @@ class StackFrameLocator BASE_EMBEDDED { }; +// Reads all frames on the current stack and copies them into the current +// zone memory. +Vector<StackFrame*> CreateStackMap(); + } } // namespace v8::internal #endif // V8_FRAMES_H_ |