Index: src/x64/codegen-x64.cc |
=================================================================== |
--- src/x64/codegen-x64.cc (revision 6683) |
+++ src/x64/codegen-x64.cc (working copy) |
@@ -2993,7 +2993,15 @@ |
// Leave the frame and return popping the arguments and the |
// receiver. |
frame_->Exit(); |
- masm_->ret((scope()->num_parameters() + 1) * kPointerSize); |
+ int arguments_bytes = (scope()->num_parameters() + 1) * kPointerSize; |
+ if (is_uint16(arguments_bytes)) { |
+ __ ret(arguments_bytes); |
+ } else { |
+ __ pop(rcx); |
+ __ addq(rsp, Immediate(arguments_bytes)); |
+ __ push(rcx); |
+ __ ret(0); |
+ } |
DeleteFrame(); |
#ifdef ENABLE_DEBUGGER_SUPPORT |
@@ -3006,8 +3014,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 |
} |