| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 9ec80f819a062dbf3078fc4a0487b765177a19cb..d090f9203f66046ff8f4eecba405867802e3da87 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -1394,10 +1394,18 @@ void LCodeGen::DoDivI(LDivI* instr) {
|
| if (test_value != 0) {
|
| if (instr->hydrogen()->CheckFlag(
|
| HInstruction::kAllUsesTruncatingToInt32)) {
|
| + Label negative, done;
|
| __ cmp(dividend, Operand(0));
|
| + __ b(lt, &negative);
|
| + __ mov(dividend, Operand(dividend, ASR, power));
|
| + if (divisor < 0) __ rsb(dividend, dividend, Operand(0));
|
| + __ jmp(&done);
|
| +
|
| + __ bind(&negative);
|
| __ rsb(dividend, dividend, Operand(0), LeaveCC, lt);
|
| __ mov(dividend, Operand(dividend, ASR, power));
|
| - if (divisor > 0) __ rsb(dividend, dividend, Operand(0), LeaveCC, lt);
|
| + if (divisor > 0) __ rsb(dividend, dividend, Operand(0));
|
| + __ bind(&done);
|
| return; // Don't fall through to "__ rsb" below.
|
| } else {
|
| // Deoptimize if remainder is not 0.
|
|
|