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