MIPS: Skip some conditional deopts for Div/Mul when all uses are truncating.

Port r15060 (8cdd204)

Original commit message:
- set "can be minus zero" flag properly so minus-zero checks are skipped
- skip "integer result?" check in division code when uses are truncating
- drive-by cleanup: consolidated computation of kCanOverflow flag for Add/Sub into range inference phase

BUG=v8:2132
R=plind44@gmail.com

Review URL: https://codereview.chromium.org/16645007

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
plind44@gmail.com 2013-06-11 17:41:03 +00:00
parent c2dab39b71
commit 0edbf9e709

View File

@ -1246,8 +1246,10 @@ void LCodeGen::DoDivI(LDivI* instr) {
__ bind(&left_not_min_int);
}
__ mfhi(result);
DeoptimizeIf(ne, instr->environment(), result, Operand(zero_reg));
if (!instr->hydrogen()->CheckFlag(HInstruction::kAllUsesTruncatingToInt32)) {
__ mfhi(result);
DeoptimizeIf(ne, instr->environment(), result, Operand(zero_reg));
}
__ mflo(result);
}