Index: src/x64/frames-x64.h |
diff --git a/src/x64/frames-x64.h b/src/x64/frames-x64.h |
index 209aa2d3070e48da7890e9457e64fe4718cfd782..6e3632cfe9a4dbc3041eade8f08d5f2e6a279d16 100644 |
--- a/src/x64/frames-x64.h |
+++ b/src/x64/frames-x64.h |
@@ -25,3 +25,97 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+#ifndef V8_X64_FRAMES_X64_H_ |
+#define V8_X64_FRAMES_X64_H_ |
+ |
+namespace v8 { namespace internal { |
+ |
+// TODO(port): This is a stub, mostly just a copy of the ia32 bit version. |
+// This will all need to change to be correct for x64. |
+ |
+static const int kNumRegs = 8; |
+static const RegList kJSCallerSaved = 0; |
+static const int kNumJSCallerSaved = 5; |
+typedef Object* JSCallerSavedBuffer[kNumJSCallerSaved]; |
+ |
+class StackHandlerConstants : public AllStatic { |
+ public: |
+ static const int kNextOffset = -1 * kPointerSize; |
+ static const int kPPOffset = -1 * kPointerSize; |
+ static const int kFPOffset = -1 * kPointerSize; |
+ |
+ static const int kCodeOffset = -1 * kPointerSize; |
+ |
+ static const int kStateOffset = -1 * kPointerSize; |
+ static const int kPCOffset = -1 * kPointerSize; |
+ |
+ static const int kAddressDisplacement = -1 * kPointerSize; |
+ static const int kSize = kPCOffset + kPointerSize; |
+}; |
+ |
+ |
+class EntryFrameConstants : public AllStatic { |
+ public: |
+ static const int kCallerFPOffset = -1 * kPointerSize; |
+ |
+ static const int kFunctionArgOffset = -1 * kPointerSize; |
+ static const int kReceiverArgOffset = -1 * kPointerSize; |
+ static const int kArgcOffset = -1 * kPointerSize; |
+ static const int kArgvOffset = -1 * kPointerSize; |
+}; |
+ |
+ |
+class ExitFrameConstants : public AllStatic { |
+ public: |
+ static const int kDebugMarkOffset = -1 * kPointerSize; |
+ static const int kSPOffset = -1 * kPointerSize; |
+ |
+ static const int kPPDisplacement = -1 * kPointerSize; |
+ |
+ static const int kCallerFPOffset = -1 * kPointerSize; |
+ static const int kCallerPCOffset = -1 * kPointerSize; |
+}; |
+ |
+ |
+class StandardFrameConstants : public AllStatic { |
+ public: |
+ static const int kExpressionsOffset = -1 * kPointerSize; |
+ static const int kMarkerOffset = -1 * kPointerSize; |
+ static const int kContextOffset = -1 * kPointerSize; |
+ static const int kCallerFPOffset = -1 * kPointerSize; |
+ static const int kCallerPCOffset = -1 * kPointerSize; |
+ static const int kCallerSPOffset = -1 * kPointerSize; |
+}; |
+ |
+ |
+class JavaScriptFrameConstants : public AllStatic { |
+ public: |
+ static const int kLocal0Offset = StandardFrameConstants::kExpressionsOffset; |
+ static const int kSavedRegistersOffset = -1 * kPointerSize; |
+ static const int kFunctionOffset = StandardFrameConstants::kMarkerOffset; |
+ |
+ static const int kParam0Offset = -1 * kPointerSize; |
+ static const int kReceiverOffset = -1 * kPointerSize; |
+}; |
+ |
+ |
+class ArgumentsAdaptorFrameConstants : public AllStatic { |
+ public: |
+ static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset; |
+}; |
+ |
+ |
+class InternalFrameConstants : public AllStatic { |
+ public: |
+ static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset; |
+}; |
+ |
+ |
+inline Object* JavaScriptFrame::function_slot_object() const { |
+ const int offset = JavaScriptFrameConstants::kFunctionOffset; |
+ return Memory::Object_at(fp() + offset); |
+} |
+ |
+} } // namespace v8::internal |
+ |
+#endif // V8_X64_FRAMES_X64_H_ |