Chromium Code Reviews| Index: src/x64/full-codegen-x64.cc |
| =================================================================== |
| --- src/x64/full-codegen-x64.cc (revision 6683) |
| +++ src/x64/full-codegen-x64.cc (working copy) |
| @@ -297,7 +297,17 @@ |
| // 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; |
| + if (is_uint16(arguments_bytes)) { |
|
Mads Ager (chromium)
2011/02/08 17:34:36
You could make this a Ret macro assembler instruct
|
| + __ ret(arguments_bytes); |
| + } else { |
| + __ pop(rcx); |
| + __ addq(rsp, Immediate(arguments_bytes)); |
| + __ push(rcx); |
| + __ ret(0); |
| + } |
| + |
| #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 |
| @@ -308,8 +318,8 @@ |
| } |
| // 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)); |
| + ASSERT(Assembler::kJSReturnSequenceLength <= |
| + masm_->SizeOfCodeGeneratedSince(&check_exit_codesize)); |
| #endif |
| } |
| } |