| 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);
|
| }
|
|
|