diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc index 18353b6696..9a6378ba85 100644 --- a/src/mips/stub-cache-mips.cc +++ b/src/mips/stub-cache-mips.cc @@ -1287,7 +1287,7 @@ Register BaseLoadStubCompiler::CallbackHandlerFrontend( Handle holder, Handle name, Label* success, - Handle callback) { + Handle callback) { Label miss; Register reg = HandlerFrontendHeader(object, object_reg, holder, name, &miss); @@ -1373,6 +1373,24 @@ void BaseLoadStubCompiler::GenerateLoadConstant(Handle value) { } +void BaseLoadStubCompiler::GenerateLoadCallback( + const CallOptimization& call_optimization) { + ASSERT(call_optimization.is_simple_api_call()); + + // Assign stack space for the call arguments. + __ Subu(sp, sp, Operand((kFastApiCallArguments + 1) * kPointerSize)); + + int argc = 0; + int api_call_argc = argc + kFastApiCallArguments; + // Write holder to stack frame. + __ sw(receiver(), MemOperand(sp, 0)); + // Write receiver to stack frame. + __ sw(receiver(), MemOperand(sp, api_call_argc * kPointerSize)); + + GenerateFastApiDirectCall(masm(), call_optimization, argc); +} + + void BaseLoadStubCompiler::GenerateLoadCallback( Register reg, Handle callback) {