Index: src/frames.h |
diff --git a/src/frames.h b/src/frames.h |
index 26bf434ac91cb22cd9afef83aba12d5aacd12f2c..a60e535947f033a9e5083e44da4e1aea831d0dab 100644 |
--- a/src/frames.h |
+++ b/src/frames.h |
@@ -143,6 +143,22 @@ class StackHandler BASE_EMBEDDED { |
V(ARGUMENTS_ADAPTOR, ArgumentsAdaptorFrame) |
+class StandardFrameConstants : public AllStatic { |
+ public: |
+ // Fixed part of the frame consists of return address, caller fp, |
+ // context and function. |
+ // StandardFrame::IterateExpressions assumes that kContextOffset is the last |
+ // object pointer. |
+ static const int kFixedFrameSize = 4 * kPointerSize; |
+ static const int kExpressionsOffset = -3 * kPointerSize; |
+ static const int kMarkerOffset = -2 * kPointerSize; |
+ static const int kContextOffset = -1 * kPointerSize; |
+ static const int kCallerFPOffset = 0 * kPointerSize; |
+ static const int kCallerPCOffset = +1 * kPointerSize; |
+ static const int kCallerSPOffset = +2 * kPointerSize; |
+}; |
+ |
+ |
// Abstract base class for all stack frames. |
class StackFrame BASE_EMBEDDED { |
public: |
@@ -672,16 +688,30 @@ class InternalFrame: public StandardFrame { |
}; |
-class StubFailureTrampolineFrame: public InternalFrame { |
+class StubFailureTrampolineFrame: public StandardFrame { |
public: |
+ // sizeof(Arguments) - sizeof(Arguments*) is 3 * kPointerSize), but the |
+ // presubmit script complains about using sizeof() on a type. |
+ static const int kFirstRegisterParameterFrameOffset = |
+ StandardFrameConstants::kMarkerOffset - 3 * kPointerSize; |
+ |
+ static const int kCallerStackParameterCountFrameOffset = |
+ StandardFrameConstants::kMarkerOffset - 2 * kPointerSize; |
+ |
virtual Type type() const { return STUB_FAILURE_TRAMPOLINE; } |
+ // Get the code associated with this frame. |
+ // This method could be called during marking phase of GC. |
+ virtual Code* unchecked_code() const; |
+ |
virtual void Iterate(ObjectVisitor* v) const; |
protected: |
inline explicit StubFailureTrampolineFrame( |
StackFrameIterator* iterator); |
+ virtual Address GetCallerStackPointer() const; |
+ |
private: |
friend class StackFrameIterator; |
}; |