Revision: 13467
Author: [email protected]
Date: Wed Jan 23 02:02:48 2013
Log: MIPS: Migrate ArrayLength (Keyed|Named)LoadIC to CodeStub
Port r13458 (e8729cf9)
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/12052011
Patch from Akos Palfi <[email protected]>.
http://code.google.com/p/v8/source/detail?r=13467
Modified:
/branches/bleeding_edge/src/mips/code-stubs-mips.cc
/branches/bleeding_edge/src/mips/ic-mips.cc
/branches/bleeding_edge/src/mips/stub-cache-mips.cc
=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Wed Jan 23 01:45:48
2013
+++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Wed Jan 23 02:02:48
2013
@@ -4542,6 +4542,35 @@
__ DropAndRet(HasArgsInRegisters() ? 0 : 2);
}
}
+
+
+void ArrayLengthStub::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()->length_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::GenerateLoadArrayLength(masm, receiver, a3, &miss);
+ __ bind(&miss);
+ StubCompiler::GenerateLoadMiss(masm, kind());
+}
void StringLengthStub::Generate(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/mips/ic-mips.cc Wed Jan 23 01:45:48 2013
+++ /branches/bleeding_edge/src/mips/ic-mips.cc Wed Jan 23 02:02:48 2013
@@ -213,21 +213,6 @@
__ RecordWrite(
elements, scratch2, scratch1, kRAHasNotBeenSaved, kDontSaveFPRegs);
}
-
-
-void LoadIC::GenerateArrayLength(MacroAssembler* masm) {
- // ----------- S t a t e -------------
- // -- a2 : name
- // -- ra : return address
- // -- a0 : receiver
- // -- sp[0] : receiver
- // -----------------------------------
- Label miss;
-
- StubCompiler::GenerateLoadArrayLength(masm, a0, a3, &miss);
- __ bind(&miss);
- StubCompiler::GenerateLoadMiss(masm, Code::LOAD_IC);
-}
void LoadIC::GenerateFunctionPrototype(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/mips/stub-cache-mips.cc Wed Jan 23 01:45:48
2013
+++ /branches/bleeding_edge/src/mips/stub-cache-mips.cc Wed Jan 23 02:02:48
2013
@@ -3201,26 +3201,6 @@
return GetCode(Code::INTERCEPTOR, name);
}
-
-
-Handle<Code> KeyedLoadStubCompiler::CompileLoadArrayLength(
- Handle<String> name) {
- // ----------- S t a t e -------------
- // -- ra : return address
- // -- a0 : key
- // -- a1 : receiver
- // -----------------------------------
- Label miss;
-
- // Check the key is the cached one.
- __ Branch(&miss, ne, a0, Operand(name));
-
- GenerateLoadArrayLength(masm(), a1, a2, &miss);
- __ bind(&miss);
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
-
- return GetCode(Code::CALLBACKS, name);
-}
Handle<Code> KeyedLoadStubCompiler::CompileLoadFunctionPrototype(
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev