From c00d46712b543cfc5d8daffdbdfd2422f00f88ad Mon Sep 17 00:00:00 2001 From: "verwaest@chromium.org" Date: Wed, 23 Jan 2013 10:05:08 +0000 Subject: [PATCH] MIPS: Migrate FunctionPrototype (Keyed|Named)LoadIC to CodeStub Port r13459 (491896eb) BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/12049015 Patch from Akos Palfi . git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13468 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/mips/code-stubs-mips.cc | 29 +++++++++++++++++++++++++++++ src/mips/ic-mips.cc | 15 --------------- src/mips/stub-cache-mips.cc | 24 ------------------------ 3 files changed, 29 insertions(+), 39 deletions(-) diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc index 9d2f0391da..4494326077 100644 --- a/src/mips/code-stubs-mips.cc +++ b/src/mips/code-stubs-mips.cc @@ -4573,6 +4573,35 @@ void ArrayLengthStub::Generate(MacroAssembler* masm) { } +void FunctionPrototypeStub::Generate(MacroAssembler* masm) { + Label miss; + Register receiver; + if (kind() == Code::KEYED_LOAD_IC) { + // ----------- S t a t e ------------- + // -- ra : return address + // -- a0 : key + // -- a1 : receiver + // ----------------------------------- + __ Branch(&miss, ne, a0, + Operand(masm->isolate()->factory()->prototype_symbol())); + receiver = a1; + } else { + ASSERT(kind() == Code::LOAD_IC); + // ----------- S t a t e ------------- + // -- a2 : name + // -- ra : return address + // -- a0 : receiver + // -- sp[0] : receiver + // ----------------------------------- + receiver = a0; + } + + StubCompiler::GenerateLoadFunctionPrototype(masm, receiver, a3, t0, &miss); + __ bind(&miss); + StubCompiler::GenerateLoadMiss(masm, kind()); +} + + void StringLengthStub::Generate(MacroAssembler* masm) { Label miss; Register receiver; diff --git a/src/mips/ic-mips.cc b/src/mips/ic-mips.cc index 4bbcbe21fd..3d02b2447e 100644 --- a/src/mips/ic-mips.cc +++ b/src/mips/ic-mips.cc @@ -215,21 +215,6 @@ static void GenerateDictionaryStore(MacroAssembler* masm, } -void LoadIC::GenerateFunctionPrototype(MacroAssembler* masm) { - // ----------- S t a t e ------------- - // -- a2 : name - // -- lr : return address - // -- a0 : receiver - // -- sp[0] : receiver - // ----------------------------------- - Label miss; - - StubCompiler::GenerateLoadFunctionPrototype(masm, a0, a1, a3, &miss); - __ bind(&miss); - StubCompiler::GenerateLoadMiss(masm, Code::LOAD_IC); -} - - // Checks the receiver for special cases (value type, slow case bits). // Falls through for regular JS object. static void GenerateKeyedLoadReceiverCheck(MacroAssembler* masm, diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc index 100d0b52e4..0fcc3ef0ba 100644 --- a/src/mips/stub-cache-mips.cc +++ b/src/mips/stub-cache-mips.cc @@ -3203,30 +3203,6 @@ Handle KeyedLoadStubCompiler::CompileLoadInterceptor( } -Handle KeyedLoadStubCompiler::CompileLoadFunctionPrototype( - Handle name) { - // ----------- S t a t e ------------- - // -- ra : return address - // -- a0 : key - // -- a1 : receiver - // ----------------------------------- - Label miss; - - Counters* counters = masm()->isolate()->counters(); - __ IncrementCounter(counters->keyed_load_function_prototype(), 1, a2, a3); - - // Check the name hasn't changed. - __ Branch(&miss, ne, a0, Operand(name)); - - GenerateLoadFunctionPrototype(masm(), a1, a2, a3, &miss); - __ bind(&miss); - __ DecrementCounter(counters->keyed_load_function_prototype(), 1, a2, a3); - GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); - - return GetCode(Code::CALLBACKS, name); -} - - Handle KeyedLoadStubCompiler::CompileLoadElement( Handle receiver_map) { // ----------- S t a t e -------------