From: verwaest@chromium.org Date: Wed, 23 Jan 2013 10:05:08 +0000 (+0000) Subject: MIPS: Migrate FunctionPrototype (Keyed|Named)LoadIC to CodeStub X-Git-Tag: upstream/4.7.83~15232 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c00d46712b543cfc5d8daffdbdfd2422f00f88ad;p=platform%2Fupstream%2Fv8.git 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 --- diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc index 9d2f039..4494326 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 4bbcbe2..3d02b24 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 100d0b5..0fcc3ef 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 -------------