mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 02:07:06 +00:00
0eb44ec68f
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 . |
||
---|---|---|
.. | ||
dart | ||
data | ||
vm.status |