| Index: src/arm/codegen-arm.cc
|
| ===================================================================
|
| --- src/arm/codegen-arm.cc (revision 4607)
|
| +++ src/arm/codegen-arm.cc (working copy)
|
| @@ -1486,8 +1486,7 @@
|
| // Then process it as a normal function call.
|
| __ ldr(r0, MemOperand(sp, 3 * kPointerSize));
|
| __ ldr(r1, MemOperand(sp, 2 * kPointerSize));
|
| - __ str(r0, MemOperand(sp, 2 * kPointerSize));
|
| - __ str(r1, MemOperand(sp, 3 * kPointerSize));
|
| + __ strd(r0, MemOperand(sp, 2 * kPointerSize));
|
|
|
| CallFunctionStub call_function(2, NOT_IN_LOOP, NO_CALL_FUNCTION_FLAGS);
|
| frame_->CallStub(&call_function, 3);
|
| @@ -2279,8 +2278,8 @@
|
| node->break_target()->set_direction(JumpTarget::FORWARD_ONLY);
|
| node->continue_target()->set_direction(JumpTarget::FORWARD_ONLY);
|
|
|
| - __ ldr(r0, frame_->ElementAt(0)); // load the current count
|
| - __ ldr(r1, frame_->ElementAt(1)); // load the length
|
| + // Load the current count to r0, load the length to r1.
|
| + __ ldrd(r0, frame_->ElementAt(0));
|
| __ cmp(r0, r1); // compare to the array length
|
| node->break_target()->Branch(hs);
|
|
|
| @@ -6248,8 +6247,7 @@
|
| ConvertToDoubleStub stub1(r3, r2, r7, r6);
|
| __ Call(stub1.GetCode(), RelocInfo::CODE_TARGET);
|
| // Load rhs to a double in r0, r1.
|
| - __ ldr(r1, FieldMemOperand(r0, HeapNumber::kValueOffset + kPointerSize));
|
| - __ ldr(r0, FieldMemOperand(r0, HeapNumber::kValueOffset));
|
| + __ ldrd(r0, FieldMemOperand(r0, HeapNumber::kValueOffset));
|
| __ pop(lr);
|
| }
|
|
|
| @@ -6284,8 +6282,7 @@
|
| } else {
|
| __ push(lr);
|
| // Load lhs to a double in r2, r3.
|
| - __ ldr(r3, FieldMemOperand(r1, HeapNumber::kValueOffset + kPointerSize));
|
| - __ ldr(r2, FieldMemOperand(r1, HeapNumber::kValueOffset));
|
| + __ ldrd(r2, FieldMemOperand(r1, HeapNumber::kValueOffset));
|
| // Convert rhs to a double in r0, r1.
|
| __ mov(r7, Operand(r0));
|
| ConvertToDoubleStub stub2(r1, r0, r7, r6);
|
| @@ -6449,10 +6446,8 @@
|
| __ sub(r7, r1, Operand(kHeapObjectTag));
|
| __ vldr(d7, r7, HeapNumber::kValueOffset);
|
| } else {
|
| - __ ldr(r2, FieldMemOperand(r1, HeapNumber::kValueOffset));
|
| - __ ldr(r3, FieldMemOperand(r1, HeapNumber::kValueOffset + kPointerSize));
|
| - __ ldr(r1, FieldMemOperand(r0, HeapNumber::kValueOffset + kPointerSize));
|
| - __ ldr(r0, FieldMemOperand(r0, HeapNumber::kValueOffset));
|
| + __ ldrd(r2, FieldMemOperand(r1, HeapNumber::kValueOffset));
|
| + __ ldrd(r0, FieldMemOperand(r0, HeapNumber::kValueOffset));
|
| }
|
| __ jmp(both_loaded_as_doubles);
|
| }
|
| @@ -6829,8 +6824,7 @@
|
| __ vldr(d7, r7, HeapNumber::kValueOffset);
|
| } else {
|
| // Calling convention says that second double is in r2 and r3.
|
| - __ ldr(r2, FieldMemOperand(r0, HeapNumber::kValueOffset));
|
| - __ ldr(r3, FieldMemOperand(r0, HeapNumber::kValueOffset + 4));
|
| + __ ldrd(r2, FieldMemOperand(r0, HeapNumber::kValueOffset));
|
| }
|
| __ jmp(&finished_loading_r0);
|
| __ bind(&r0_is_smi);
|
| @@ -6882,8 +6876,7 @@
|
| __ vldr(d6, r7, HeapNumber::kValueOffset);
|
| } else {
|
| // Calling convention says that first double is in r0 and r1.
|
| - __ ldr(r0, FieldMemOperand(r1, HeapNumber::kValueOffset));
|
| - __ ldr(r1, FieldMemOperand(r1, HeapNumber::kValueOffset + 4));
|
| + __ ldrd(r0, FieldMemOperand(r1, HeapNumber::kValueOffset));
|
| }
|
| __ jmp(&finished_loading_r1);
|
| __ bind(&r1_is_smi);
|
| @@ -6954,8 +6947,7 @@
|
| __ stc(p1, cr8, MemOperand(r4, HeapNumber::kValueOffset));
|
| #else
|
| // Double returned in registers 0 and 1.
|
| - __ str(r0, FieldMemOperand(r5, HeapNumber::kValueOffset));
|
| - __ str(r1, FieldMemOperand(r5, HeapNumber::kValueOffset + 4));
|
| + __ strd(r0, FieldMemOperand(r5, HeapNumber::kValueOffset));
|
| #endif
|
| __ mov(r0, Operand(r5));
|
| // And we are done.
|
|
|