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 54ed1bc9315df33fbec3f24c2491b7b2afae82bf..a522228aa910b3eac405c8326b6a415178e8ef2a 100644 |
--- a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart |
+++ b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart |
@@ -3355,22 +3355,19 @@ 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()) { |
ngeoffray
2012/11/19 16:54:09
element.impliesType
karlklose
2012/11/20 14:04:38
Type variables imply types. The case for these is
|
+ // TODO(karlklose): add type representation |
+ ConstantHandler handler = compiler.constantHandler; |
+ Node constantNode = node.isCall ? node : node; |
ngeoffray
2012/11/19 16:54:09
What is this line above?
karlklose
2012/11/20 14:04:38
Debug code, removed.
|
+ Constant constant = handler.compileNodeWithDefinitions(constantNode, |
+ 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 |