| Index: src/arm/lithium-codegen-arm.cc
|
| ===================================================================
|
| --- src/arm/lithium-codegen-arm.cc (revision 12603)
|
| +++ src/arm/lithium-codegen-arm.cc (working copy)
|
| @@ -1551,7 +1551,7 @@
|
| ASSERT(instr->result()->IsDoubleRegister());
|
| DwVfpRegister result = ToDoubleRegister(instr->result());
|
| double v = instr->value();
|
| - __ Vmov(result, v);
|
| + __ Vmov(result, v, scratch0());
|
| }
|
|
|
|
|
| @@ -3530,12 +3530,12 @@
|
| __ cmp(scratch, Operand(HeapNumber::kExponentBias + 32));
|
| DeoptimizeIf(ge, instr->environment());
|
|
|
| + __ Vmov(double_scratch0(), 0.5, scratch);
|
| + __ vadd(double_scratch0(), input, double_scratch0());
|
| +
|
| // Save the original sign for later comparison.
|
| __ and_(scratch, result, Operand(HeapNumber::kSignMask));
|
|
|
| - __ Vmov(double_scratch0(), 0.5);
|
| - __ vadd(double_scratch0(), input, double_scratch0());
|
| -
|
| // Check sign of the result: if the sign changed, the input
|
| // value was in ]0.5, 0[ and the result should be -0.
|
| __ vmov(result, double_scratch0().high());
|
| @@ -3584,7 +3584,7 @@
|
| // Math.pow(-Infinity, 0.5) == Infinity
|
| // Math.sqrt(-Infinity) == NaN
|
| Label done;
|
| - __ vmov(temp, -V8_INFINITY);
|
| + __ vmov(temp, -V8_INFINITY, scratch0());
|
| __ VFPCompareAndSetFlags(input, temp);
|
| __ vneg(result, temp, eq);
|
| __ b(&done, eq);
|
| @@ -4066,7 +4066,7 @@
|
| // Only load canonical NaN if the comparison above set the overflow.
|
| __ Vmov(value,
|
| FixedDoubleArray::canonical_not_the_hole_nan_as_double(),
|
| - vs);
|
| + no_reg, vs);
|
| }
|
|
|
| __ vstr(value, scratch, instr->additional_index() << element_size_shift);
|
|
|