Index: src/a64/lithium-codegen-a64.cc |
diff --git a/src/a64/lithium-codegen-a64.cc b/src/a64/lithium-codegen-a64.cc |
index 48f8ea6136f34c07a9c62b332cb2a2d41d9398f5..63ef184ece3c61cd1fcdcbd73b49f895db4312e2 100644 |
--- a/src/a64/lithium-codegen-a64.cc |
+++ b/src/a64/lithium-codegen-a64.cc |
@@ -4025,7 +4025,6 @@ void LCodeGen::DoMathRound(LMathRound* instr) { |
DoubleRegister temp1 = ToDoubleRegister(instr->temp1()); |
Register result = ToRegister(instr->result()); |
Label try_rounding; |
- Label deopt; |
Label done; |
// Math.round() rounds to the nearest integer, with ties going towards |
@@ -4047,8 +4046,7 @@ void LCodeGen::DoMathRound(LMathRound* instr) { |
if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) { |
__ Fmov(result, input); |
- __ Cmp(result, 0); |
- DeoptimizeIf(mi, instr->environment()); // [-0.5, -0.0]. |
+ DeoptimizeIfNegative(result, instr->environment()); // [-0.5, -0.0]. |
} |
__ Fcmp(input, dot_five); |
__ Mov(result, 1); // +0.5. |
@@ -4057,9 +4055,6 @@ void LCodeGen::DoMathRound(LMathRound* instr) { |
__ Csel(result, result, xzr, eq); |
__ B(&done); |
- __ Bind(&deopt); |
- Deoptimize(instr->environment()); |
- |
__ Bind(&try_rounding); |
// Since we're providing a 32-bit result, we can implement ties-to-infinity by |
// adding 0.5 to the input, then taking the floor of the result. This does not |
@@ -4074,7 +4069,7 @@ void LCodeGen::DoMathRound(LMathRound* instr) { |
// * the result is not representable using a 32-bit integer. |
__ Fcmp(input, 0.0); |
__ Ccmp(result, Operand(result.W(), SXTW), NoFlag, vc); |
- __ B(ne, &deopt); |
+ DeoptimizeIf(ne, instr->environment()); |
__ Bind(&done); |
} |