| 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)));
 | 
| -  }
 | 
| -}
 | 
| 
 |