Revision: 14617
Author: [email protected]
Date: Fri May 10 05:45:14 2013
Log: Robustification: Always assign an environment to LModI when a
deopt is possible.
Currently things only work because of a very fragile interaction between
minus
zero propagation and range analysis.
[email protected]
Review URL: https://codereview.chromium.org/14904008
http://code.google.com/p/v8/source/detail?r=14617
Modified:
/branches/bleeding_edge/src/arm/lithium-arm.cc
/branches/bleeding_edge/src/ia32/lithium-ia32.cc
/branches/bleeding_edge/src/mips/lithium-mips.cc
/branches/bleeding_edge/src/x64/lithium-x64.cc
=======================================
--- /branches/bleeding_edge/src/arm/lithium-arm.cc Fri May 10 02:52:08 2013
+++ /branches/bleeding_edge/src/arm/lithium-arm.cc Fri May 10 05:45:14 2013
@@ -1459,7 +1459,8 @@
}
if (instr->CheckFlag(HValue::kBailoutOnMinusZero) ||
- instr->CheckFlag(HValue::kCanBeDivByZero)) {
+ instr->CheckFlag(HValue::kCanBeDivByZero) ||
+ instr->CheckFlag(HValue::kCanOverflow)) {
return AssignEnvironment(DefineAsRegister(mod));
} else {
return DefineAsRegister(mod);
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.cc Fri May 10 02:52:08
2013
+++ /branches/bleeding_edge/src/ia32/lithium-ia32.cc Fri May 10 05:45:14
2013
@@ -1538,7 +1538,8 @@
}
return (instr->CheckFlag(HValue::kBailoutOnMinusZero) ||
- instr->CheckFlag(HValue::kCanBeDivByZero))
+ instr->CheckFlag(HValue::kCanBeDivByZero) ||
+ instr->CheckFlag(HValue::kCanOverflow))
? AssignEnvironment(result)
: result;
} else if (instr->representation().IsTagged()) {
=======================================
--- /branches/bleeding_edge/src/mips/lithium-mips.cc Fri May 10 02:52:08
2013
+++ /branches/bleeding_edge/src/mips/lithium-mips.cc Fri May 10 05:45:14
2013
@@ -1377,7 +1377,8 @@
}
if (instr->CheckFlag(HValue::kBailoutOnMinusZero) ||
- instr->CheckFlag(HValue::kCanBeDivByZero)) {
+ instr->CheckFlag(HValue::kCanBeDivByZero) ||
+ instr->CheckFlag(HValue::kCanOverflow)) {
return AssignEnvironment(DefineAsRegister(mod));
} else {
return DefineAsRegister(mod);
=======================================
--- /branches/bleeding_edge/src/x64/lithium-x64.cc Fri May 10 02:52:08 2013
+++ /branches/bleeding_edge/src/x64/lithium-x64.cc Fri May 10 05:45:14 2013
@@ -1451,7 +1451,8 @@
}
return (instr->CheckFlag(HValue::kBailoutOnMinusZero) ||
- instr->CheckFlag(HValue::kCanBeDivByZero))
+ instr->CheckFlag(HValue::kCanBeDivByZero) ||
+ instr->CheckFlag(HValue::kCanOverflow))
? AssignEnvironment(result)
: result;
} else if (instr->representation().IsTagged()) {
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.