| Index: pkg/compiler/lib/src/ssa/nodes.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
|
| index df84debec05353b06d1ae50f8300a4ca754b6c68..86be86b83a4d5791fa6722fc39149b0e0b8b9365 100644
|
| --- a/pkg/compiler/lib/src/ssa/nodes.dart
|
| +++ b/pkg/compiler/lib/src/ssa/nodes.dart
|
| @@ -97,11 +97,6 @@ abstract class HVisitor<R> {
|
| R visitTypeConversion(HTypeConversion node);
|
| R visitTypeKnown(HTypeKnown node);
|
| R visitYield(HYield node);
|
| - R visitReadTypeVariable(HReadTypeVariable node);
|
| - R visitFunctionType(HFunctionType node);
|
| - R visitVoidType(HVoidType node);
|
| - R visitInterfaceType(HInterfaceType node);
|
| - R visitDynamicType(HDynamicType node);
|
|
|
| R visitTypeInfoReadRaw(HTypeInfoReadRaw node);
|
| R visitTypeInfoReadVariable(HTypeInfoReadVariable node);
|
| @@ -416,11 +411,6 @@ class HBaseVisitor extends HGraphVisitor implements HVisitor {
|
| visitIsViaInterceptor(HIsViaInterceptor node) => visitInstruction(node);
|
| visitTypeConversion(HTypeConversion node) => visitCheck(node);
|
| visitTypeKnown(HTypeKnown node) => visitCheck(node);
|
| - visitReadTypeVariable(HReadTypeVariable node) => visitInstruction(node);
|
| - visitFunctionType(HFunctionType node) => visitInstruction(node);
|
| - visitVoidType(HVoidType node) => visitInstruction(node);
|
| - visitInterfaceType(HInterfaceType node) => visitInstruction(node);
|
| - visitDynamicType(HDynamicType node) => visitInstruction(node);
|
| visitAwait(HAwait node) => visitInstruction(node);
|
| visitYield(HYield node) => visitInstruction(node);
|
|
|
| @@ -880,11 +870,7 @@ abstract class HInstruction implements Spannable {
|
| static const int IS_TYPECODE = 28;
|
| static const int INVOKE_DYNAMIC_TYPECODE = 29;
|
| static const int SHIFT_RIGHT_TYPECODE = 30;
|
| - static const int READ_TYPE_VARIABLE_TYPECODE = 31;
|
| - static const int FUNCTION_TYPE_TYPECODE = 32;
|
| - 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;
|
| static const int IS_VIA_INTERCEPTOR_TYPECODE = 37;
|
|
|
| @@ -2877,11 +2863,7 @@ class HTypeConversion extends HCheck {
|
|
|
| HInstruction get typeRepresentation => inputs[1];
|
|
|
| - bool get usesMethodOnType =>
|
| - typeExpression != null && typeExpression.isFunctionType;
|
| -
|
| - HInstruction get checkedInput =>
|
| - usesMethodOnType ? inputs[1] : super.checkedInput;
|
| + HInstruction get checkedInput => super.checkedInput;
|
|
|
| HInstruction convertType(ClosedWorld closedWorld, DartType type, int kind) {
|
| if (typeExpression == type) {
|
| @@ -3405,105 +3387,3 @@ class HTypeInfoExpression extends HInstruction {
|
| }
|
| }
|
| }
|
| -
|
| -class HReadTypeVariable extends HInstruction {
|
| - /// The type variable being read.
|
| - final TypeVariableType dartType;
|
| -
|
| - final bool hasReceiver;
|
| -
|
| - HReadTypeVariable(
|
| - this.dartType, HInstruction receiver, TypeMask instructionType)
|
| - : hasReceiver = true,
|
| - super(<HInstruction>[receiver], instructionType) {
|
| - setUseGvn();
|
| - }
|
| -
|
| - HReadTypeVariable.noReceiver(
|
| - this.dartType, HInstruction typeArgument, TypeMask instructionType)
|
| - : hasReceiver = false,
|
| - super(<HInstruction>[typeArgument], instructionType) {
|
| - setUseGvn();
|
| - }
|
| -
|
| - accept(HVisitor visitor) => visitor.visitReadTypeVariable(this);
|
| -
|
| - bool canThrow() => false;
|
| -
|
| - int typeCode() => HInstruction.READ_TYPE_VARIABLE_TYPECODE;
|
| - bool typeEquals(HInstruction other) => other is HReadTypeVariable;
|
| -
|
| - bool dataEquals(HReadTypeVariable other) {
|
| - return dartType == other.dartType && hasReceiver == other.hasReceiver;
|
| - }
|
| -}
|
| -
|
| -abstract class HRuntimeType extends HInstruction {
|
| - final DartType dartType;
|
| -
|
| - HRuntimeType(
|
| - List<HInstruction> inputs, this.dartType, TypeMask instructionType)
|
| - : super(inputs, instructionType) {
|
| - setUseGvn();
|
| - }
|
| -
|
| - bool canThrow() => false;
|
| -
|
| - int typeCode() {
|
| - throw 'abstract method';
|
| - }
|
| -
|
| - bool typeEquals(HInstruction other) {
|
| - throw 'abstract method';
|
| - }
|
| -
|
| - bool dataEquals(HRuntimeType other) {
|
| - return dartType == other.dartType;
|
| - }
|
| -}
|
| -
|
| -class HFunctionType extends HRuntimeType {
|
| - HFunctionType(List<HInstruction> inputs, FunctionType dartType,
|
| - TypeMask instructionType)
|
| - : super(inputs, dartType, instructionType);
|
| -
|
| - accept(HVisitor visitor) => visitor.visitFunctionType(this);
|
| -
|
| - int typeCode() => HInstruction.FUNCTION_TYPE_TYPECODE;
|
| -
|
| - bool typeEquals(HInstruction other) => other is HFunctionType;
|
| -}
|
| -
|
| -class HVoidType extends HRuntimeType {
|
| - HVoidType(VoidType dartType, TypeMask instructionType)
|
| - : super(const <HInstruction>[], dartType, instructionType);
|
| -
|
| - accept(HVisitor visitor) => visitor.visitVoidType(this);
|
| -
|
| - int typeCode() => HInstruction.VOID_TYPE_TYPECODE;
|
| -
|
| - bool typeEquals(HInstruction other) => other is HVoidType;
|
| -}
|
| -
|
| -class HInterfaceType extends HRuntimeType {
|
| - HInterfaceType(List<HInstruction> inputs, InterfaceType dartType,
|
| - TypeMask instructionType)
|
| - : super(inputs, dartType, instructionType);
|
| -
|
| - accept(HVisitor visitor) => visitor.visitInterfaceType(this);
|
| -
|
| - int typeCode() => HInstruction.INTERFACE_TYPE_TYPECODE;
|
| -
|
| - bool typeEquals(HInstruction other) => other is HInterfaceType;
|
| -}
|
| -
|
| -class HDynamicType extends HRuntimeType {
|
| - HDynamicType(DynamicType dartType, TypeMask instructionType)
|
| - : super(const <HInstruction>[], dartType, instructionType);
|
| -
|
| - accept(HVisitor visitor) => visitor.visitDynamicType(this);
|
| -
|
| - int typeCode() => HInstruction.DYNAMIC_TYPE_TYPECODE;
|
| -
|
| - bool typeEquals(HInstruction other) => other is HDynamicType;
|
| -}
|
|
|