| Index: src/mips/stub-cache-mips.cc
|
| diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc
|
| index e3d8fe14d939bac5a876a8cb580631acd97536ce..3611a28c1ba8134664d595f1672461d3467f3a3a 100644
|
| --- a/src/mips/stub-cache-mips.cc
|
| +++ b/src/mips/stub-cache-mips.cc
|
| @@ -1195,8 +1195,7 @@ void StoreStubCompiler::GenerateStoreViaSetter(
|
| if (IC::TypeToMap(*type, masm->isolate())->IsJSGlobalObjectMap()) {
|
| // Swap in the global receiver.
|
| __ lw(receiver,
|
| - FieldMemOperand(
|
| - receiver, JSGlobalObject::kGlobalReceiverOffset));
|
| + FieldMemOperand(receiver, JSGlobalObject::kGlobalProxyOffset));
|
| }
|
| __ Push(receiver, value());
|
| ParameterCount actual(1);
|
| @@ -1256,16 +1255,16 @@ Register* LoadStubCompiler::registers() {
|
| // receiver, name, scratch1, scratch2, scratch3, scratch4.
|
| Register receiver = LoadIC::ReceiverRegister();
|
| Register name = LoadIC::NameRegister();
|
| - static Register registers[] = { receiver, name, a3, a1, t0, t1 };
|
| + static Register registers[] = { receiver, name, a3, a0, t0, t1 };
|
| return registers;
|
| }
|
|
|
|
|
| Register* KeyedLoadStubCompiler::registers() {
|
| // receiver, name, scratch1, scratch2, scratch3, scratch4.
|
| - Register receiver = KeyedLoadIC::ReceiverRegister();
|
| - Register name = KeyedLoadIC::NameRegister();
|
| - static Register registers[] = { receiver, name, a2, a3, t0, t1 };
|
| + Register receiver = LoadIC::ReceiverRegister();
|
| + Register name = LoadIC::NameRegister();
|
| + static Register registers[] = { receiver, name, a3, a0, t0, t1 };
|
| return registers;
|
| }
|
|
|
| @@ -1310,8 +1309,7 @@ void LoadStubCompiler::GenerateLoadViaGetter(MacroAssembler* masm,
|
| if (IC::TypeToMap(*type, masm->isolate())->IsJSGlobalObjectMap()) {
|
| // Swap in the global receiver.
|
| __ lw(receiver,
|
| - FieldMemOperand(
|
| - receiver, JSGlobalObject::kGlobalReceiverOffset));
|
| + FieldMemOperand(receiver, JSGlobalObject::kGlobalProxyOffset));
|
| }
|
| __ push(receiver);
|
| ParameterCount actual(0);
|
| @@ -1466,45 +1464,30 @@ Handle<Code> KeyedStoreStubCompiler::CompileStorePolymorphic(
|
|
|
| void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
|
| MacroAssembler* masm) {
|
| - // ---------- S t a t e --------------
|
| - // -- ra : return address
|
| - // -- a0 : key
|
| - // -- a1 : receiver
|
| - // -----------------------------------
|
| - ASSERT(a1.is(KeyedLoadIC::ReceiverRegister()));
|
| - ASSERT(a0.is(KeyedLoadIC::NameRegister()));
|
| + // The return address is in ra.
|
| Label slow, miss;
|
|
|
| - Register key = a0;
|
| - Register receiver = a1;
|
| + Register key = LoadIC::NameRegister();
|
| + Register receiver = LoadIC::ReceiverRegister();
|
| + ASSERT(receiver.is(a1));
|
| + ASSERT(key.is(a2));
|
|
|
| - __ JumpIfNotSmi(key, &miss);
|
| + __ UntagAndJumpIfNotSmi(t2, key, &miss);
|
| __ lw(t0, FieldMemOperand(receiver, JSObject::kElementsOffset));
|
| - __ sra(a2, a0, kSmiTagSize);
|
| - __ LoadFromNumberDictionary(&slow, t0, a0, v0, a2, a3, t1);
|
| + __ LoadFromNumberDictionary(&slow, t0, key, v0, t2, a3, t1);
|
| __ Ret();
|
|
|
| - // Slow case, key and receiver still in a0 and a1.
|
| + // Slow case, key and receiver still unmodified.
|
| __ bind(&slow);
|
| __ IncrementCounter(
|
| masm->isolate()->counters()->keyed_load_external_array_slow(),
|
| 1, a2, a3);
|
| - // Entry registers are intact.
|
| - // ---------- S t a t e --------------
|
| - // -- ra : return address
|
| - // -- a0 : key
|
| - // -- a1 : receiver
|
| - // -----------------------------------
|
| +
|
| TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow);
|
|
|
| // Miss case, call the runtime.
|
| __ bind(&miss);
|
|
|
| - // ---------- S t a t e --------------
|
| - // -- ra : return address
|
| - // -- a0 : key
|
| - // -- a1 : receiver
|
| - // -----------------------------------
|
| TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss);
|
| }
|
|
|
|
|