| Index: src/ia32/code-stubs-ia32.cc
|
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
|
| index eddd571e6638ca55c503c9b6673edd23696831af..9939c5213eb5e63bc5b8c0c8422c57712c1e802d 100644
|
| --- a/src/ia32/code-stubs-ia32.cc
|
| +++ b/src/ia32/code-stubs-ia32.cc
|
| @@ -5324,7 +5324,7 @@ void CallApiFunctionStub::Generate(MacroAssembler* masm) {
|
| Register context = esi;
|
|
|
| int argc = ArgumentBits::decode(bit_field_);
|
| - bool restore_context = RestoreContextBits::decode(bit_field_);
|
| + bool is_store = IsStoreBits::decode(bit_field_);
|
| bool call_data_undefined = CallDataUndefinedBits::decode(bit_field_);
|
|
|
| typedef FunctionCallbackArguments FCA;
|
| @@ -5405,15 +5405,16 @@ void CallApiFunctionStub::Generate(MacroAssembler* masm) {
|
|
|
| Operand context_restore_operand(ebp,
|
| (2 + FCA::kContextSaveIndex) * kPointerSize);
|
| - Operand return_value_operand(ebp,
|
| - (2 + FCA::kReturnValueOffset) * kPointerSize);
|
| + // Stores return the first js argument
|
| + int return_value_offset =
|
| + 2 + (is_store ? FCA::kArgsLength : FCA::kReturnValueOffset);
|
| + Operand return_value_operand(ebp, return_value_offset * kPointerSize);
|
| __ CallApiFunctionAndReturn(api_function_address,
|
| thunk_address,
|
| ApiParameterOperand(1),
|
| argc + FCA::kArgsLength + 1,
|
| return_value_operand,
|
| - restore_context ?
|
| - &context_restore_operand : NULL);
|
| + &context_restore_operand);
|
| }
|
|
|
|
|
|
|