Index: src/frames.h |
diff --git a/src/frames.h b/src/frames.h |
index af2b55afb5748d4d112755a76094320d08921cdc..aef86bf61d2583905adda038c8daefe04d5abe9c 100644 |
--- a/src/frames.h |
+++ b/src/frames.h |
@@ -225,10 +225,12 @@ class StackFrame BASE_EMBEDDED { |
}; |
struct State { |
- State() : sp(NULL), fp(NULL), pc_address(NULL) { } |
+ State() : sp(NULL), fp(NULL), pc_address(NULL), |
+ constant_pool_address(NULL) { } |
Address sp; |
Address fp; |
Address* pc_address; |
+ Address* constant_pool_address; |
}; |
// Copy constructor; it breaks the connection to host iterator |
@@ -270,6 +272,11 @@ class StackFrame BASE_EMBEDDED { |
Address pc() const { return *pc_address(); } |
void set_pc(Address pc) { *pc_address() = pc; } |
+ Address constant_pool() const { return *constant_pool_address(); } |
+ void set_constant_pool(ConstantPoolArray* constant_pool) { |
+ *constant_pool_address() = reinterpret_cast<Address>(constant_pool); |
+ } |
+ |
virtual void SetCallerFp(Address caller_fp) = 0; |
// Manually changes value of fp in this object. |
@@ -277,6 +284,10 @@ class StackFrame BASE_EMBEDDED { |
Address* pc_address() const { return state_.pc_address; } |
+ Address* constant_pool_address() const { |
+ return state_.constant_pool_address; |
+ } |
+ |
// Get the id of this stack frame. |
Id id() const { return static_cast<Id>(OffsetFrom(caller_sp())); } |
@@ -496,6 +507,10 @@ class StandardFrame: public StackFrame { |
// by the provided frame pointer. |
static inline Address ComputePCAddress(Address fp); |
+ // Computes the address of the constant pool field in the standard |
+ // frame given by the provided frame pointer. |
+ static inline Address ComputeConstantPoolAddress(Address fp); |
+ |
// Iterate over expression stack including stack handlers, locals, |
// and parts of the fixed part including context and code fields. |
void IterateExpressions(ObjectVisitor* v) const; |