From 9c21e6b7d2dbec437427f27bac509b8b0b4ac71b Mon Sep 17 00:00:00 2001 From: "jkummerow@chromium.org" Date: Thu, 5 Sep 2013 16:19:33 +0000 Subject: [PATCH] MIPS: load ics for js api accessors. Port r16551 (61ce507) BUG= R=gergely@homejinni.com Review URL: https://codereview.chromium.org/23868007 Patch from Balazs Kilvady . git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16557 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/mips/stub-cache-mips.cc | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc index 18353b6..9a6378b 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); @@ -1374,6 +1374,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) { // Build AccessorInfo::args_ list on the stack and push property name below -- 2.7.4