Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
| diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
| index a9e49c0f3a94f4bd2e4135cc72eef5626c55527f..40e4dc95f16a7ae45485b73bbdd0453d73def7ac 100644 |
| --- a/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
| +++ b/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
| @@ -196,6 +196,29 @@ class ConstantEmitter implements ConstantVisitor { |
| } |
| } |
| + void visitType(TypeConstant constant) { |
| + if (shouldEmitCanonicalVersion) { |
| + emitCanonicalVersion(constant); |
| + } else { |
| + SourceString helperSourceName = |
| + const SourceString('createRuntimeType'); |
|
ngeoffray
2012/11/19 16:54:09
See my comment in compile_time_constant.dart. I'd
karlklose
2012/11/20 14:04:38
http://code.google.com/p/dart/issues/detail?id=682
|
| + Element helper = compiler.findHelper(helperSourceName); |
| + JavaScriptBackend backend = compiler.backend; |
| + String helperName = backend.namer.getName(helper); |
| + DartType type = constant.representedType; |
| + Element element = type.element; |
| + String typeName; |
| + if (type.kind == TypeKind.INTERFACE) { |
| + typeName = |
| + compiler.codegenWorld.rti.generateRuntimeTypeString(element, 0); |
| + } else { |
| + assert(type.kind == TypeKind.TYPEDEF); |
| + typeName = element.name.slowToString(); |
| + } |
| + buffer.add("${namer.CURRENT_ISOLATE}.$helperName('$typeName')"); |
| + } |
| + } |
| + |
| void visitConstructed(ConstructedConstant constant) { |
| if (shouldEmitCanonicalVersion) { |
| emitCanonicalVersion(constant); |