| Index: src/arm/stub-cache-arm.cc
|
| diff --git a/src/arm/stub-cache-arm.cc b/src/arm/stub-cache-arm.cc
|
| index f22acb4709e386d75a2a4df18f981624449de2fa..b093faaa57ad8975850ffce7c331e7e0336d3298 100644
|
| --- a/src/arm/stub-cache-arm.cc
|
| +++ b/src/arm/stub-cache-arm.cc
|
| @@ -1620,9 +1620,8 @@ Handle<Code> CallStubCompiler::CompileArrayPushCall(
|
| __ b(gt, &call_builtin);
|
|
|
| __ ldr(r4, MemOperand(sp, (argc - 1) * kPointerSize));
|
| - __ StoreNumberToDoubleElements(
|
| - r4, r0, elements, r5, r2, r3, r9,
|
| - &call_builtin, argc * kDoubleSize);
|
| + __ StoreNumberToDoubleElements(r4, r0, elements, r5,
|
| + &call_builtin, argc * kDoubleSize);
|
|
|
| // Save new length.
|
| __ str(r0, FieldMemOperand(receiver, JSArray::kLengthOffset));
|
| @@ -3246,14 +3245,10 @@ void KeyedStoreStubCompiler::GenerateStoreExternalArray(
|
| StoreIntAsFloat(masm, r3, r4, r5, r7);
|
| break;
|
| case EXTERNAL_DOUBLE_ELEMENTS:
|
| + __ vmov(s2, r5);
|
| + __ vcvt_f64_s32(d0, s2);
|
| __ add(r3, r3, Operand(key, LSL, 2));
|
| // r3: effective address of the double element
|
| - FloatingPointHelper::Destination destination;
|
| - destination = FloatingPointHelper::kVFPRegisters;
|
| - FloatingPointHelper::ConvertIntToDouble(
|
| - masm, r5, destination,
|
| - d0, r6, r7, // These are: double_dst, dst_mantissa, dst_exponent.
|
| - r4, s2); // These are: scratch2, single_scratch.
|
| __ vstr(d0, r3, 0);
|
| break;
|
| case FAST_ELEMENTS:
|
| @@ -3303,7 +3298,7 @@ void KeyedStoreStubCompiler::GenerateStoreExternalArray(
|
| // not include -kHeapObjectTag into it.
|
| __ sub(r5, value, Operand(kHeapObjectTag));
|
| __ vldr(d0, r5, HeapNumber::kValueOffset);
|
| - __ ECMAToInt32(r5, d0, d1, r6, r7, r9);
|
| + __ ECMAToInt32(r5, d0, r6, r7, r9, d1);
|
|
|
| switch (elements_kind) {
|
| case EXTERNAL_BYTE_ELEMENTS:
|
| @@ -3537,9 +3532,6 @@ void KeyedStoreStubCompiler::GenerateStoreFastDoubleElement(
|
| // -- r3 : scratch (elements backing store)
|
| // -- r4 : scratch
|
| // -- r5 : scratch
|
| - // -- r6 : scratch
|
| - // -- r7 : scratch
|
| - // -- r9 : scratch
|
| // -----------------------------------
|
| Label miss_force_generic, transition_elements_kind, grow, slow;
|
| Label finish_store, check_capacity;
|
| @@ -3550,9 +3542,6 @@ void KeyedStoreStubCompiler::GenerateStoreFastDoubleElement(
|
| Register elements_reg = r3;
|
| Register scratch1 = r4;
|
| Register scratch2 = r5;
|
| - Register scratch3 = r6;
|
| - Register scratch4 = r7;
|
| - Register scratch5 = r9;
|
| Register length_reg = r7;
|
|
|
| // This stub is meant to be tail-jumped to, the receiver must already
|
| @@ -3581,15 +3570,8 @@ void KeyedStoreStubCompiler::GenerateStoreFastDoubleElement(
|
| }
|
|
|
| __ bind(&finish_store);
|
| - __ StoreNumberToDoubleElements(value_reg,
|
| - key_reg,
|
| - // All registers after this are overwritten.
|
| - elements_reg,
|
| - scratch1,
|
| - scratch3,
|
| - scratch4,
|
| - scratch2,
|
| - &transition_elements_kind);
|
| + __ StoreNumberToDoubleElements(value_reg, key_reg, elements_reg,
|
| + scratch1, &transition_elements_kind);
|
| __ Ret();
|
|
|
| // Handle store cache miss, replacing the ic with the generic stub.
|
| @@ -3636,15 +3618,8 @@ void KeyedStoreStubCompiler::GenerateStoreFastDoubleElement(
|
| FieldMemOperand(elements_reg, FixedDoubleArray::kLengthOffset));
|
|
|
| __ mov(scratch1, elements_reg);
|
| - __ StoreNumberToDoubleElements(value_reg,
|
| - key_reg,
|
| - // All registers after this are overwritten.
|
| - scratch1,
|
| - scratch2,
|
| - scratch3,
|
| - scratch4,
|
| - scratch5,
|
| - &transition_elements_kind);
|
| + __ StoreNumberToDoubleElements(value_reg, key_reg, scratch1,
|
| + scratch2, &transition_elements_kind);
|
|
|
| __ mov(scratch1, Operand(kHoleNanLower32));
|
| __ mov(scratch2, Operand(kHoleNanUpper32));
|
|
|