Index: src/ia32/code-stubs-ia32.cc |
=================================================================== |
--- src/ia32/code-stubs-ia32.cc (revision 5789) |
+++ src/ia32/code-stubs-ia32.cc (working copy) |
@@ -3067,6 +3067,26 @@ |
} |
+void ApiCallEntryStub::Generate(MacroAssembler* masm) { |
+ __ PrepareCallApiFunction(kStackSpace, kArgc); |
+ STATIC_ASSERT(kArgc == 5); |
+ |
+ // Allocate the v8::Arguments structure in the arguments' space since |
+ // it's not controlled by GC. |
+ __ mov(ApiParameterOperand(1), eax); // v8::Arguments::implicit_args_. |
+ __ mov(ApiParameterOperand(2), ebx); // v8::Arguments::values_. |
+ __ mov(ApiParameterOperand(3), edx); // v8::Arguments::length_. |
+ // v8::Arguments::is_construct_call_. |
+ __ mov(ApiParameterOperand(4), Immediate(0)); |
+ |
+ // v8::InvocationCallback's argument. |
+ __ lea(eax, ApiParameterOperand(1)); |
+ __ mov(ApiParameterOperand(0), eax); |
+ |
+ __ CallApiFunctionAndReturn(fun(), kArgc); |
+} |
+ |
+ |
void CEntryStub::GenerateCore(MacroAssembler* masm, |
Label* throw_normal_exception, |
Label* throw_termination_exception, |