summaryrefslogtreecommitdiff
path: root/deps/v8/src/frames.h
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2010-04-14 10:34:17 -0700
committerRyan Dahl <ry@tinyclouds.org>2010-04-14 10:34:27 -0700
commit41ef1717e096a9e1761efa0df97c395f59c51f16 (patch)
tree7e854284ef8ce5189a63074857a408b6eea5a9cb /deps/v8/src/frames.h
parent760bba55186eba039ca00e532f7813d2aea450a2 (diff)
downloadnode-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.h20
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_