Index: src/frames.h |
diff --git a/src/frames.h b/src/frames.h |
index fa55d15d5f6a0ed5bbf91755d018883b2e31e25a..18a3d82398c06e09593f14f67f57bd9a4c4fe1e1 100644 |
--- a/src/frames.h |
+++ b/src/frames.h |
@@ -192,10 +192,12 @@ class InterpreterFrameConstants : public AllStatic { |
static const int kRegisterFilePointerFromFp = |
-StandardFrameConstants::kFixedFrameSizeFromFp - 4 * kPointerSize; |
+ static const int kExpressionsOffset = kRegisterFilePointerFromFp; |
+ |
// Expression index for {StandardFrame::GetExpressionAddress}. |
- static const int kBytecodeArrayExpressionIndex = 1; |
- static const int kBytecodeOffsetExpressionIndex = 2; |
- static const int kRegisterFileExpressionIndex = 3; |
+ static const int kBytecodeArrayExpressionIndex = -2; |
+ static const int kBytecodeOffsetExpressionIndex = -1; |
+ static const int kRegisterFileExpressionIndex = 0; |
// Register file pointer relative. |
static const int kLastParamFromRegisterPointer = |
@@ -498,7 +500,6 @@ class StandardFrame: public StackFrame { |
inline Object* GetExpression(int index) const; |
inline void SetExpression(int index, Object* value); |
int ComputeExpressionsCount() const; |
- static Object* GetExpression(Address fp, int index); |
void SetCallerFp(Address caller_fp) override; |
@@ -529,8 +530,7 @@ class StandardFrame: public StackFrame { |
void IterateExpressions(ObjectVisitor* v) const; |
// Returns the address of the n'th expression stack element. |
- Address GetExpressionAddress(int n) const; |
- static Address GetExpressionAddress(Address fp, int n); |
+ virtual Address GetExpressionAddress(int n) const; |
// Determines if the standard frame for the given frame pointer is |
// an arguments adaptor frame. |
@@ -756,6 +756,8 @@ class InterpretedFrame : public JavaScriptFrame { |
protected: |
inline explicit InterpretedFrame(StackFrameIteratorBase* iterator); |
+ Address GetExpressionAddress(int n) const override; |
+ |
private: |
friend class StackFrameIteratorBase; |
}; |
@@ -780,6 +782,8 @@ class ArgumentsAdaptorFrame: public JavaScriptFrame { |
void Print(StringStream* accumulator, PrintMode mode, |
int index) const override; |
+ static int GetLength(Address fp); |
+ |
protected: |
inline explicit ArgumentsAdaptorFrame(StackFrameIteratorBase* iterator); |