| Index: src/ia32/codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/codegen-ia32.cc (revision 6683)
|
| +++ src/ia32/codegen-ia32.cc (working copy)
|
| @@ -3771,14 +3771,22 @@
|
| // 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(ecx);
|
| + __ add(Operand(esp), Immediate(arguments_bytes));
|
| + __ push(ecx);
|
| + __ ret(0);
|
| + }
|
| DeleteFrame();
|
|
|
| #ifdef ENABLE_DEBUGGER_SUPPORT
|
| // 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
|
| }
|
|
|
|
|