Index: sdk/lib/_internal/compiler/implementation/ssa/nodes.dart |
=================================================================== |
--- sdk/lib/_internal/compiler/implementation/ssa/nodes.dart (revision 31017) |
+++ sdk/lib/_internal/compiler/implementation/ssa/nodes.dart (working copy) |
@@ -65,6 +65,7 @@ |
R visitThis(HThis node); |
R visitThrow(HThrow node); |
R visitThrowExpression(HThrowExpression node); |
+ R visitTruncatingDivide(HTruncatingDivide node); |
R visitTry(HTry node); |
R visitTypeConversion(HTypeConversion node); |
R visitTypeKnown(HTypeKnown node); |
@@ -331,6 +332,7 @@ |
visitThis(HThis node) => visitParameterValue(node); |
visitThrow(HThrow node) => visitControlFlow(node); |
visitThrowExpression(HThrowExpression node) => visitInstruction(node); |
+ visitTruncatingDivide(HTruncatingDivide node) => visitBinaryArithmetic(node); |
visitTry(HTry node) => visitControlFlow(node); |
visitIs(HIs node) => visitInstruction(node); |
visitTypeConversion(HTypeConversion node) => visitCheck(node); |
@@ -798,6 +800,7 @@ |
static const int VOID_TYPE_TYPECODE = 33; |
static const int INTERFACE_TYPE_TYPECODE = 34; |
static const int DYNAMIC_TYPE_TYPECODE = 35; |
+ static const int TRUNCATING_DIVIDE_TYPECODE = 36; |
HInstruction(this.inputs, this.instructionType) |
: id = idCounter++, usedBy = <HInstruction>[] { |
@@ -1679,6 +1682,18 @@ |
bool dataEquals(HInstruction other) => true; |
} |
+class HTruncatingDivide extends HBinaryArithmetic { |
+ HTruncatingDivide(left, right, selector, type) |
+ : super(left, right, selector, type); |
+ accept(HVisitor visitor) => visitor.visitTruncatingDivide(this); |
+ |
+ BinaryOperation operation(ConstantSystem constantSystem) |
+ => constantSystem.truncatingDivide; |
+ int typeCode() => HInstruction.TRUNCATING_DIVIDE_TYPECODE; |
+ bool typeEquals(other) => other is HTruncatingDivide; |
+ bool dataEquals(HInstruction other) => true; |
+} |
+ |
/** |
* An [HSwitch] instruction has one input for the incoming |
* value, and one input per constant that it can switch on. |