Index: sdk/lib/_internal/compiler/implementation/ssa/nodes.dart |
=================================================================== |
--- sdk/lib/_internal/compiler/implementation/ssa/nodes.dart (revision 17449) |
+++ sdk/lib/_internal/compiler/implementation/ssa/nodes.dart (working copy) |
@@ -769,28 +769,29 @@ |
static const int INTERCEPTOR_TYPECODE = 4; |
static const int ADD_TYPECODE = 5; |
static const int DIVIDE_TYPECODE = 6; |
- static const int MULTIPLY_TYPECODE = 8; |
- static const int SUBTRACT_TYPECODE = 9; |
- static const int SHIFT_LEFT_TYPECODE = 11; |
- static const int BIT_OR_TYPECODE = 13; |
- static const int BIT_AND_TYPECODE = 14; |
- static const int BIT_XOR_TYPECODE = 15; |
- static const int NEGATE_TYPECODE = 16; |
- static const int BIT_NOT_TYPECODE = 17; |
- static const int NOT_TYPECODE = 18; |
- static const int IDENTITY_TYPECODE = 20; |
- static const int GREATER_TYPECODE = 21; |
- static const int GREATER_EQUAL_TYPECODE = 22; |
- static const int LESS_TYPECODE = 23; |
- static const int LESS_EQUAL_TYPECODE = 24; |
- static const int STATIC_TYPECODE = 25; |
- static const int STATIC_STORE_TYPECODE = 26; |
- static const int FIELD_GET_TYPECODE = 27; |
- static const int TYPE_CONVERSION_TYPECODE = 28; |
- static const int BAILOUT_TARGET_TYPECODE = 29; |
- static const int INVOKE_STATIC_TYPECODE = 30; |
- static const int INVOKE_DYNAMIC_GETTER_TYPECODE = 31; |
- static const int INDEX_TYPECODE = 32; |
+ static const int MULTIPLY_TYPECODE = 7; |
+ static const int SUBTRACT_TYPECODE = 8; |
+ static const int SHIFT_LEFT_TYPECODE = 9; |
+ static const int BIT_OR_TYPECODE = 10; |
+ static const int BIT_AND_TYPECODE = 11; |
+ static const int BIT_XOR_TYPECODE = 12; |
+ static const int NEGATE_TYPECODE = 13; |
+ static const int BIT_NOT_TYPECODE = 14; |
+ static const int NOT_TYPECODE = 15; |
+ static const int IDENTITY_TYPECODE = 16; |
+ static const int GREATER_TYPECODE = 17; |
+ static const int GREATER_EQUAL_TYPECODE = 18; |
+ static const int LESS_TYPECODE = 19; |
+ static const int LESS_EQUAL_TYPECODE = 20; |
+ static const int STATIC_TYPECODE = 21; |
+ static const int STATIC_STORE_TYPECODE = 22; |
+ static const int FIELD_GET_TYPECODE = 23; |
+ static const int TYPE_CONVERSION_TYPECODE = 24; |
+ static const int BAILOUT_TARGET_TYPECODE = 25; |
+ static const int INVOKE_STATIC_TYPECODE = 26; |
+ static const int INDEX_TYPECODE = 27; |
+ static const int IS_TYPECODE = 28; |
+ static const int INVOKE_DYNAMIC_TYPECODE = 29; |
HInstruction(this.inputs) : id = idCounter++, usedBy = <HInstruction>[]; |
@@ -1327,6 +1328,13 @@ |
// parameter to the call. |
return inputs.length - 2 == selector.argumentCount; |
} |
+ |
+ int typeCode() => HInstruction.INVOKE_DYNAMIC_TYPECODE; |
+ bool typeEquals(other) => other is HInvokeDynamic; |
+ bool dataEquals(HInvokeDynamic other) { |
+ return selector == other.selector |
+ && element == other.element; |
+ } |
} |
class HInvokeClosure extends HInvokeDynamic { |
@@ -1390,10 +1398,6 @@ |
} |
toString() => 'invoke dynamic getter: $selector'; |
accept(HVisitor visitor) => visitor.visitInvokeDynamicGetter(this); |
- |
- int typeCode() => HInstruction.INVOKE_DYNAMIC_GETTER_TYPECODE; |
- bool typeEquals(other) => other is HInvokeDynamicGetter; |
- bool dataEquals(HInvokeDynamicGetter other) => selector == other.selector; |
} |
class HInvokeDynamicSetter extends HInvokeDynamicField { |
@@ -2237,6 +2241,13 @@ |
accept(HVisitor visitor) => visitor.visitIs(this); |
toString() => "$expression is $typeExpression"; |
+ |
+ int typeCode() => HInstruction.IS_TYPECODE; |
+ bool typeEquals(HInstruction other) => other is HIs; |
+ bool dataEquals(HIs other) { |
+ return typeExpression == other.typeExpression |
+ && nullOk == other.nullOk; |
+ } |
} |
class HTypeConversion extends HCheck { |