Index: src/x64/full-codegen-x64.cc |
=================================================================== |
--- src/x64/full-codegen-x64.cc (revision 6692) |
+++ src/x64/full-codegen-x64.cc (working copy) |
@@ -297,19 +297,22 @@ |
// patch with the code required by the debugger. |
__ movq(rsp, rbp); |
__ pop(rbp); |
- __ ret((scope()->num_parameters() + 1) * kPointerSize); |
+ |
+ int arguments_bytes = (scope()->num_parameters() + 1) * kPointerSize; |
+ __ Ret(arguments_bytes, rcx); |
+ |
#ifdef ENABLE_DEBUGGER_SUPPORT |
// Add padding that will be overwritten by a debugger breakpoint. We |
- // have just generated "movq rsp, rbp; pop rbp; ret k" with length 7 |
+ // have just generated at least 7 bytes: "movq rsp, rbp; pop rbp; ret k" |
// (3 + 1 + 3). |
const int kPadding = Assembler::kJSReturnSequenceLength - 7; |
for (int i = 0; i < kPadding; ++i) { |
masm_->int3(); |
} |
- // Check that the size of the code used for returning matches what is |
- // expected by the debugger. |
- ASSERT_EQ(Assembler::kJSReturnSequenceLength, |
- masm_->SizeOfCodeGeneratedSince(&check_exit_codesize)); |
+ // Check that the size of the code used for returning is large enough |
+ // for the debugger's requirements. |
+ ASSERT(Assembler::kJSReturnSequenceLength <= |
+ masm_->SizeOfCodeGeneratedSince(&check_exit_codesize)); |
#endif |
} |
} |