Reviewers: Mads Ager,
Message:
This failure where flaky so it did not show up consistently until Kevins
(unrelated) change.
Description:
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.
Please review this at http://codereview.chromium.org/6293017/
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/arm/lithium-codegen-arm.cc
Index: src/arm/lithium-codegen-arm.cc
===================================================================
--- src/arm/lithium-codegen-arm.cc (revision 6430)
+++ src/arm/lithium-codegen-arm.cc (working copy)
@@ -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