Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 2d7d168be8a6e0d10143212cc9792d92c6a99193..19dcc9fb0685a26fe47c5950058ea8870d12a8e5 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -3097,13 +3097,15 @@ void LCodeGen::DoMathSqrt(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathPowHalf(LUnaryMathOperation* instr) { |
DoubleRegister input = ToDoubleRegister(instr->InputAt(0)); |
DoubleRegister result = ToDoubleRegister(instr->result()); |
+ DoubleRegister temp = ToDoubleRegister(instr->TempAt(0)); |
// Note that according to ECMA-262 15.8.2.13: |
// Math.pow(-Infinity, 0.5) == Infinity |
// Math.sqrt(-Infinity) == NaN |
Label done; |
- __ VFPCompareAndSetFlags(input, -V8_INFINITY); |
- __ vneg(result, input, eq); |
+ __ vmov(temp, -V8_INFINITY); |
+ __ VFPCompareAndSetFlags(input, temp); |
+ __ vneg(result, temp, eq); |
__ b(&done, eq); |
// Add +0 to convert -0 to +0. |