| Index: sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| index 98c847a13a4fedff30956db6004861b17b9a1749..31aa661b9dfd29fc4f8681cc4355672433582897 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| @@ -977,7 +977,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| parameters = new Map<Element, HInstruction>(),
|
| sourceElementStack = <Element>[work.element],
|
| inliningStack = <InliningState>[],
|
| - rti = builder.compiler.codegenWorld.rti,
|
| + rti = builder.backend.rti,
|
| super(work.resolutionTree) {
|
| localsHandler = new LocalsHandler(this);
|
| }
|
| @@ -2646,7 +2646,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
|
|
| DartType type = elements.getType(typeAnnotation);
|
| HInstruction typeInfo = null;
|
| - if (compiler.codegenWorld.rti.hasTypeArguments(type)) {
|
| + if (rti.hasTypeArguments(type)) {
|
| pushInvokeHelper1(interceptors.getGetRuntimeTypeInfo(), expression);
|
| typeInfo = pop();
|
| }
|
| @@ -3381,22 +3381,17 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
|
|
| visitTypeReferenceSend(Send node) {
|
| Element element = elements[node];
|
| - HInstruction name;
|
| - Element helper =
|
| - compiler.findHelper(const SourceString('createRuntimeType'));
|
| - if (element.isClass()) {
|
| - String string = rti.generateRuntimeTypeString(element, 0);
|
| - name = addConstantString(node.selector, string);
|
| - } else if (element.isTypedef()) {
|
| - // TODO(karlklose): implement support for type variables in typedefs.
|
| - name = addConstantString(node.selector, rti.getName(element));
|
| + if (element.isClass() || element.isTypedef()) {
|
| + // TODO(karlklose): add type representation
|
| + ConstantHandler handler = compiler.constantHandler;
|
| + Constant constant = handler.compileNodeWithDefinitions(node, elements);
|
| + stack.add(graph.addConstant(constant));
|
| } else if (element.isTypeVariable()) {
|
| // TODO(6248): implement support for type variables.
|
| compiler.unimplemented('first class type for type variable', node: node);
|
| } else {
|
| - internalError('unexpected element $element', node: node);
|
| + internalError('unexpected element kind $element', node: node);
|
| }
|
| - pushInvokeHelper1(helper, name);
|
| if (node.isCall) {
|
| // This send is of the form 'e(...)', where e is resolved to a type
|
| // reference. We create a regular closure call on the result of the type
|
|
|