Index: src/arm/stub-cache-arm.cc |
diff --git a/src/arm/stub-cache-arm.cc b/src/arm/stub-cache-arm.cc |
index db681936b891f32c79119dac51e83215593e474b..c762a2f579b0c266371043cbae6d3683a5eb6dbc 100644 |
--- a/src/arm/stub-cache-arm.cc |
+++ b/src/arm/stub-cache-arm.cc |
@@ -3577,8 +3577,21 @@ void KeyedLoadStubCompiler::GenerateLoadExternalArray( |
__ vstr(d0, r3, HeapNumber::kValueOffset); |
__ Ret(); |
} else { |
- WriteInt32ToHeapNumberStub stub(value, r0, r3); |
- __ TailCallStub(&stub); |
+ Register dst1 = r1; |
+ Register dst2 = r3; |
+ FloatingPointHelper::Destination dest = |
+ FloatingPointHelper::kCoreRegisters; |
+ FloatingPointHelper::ConvertIntToDouble(masm, |
+ value, |
+ dest, |
+ d0, |
+ dst1, |
+ dst2, |
+ r9, |
+ s0); |
+ __ str(dst1, FieldMemOperand(r0, HeapNumber::kMantissaOffset)); |
+ __ str(dst2, FieldMemOperand(r0, HeapNumber::kExponentOffset)); |
+ __ Ret(); |
} |
} else if (array_type == kExternalUnsignedIntArray) { |
// The test is different for unsigned int values. Since we need |