Revision: 6434
Author: [email protected]
Date: Sun Jan 23 23:56:57 2011
Log: Fix double allocation of register on arm in DoDeferredMathAbsTaggedHeapNumber.

This should fix the sputnik issue on the arm simulator.

Priorly tmp2 and tmp3 could potentially be the same register as input.


Review URL: http://codereview.chromium.org/6293017
http://code.google.com/p/v8/source/detail?r=6434

Modified:
 /branches/bleeding_edge/src/arm/lithium-codegen-arm.cc

=======================================
--- /branches/bleeding_edge/src/arm/lithium-codegen-arm.cc Fri Jan 21 00:30:13 2011 +++ /branches/bleeding_edge/src/arm/lithium-codegen-arm.cc Sun Jan 23 23:56:57 2011
@@ -2492,9 +2492,6 @@
   DeoptimizeIf(ne, instr->environment());

   Label done;
-  Register tmp = input.is(r0) ? r1 : r0;
-  Register tmp2 = r2;
-  Register tmp3 = r3;

   Label negative;
   __ ldr(scratch, FieldMemOperand(input, HeapNumber::kExponentOffset));
@@ -2510,6 +2507,10 @@
   // Preserve the value of all registers.
   __ PushSafepointRegisters();

+  Register tmp = input.is(r0) ? r1 : r0;
+  Register tmp2 = input.is(r2) ? r3 : r2;
+  Register tmp3 = input.is(r4) ? r5 : r4;
+
   Label allocated, slow;
   __ LoadRoot(scratch, Heap::kHeapNumberMapRootIndex);
   __ AllocateHeapNumber(tmp, tmp2, tmp3, scratch, &slow);

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to