Index: pkg/compiler/lib/src/ssa/graph_builder.dart |
diff --git a/pkg/compiler/lib/src/ssa/graph_builder.dart b/pkg/compiler/lib/src/ssa/graph_builder.dart |
index 0af3064f171e78fae6d45512ef6b4488362f9302..ac49027592b6b8152b177ffa8ce8669ed038ba95 100644 |
--- a/pkg/compiler/lib/src/ssa/graph_builder.dart |
+++ b/pkg/compiler/lib/src/ssa/graph_builder.dart |
@@ -189,14 +189,6 @@ abstract class GraphBuilder { |
return new HSubExpressionBlockInformation(expression); |
} |
- HInstruction buildFunctionType(ResolutionFunctionType type) { |
- type.accept(new ReifiedTypeRepresentationBuilder(closedWorld), this); |
- return pop(); |
- } |
- |
- HInstruction buildFunctionTypeConversion( |
- HInstruction original, ResolutionDartType type, int kind); |
- |
/// Returns the current source element. |
/// |
/// The returned element is a declaration element. |
@@ -242,105 +234,3 @@ abstract class GraphBuilder { |
Element get targetElement; |
TypeBuilder get typeBuilder; |
} |
- |
-class ReifiedTypeRepresentationBuilder |
- implements DartTypeVisitor<dynamic, GraphBuilder> { |
- final ClosedWorld closedWorld; |
- |
- ReifiedTypeRepresentationBuilder(this.closedWorld); |
- |
- void visit(ResolutionDartType type, GraphBuilder builder) => |
- type.accept(this, builder); |
- |
- void visitVoidType(ResolutionVoidType type, GraphBuilder builder) { |
- ClassElement cls = builder.backend.helpers.VoidRuntimeType; |
- builder.push(new HVoidType(type, new TypeMask.exact(cls, closedWorld))); |
- } |
- |
- void visitTypeVariableType( |
- ResolutionTypeVariableType type, GraphBuilder builder) { |
- ClassElement cls = builder.backend.helpers.RuntimeType; |
- TypeMask instructionType = new TypeMask.subclass(cls, closedWorld); |
- |
- // TODO(floitsch): this hack maps type variables of generic function |
- // typedefs to dynamic. For example: `typedef F = Function<T>(T)`. |
- if (type is MethodTypeVariableType) { |
- visitDynamicType(const ResolutionDynamicType(), builder); |
- return; |
- } |
- |
- if (!builder.sourceElement.enclosingElement.isClosure && |
- builder.sourceElement.isInstanceMember) { |
- HInstruction receiver = builder.localsHandler.readThis(); |
- builder.push(new HReadTypeVariable(type, receiver, instructionType)); |
- } else { |
- builder.push(new HReadTypeVariable.noReceiver( |
- type, |
- builder.typeBuilder |
- .addTypeVariableReference(type, builder.sourceElement), |
- instructionType)); |
- } |
- } |
- |
- void visitFunctionType(ResolutionFunctionType type, GraphBuilder builder) { |
- type.returnType.accept(this, builder); |
- HInstruction returnType = builder.pop(); |
- List<HInstruction> inputs = <HInstruction>[returnType]; |
- |
- for (ResolutionDartType parameter in type.parameterTypes) { |
- parameter.accept(this, builder); |
- inputs.add(builder.pop()); |
- } |
- |
- for (ResolutionDartType parameter in type.optionalParameterTypes) { |
- parameter.accept(this, builder); |
- inputs.add(builder.pop()); |
- } |
- |
- List<ResolutionDartType> namedParameterTypes = type.namedParameterTypes; |
- List<String> names = type.namedParameters; |
- for (int index = 0; index < names.length; index++) { |
- ast.DartString dartString = new ast.DartString.literal(names[index]); |
- inputs.add( |
- builder.graph.addConstantString(dartString, builder.closedWorld)); |
- namedParameterTypes[index].accept(this, builder); |
- inputs.add(builder.pop()); |
- } |
- |
- ClassElement cls = builder.backend.helpers.RuntimeFunctionType; |
- builder.push( |
- new HFunctionType(inputs, type, new TypeMask.exact(cls, closedWorld))); |
- } |
- |
- void visitMalformedType(MalformedType type, GraphBuilder builder) { |
- visitDynamicType(const ResolutionDynamicType(), builder); |
- } |
- |
- void visitInterfaceType(ResolutionInterfaceType type, GraphBuilder builder) { |
- List<HInstruction> inputs = <HInstruction>[]; |
- for (ResolutionDartType typeArgument in type.typeArguments) { |
- typeArgument.accept(this, builder); |
- inputs.add(builder.pop()); |
- } |
- ClassElement cls; |
- if (type.typeArguments.isEmpty) { |
- cls = builder.backend.helpers.RuntimeTypePlain; |
- } else { |
- cls = builder.backend.helpers.RuntimeTypeGeneric; |
- } |
- builder.push( |
- new HInterfaceType(inputs, type, new TypeMask.exact(cls, closedWorld))); |
- } |
- |
- void visitTypedefType(ResolutionTypedefType type, GraphBuilder builder) { |
- ResolutionDartType unaliased = type.unaliased; |
- if (unaliased is ResolutionTypedefType) throw 'unable to unalias $type'; |
- unaliased.accept(this, builder); |
- } |
- |
- void visitDynamicType(ResolutionDynamicType type, GraphBuilder builder) { |
- JavaScriptBackend backend = builder.compiler.backend; |
- ClassElement cls = backend.helpers.DynamicRuntimeType; |
- builder.push(new HDynamicType(type, new TypeMask.exact(cls, closedWorld))); |
- } |
-} |