Index: src/x64/frames-x64.h |
=================================================================== |
--- src/x64/frames-x64.h (revision 15486) |
+++ src/x64/frames-x64.h (working copy) |
@@ -55,11 +55,20 @@ |
static const int kXMMRegisterSize = 16; |
static const int kXMMRegistersBlockSize = |
kXMMRegisterSize * kCalleeSaveXMMRegisters; |
+#ifndef V8_TARGET_ARCH_X32 |
static const int kCallerFPOffset = |
-10 * kPointerSize - kXMMRegistersBlockSize; |
#else |
+ static const int kCallerFPOffset = |
+ -3 * kPointerSize + -7 * kHWRegSize - kXMMRegistersBlockSize; |
+#endif |
+#else |
+#ifndef V8_TARGET_ARCH_X32 |
static const int kCallerFPOffset = -8 * kPointerSize; |
+#else |
+ static const int kCallerFPOffset = -3 * kPointerSize + -5 * kHWRegSize; |
#endif |
+#endif |
static const int kArgvOffset = 6 * kPointerSize; |
}; |
@@ -70,11 +79,19 @@ |
static const int kSPOffset = -1 * kPointerSize; |
static const int kCallerFPOffset = +0 * kPointerSize; |
+#ifndef V8_TARGET_ARCH_X32 |
static const int kCallerPCOffset = +1 * kPointerSize; |
// FP-relative displacement of the caller's SP. It points just |
// below the saved PC. |
static const int kCallerSPDisplacement = +2 * kPointerSize; |
+#else |
+ static const int kCallerPCOffset = +1 * kHWRegSize; |
+ |
+ // FP-relative displacement of the caller's SP. It points just |
+ // below the saved PC. |
+ static const int kCallerSPDisplacement = +2 * kHWRegSize; |
+#endif |
}; |
@@ -82,7 +99,11 @@ |
public: |
// FP-relative. |
static const int kLocal0Offset = StandardFrameConstants::kExpressionsOffset; |
+#ifndef V8_TARGET_ARCH_X32 |
static const int kLastParameterOffset = +2 * kPointerSize; |
+#else |
+ static const int kLastParameterOffset = +2 * kHWRegSize; |
+#endif |
static const int kFunctionOffset = StandardFrameConstants::kMarkerOffset; |
// Caller SP-relative. |