Index: src/x64/macro-assembler-x64.cc |
=================================================================== |
--- src/x64/macro-assembler-x64.cc (revision 2789) |
+++ src/x64/macro-assembler-x64.cc (working copy) |
@@ -1010,12 +1010,6 @@ |
} |
#endif |
- // Reserve space for the Arguments object. The Windows 64-bit ABI |
- // requires us to pass this structure as a pointer to its location on |
- // the stack. We also need backing space for the pointer, even though |
- // it is passed in a register. |
- subq(rsp, Immediate(3 * kPointerSize)); |
- |
// Get the required frame alignment for the OS. |
static const int kFrameAlignment = OS::ActivationFrameAlignment(); |
if (kFrameAlignment > 0) { |
@@ -1024,6 +1018,17 @@ |
and_(rsp, kScratchRegister); |
} |
+#ifdef _WIN64 |
+ // Reserve space for the Arguments object. The Windows 64-bit ABI |
+ // requires us to pass this structure as a pointer to its location on |
+ // the stack. The structure contains 2 pointers. |
+ // The structure on the stack must be 16-byte aligned. |
+ // We also need backing space for 4 parameters, even though |
+ // we only pass one parameter, and it is in a register. |
+ subq(rsp, Immediate(6 * kPointerSize)); |
+ ASSERT(kFrameAlignment == 2 * kPointerSize); // Change the padding if needed. |
+#endif |
+ |
// Patch the saved entry sp. |
movq(Operand(rbp, ExitFrameConstants::kSPOffset), rsp); |
} |