Chromium Code Reviews| Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| index 6ecbfd5099e1e4ab723fd545a494966e5544cb0b..683718e331ef71bb10d13f61f3394af35715f4e9 100644 |
| --- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| +++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| @@ -2940,6 +2940,14 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { |
| if (compiler.enableMinification) buffer.write('\n'); |
| } |
| + jsAst.Fun buildMetadataFunction(Element element) { |
|
kasperl
2013/05/29 06:25:06
Add a comment that explains what the metadata func
ahe
2013/05/30 11:41:15
Done.
|
| + var metadata = []; |
| + for (Link link = element.metadata; !link.isEmpty; link = link.tail) { |
| + metadata.add(constantReference(link.head.value)); |
| + } |
| + return js.fun([], [js.return_(new jsAst.ArrayInitializer.from(metadata))]); |
| + } |
| + |
| String assembleProgram() { |
| measure(() { |
| // Compute the required type checks to know which classes need a |
| @@ -3045,6 +3053,9 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { |
| mainBuffer |
| ..write('["${library.getLibraryOrScriptName()}",$_') |
| ..write('"${uri}",$_') |
| + ..write( |
| + jsAst.prettyPrint(buildMetadataFunction(library), compiler)) |
| + ..write(',$_') |
| ..write('{$n') |
| ..addBuffer(buffer) |
| ..write('}],$n'); |
| @@ -3054,6 +3065,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { |
| deferredBuffer |
| ..write('["${library.getLibraryOrScriptName()}",$_') |
| ..write('"${uri}",$_') |
| + ..write('[],$_') |
| ..write('{$n') |
| ..addBuffer(buffer) |
| ..write('}],$n'); |
| @@ -3240,7 +3252,8 @@ const String REFLECTION_DATA_PARSER = r''' |
| var data = reflectionData[i]; |
| var name = data[0]; |
| var uri = data[1]; |
| - var descriptor = data[2]; |
| + var metadata = data[2]; |
| + var descriptor = data[3]; |
| var classes = []; |
| var functions = []; |
| for (var property in descriptor) { |
| @@ -3255,6 +3268,6 @@ const String REFLECTION_DATA_PARSER = r''' |
| classes.push(element[""]); |
| } |
| } |
| - libraries.push([name, uri, classes, functions]); |
| + libraries.push([name, uri, classes, functions, metadata]); |
| } |
| })'''; |