Chromium Code Reviews| 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 |