Index: src/arm/ic-arm.cc |
=================================================================== |
--- src/arm/ic-arm.cc (revision 4889) |
+++ src/arm/ic-arm.cc (working copy) |
@@ -1339,7 +1339,8 @@ |
__ bind(&box_int); |
// Allocate a HeapNumber for the result and perform int-to-double |
// conversion. Use r0 for result as key is not needed any more. |
- __ AllocateHeapNumber(r0, r3, r4, &slow); |
+ __ LoadRoot(r6, Heap::kHeapNumberMapRootIndex); |
+ __ AllocateHeapNumber(r0, r3, r4, r6, &slow); |
if (CpuFeatures::IsSupported(VFP3)) { |
CpuFeatures::Scope scope(VFP3); |
@@ -1370,7 +1371,8 @@ |
// Allocate a HeapNumber for the result and perform int-to-double |
// conversion. Don't use r0 and r1 as AllocateHeapNumber clobbers all |
// registers - also when jumping due to exhausted young space. |
- __ AllocateHeapNumber(r2, r3, r4, &slow); |
+ __ LoadRoot(r6, Heap::kHeapNumberMapRootIndex); |
+ __ AllocateHeapNumber(r2, r3, r4, r6, &slow); |
__ vcvt_f64_u32(d0, s0); |
__ sub(r1, r2, Operand(kHeapObjectTag)); |
@@ -1407,7 +1409,8 @@ |
// Wrap it into a HeapNumber. Don't use r0 and r1 as AllocateHeapNumber |
// clobbers all registers - also when jumping due to exhausted young |
// space. |
- __ AllocateHeapNumber(r4, r5, r6, &slow); |
+ __ LoadRoot(r6, Heap::kHeapNumberMapRootIndex); |
+ __ AllocateHeapNumber(r4, r5, r7, r6, &slow); |
__ str(hiword, FieldMemOperand(r4, HeapNumber::kExponentOffset)); |
__ str(loword, FieldMemOperand(r4, HeapNumber::kMantissaOffset)); |
@@ -1423,7 +1426,8 @@ |
// Allocate a HeapNumber for the result. Don't use r0 and r1 as |
// AllocateHeapNumber clobbers all registers - also when jumping due to |
// exhausted young space. |
- __ AllocateHeapNumber(r2, r3, r4, &slow); |
+ __ LoadRoot(r6, Heap::kHeapNumberMapRootIndex); |
+ __ AllocateHeapNumber(r2, r3, r4, r6, &slow); |
__ vcvt_f64_f32(d0, s0); |
__ sub(r1, r2, Operand(kHeapObjectTag)); |
__ vstr(d0, r1, HeapNumber::kValueOffset); |
@@ -1434,7 +1438,8 @@ |
// Allocate a HeapNumber for the result. Don't use r0 and r1 as |
// AllocateHeapNumber clobbers all registers - also when jumping due to |
// exhausted young space. |
- __ AllocateHeapNumber(r3, r4, r5, &slow); |
+ __ LoadRoot(r6, Heap::kHeapNumberMapRootIndex); |
+ __ AllocateHeapNumber(r3, r4, r5, r6, &slow); |
// VFP is not available, do manual single to double conversion. |
// r2: floating point value (binary32) |