| Index: src/arm/ic-arm.cc
|
| ===================================================================
|
| --- src/arm/ic-arm.cc (revision 4576)
|
| +++ src/arm/ic-arm.cc (working copy)
|
| @@ -682,12 +682,13 @@
|
| void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
|
| // ---------- S t a t e --------------
|
| // -- lr : return address
|
| + // -- r0 : key
|
| // -- sp[0] : key
|
| // -- sp[4] : receiver
|
| // -----------------------------------
|
|
|
| - __ ldm(ia, sp, r2.bit() | r3.bit());
|
| - __ Push(r3, r2);
|
| + __ ldr(r1, MemOperand(sp, kPointerSize));
|
| + __ Push(r1, r0);
|
|
|
| ExternalReference ref = ExternalReference(IC_Utility(kKeyedLoadIC_Miss));
|
| __ TailCallExternalReference(ref, 2, 1);
|
| @@ -697,12 +698,13 @@
|
| void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
|
| // ---------- S t a t e --------------
|
| // -- lr : return address
|
| + // -- r0 : key
|
| // -- sp[0] : key
|
| // -- sp[4] : receiver
|
| // -----------------------------------
|
|
|
| - __ ldm(ia, sp, r2.bit() | r3.bit());
|
| - __ Push(r3, r2);
|
| + __ ldr(r1, MemOperand(sp, kPointerSize));
|
| + __ Push(r1, r0);
|
|
|
| __ TailCallRuntime(Runtime::kGetProperty, 2, 1);
|
| }
|
| @@ -711,13 +713,14 @@
|
| void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| // ---------- S t a t e --------------
|
| // -- lr : return address
|
| + // -- r0 : key
|
| // -- sp[0] : key
|
| // -- sp[4] : receiver
|
| // -----------------------------------
|
| Label slow, fast, check_pixel_array, check_number_dictionary;
|
|
|
| - // Get the key and receiver object from the stack.
|
| - __ ldm(ia, sp, r0.bit() | r1.bit());
|
| + // Get the object from the stack.
|
| + __ ldr(r1, MemOperand(sp, kPointerSize));
|
|
|
| // Check that the object isn't a smi.
|
| __ BranchOnSmi(r1, &slow);
|
| @@ -790,6 +793,7 @@
|
| // Slow case: Push extra copies of the arguments (2).
|
| __ bind(&slow);
|
| __ IncrementCounter(&Counters::keyed_load_generic_slow, 1, r0, r1);
|
| + __ ldr(r0, MemOperand(sp, 0));
|
| GenerateRuntimeGetProperty(masm);
|
| }
|
|
|
| @@ -797,6 +801,7 @@
|
| void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
|
| // ---------- S t a t e --------------
|
| // -- lr : return address
|
| + // -- r0 : key
|
| // -- sp[0] : key
|
| // -- sp[4] : receiver
|
| // -----------------------------------
|
| @@ -806,8 +811,8 @@
|
| Label slow_char_code;
|
| Label got_char_code;
|
|
|
| - // Get the key and receiver object from the stack.
|
| - __ ldm(ia, sp, r0.bit() | r1.bit());
|
| + // Get the object from the stack.
|
| + __ ldr(r1, MemOperand(sp, kPointerSize));
|
|
|
| Register object = r1;
|
| Register index = r0;
|
| @@ -907,13 +912,14 @@
|
| ExternalArrayType array_type) {
|
| // ---------- S t a t e --------------
|
| // -- lr : return address
|
| + // -- r0 : key
|
| // -- sp[0] : key
|
| // -- sp[4] : receiver
|
| // -----------------------------------
|
| Label slow, failed_allocation;
|
|
|
| - // Get the key and receiver object from the stack.
|
| - __ ldm(ia, sp, r0.bit() | r1.bit());
|
| + // Get the object from the stack.
|
| + __ ldr(r1, MemOperand(sp, kPointerSize));
|
|
|
| // r0: key
|
| // r1: receiver object
|
| @@ -1143,6 +1149,7 @@
|
| // Slow case: Load name and receiver from stack and jump to runtime.
|
| __ bind(&slow);
|
| __ IncrementCounter(&Counters::keyed_load_external_array_slow, 1, r0, r1);
|
| + __ ldr(r0, MemOperand(sp, 0));
|
| GenerateRuntimeGetProperty(masm);
|
| }
|
|
|
| @@ -1150,13 +1157,14 @@
|
| void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
|
| // ---------- S t a t e --------------
|
| // -- lr : return address
|
| + // -- r0 : key
|
| // -- sp[0] : key
|
| // -- sp[4] : receiver
|
| // -----------------------------------
|
| Label slow;
|
|
|
| - // Get the key and receiver object from the stack.
|
| - __ ldm(ia, sp, r0.bit() | r1.bit());
|
| + // Get the object from the stack.
|
| + __ ldr(r1, MemOperand(sp, kPointerSize));
|
|
|
| // Check that the receiver isn't a smi.
|
| __ BranchOnSmi(r1, &slow);
|
|
|