Index: src/arm/ic-arm.cc |
diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc |
index 7f83d14af90ab611c9f733c2899f9c53e418939b..c460f9ca6f79411d67f137ee5ec673eaa383e6a8 100644 |
--- a/src/arm/ic-arm.cc |
+++ b/src/arm/ic-arm.cc |
@@ -1410,9 +1410,12 @@ void KeyedLoadIC::GenerateExternalArray(MacroAssembler* masm, |
__ 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. |
+ // conversion. Don't touch r0 or r1 as they are needed if allocation |
+ // fails. |
__ LoadRoot(r6, Heap::kHeapNumberMapRootIndex); |
- __ AllocateHeapNumber(r0, r3, r4, r6, &slow); |
+ __ AllocateHeapNumber(r5, r3, r4, r6, &slow); |
+ // Now we can use r0 for the result as key is not needed any more. |
+ __ mov(r0, r5); |
if (CpuFeatures::IsSupported(VFP3)) { |
CpuFeatures::Scope scope(VFP3); |