dart-sdk/runtime/tests/vm
Vyacheslav Egorov 0eb44ec68f Use same range info when emitting code and computing if instruction can deopt.
For BinarySmiOpInstr and ShiftMintOpInstr we use range information to both
decide if instruction can deopt and decide which checks should be emitted
when emitting native code for this instruction.

However because range information is attached to the definition and not
uses it often gets out of sync as we mutate the graph. For example we might
first make a decision that an instruction can't deoptimize based on more
precise range information but then use less precise information in the
backend for deciding which parts of the instruction to emit (because
redifinition or a phi-instruction was removed from the graph). This mismatch
can lead to a crash if less precise information tells backend that one of the
inputs need to be checked - because there is no deoptimization label to jump
to.

This CL is addressing this problem by ensuring that range information is
cached at the use and both ComputeCanDeoptimize() and backend use the same
range information.

Additionally this CL kills overly generic MergedMath instruction and replaces it
with TruncDivModInstr.

BUG=https://github.com/dart-lang/sdk/issues/29620
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2891113002 .
2017-05-21 19:01:49 +02:00
..
dart Use same range info when emitting code and computing if instruction can deopt. 2017-05-21 19:01:49 +02:00
data Sync .gitignore with the corresponding svn properties. 2012-09-10 15:44:25 +00:00
vm.status [infra] Make gclient runhooks gn for Android on supported platforms 2017-05-06 23:52:26 -07:00