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..36c3a8866e700e07259caa102cb28940ec35a44c 100644 |
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
@@ -3021,13 +3021,13 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { |
mainBuffer.write(';'); |
} |
mainBuffer |
- ..write(REFLECTION_DATA_PARSER) |
+ ..write(getReflectionDataParser()) |
..write('([$n'); |
emitDeferredPreambleWhenEmpty(deferredBuffer); |
deferredBuffer.add('\$\$$_=$_{};$n'); |
deferredBuffer |
- ..write(REFLECTION_DATA_PARSER) |
+ ..write(getReflectionDataParser()) |
..write('([$n'); |
var sortedLibraries = Elements.sortedByPosition(libraryBuffers.keys); |
for (LibraryElement library in sortedLibraries) { |
@@ -3212,25 +3212,10 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { |
MessageKind.GENERIC.error({'text': message}), |
api.Diagnostic.WARNING); |
} |
-} |
- |
-const String GENERATED_BY = """ |
-// Generated by dart2js, the Dart to JavaScript compiler. |
-"""; |
- |
-const String HOOKS_API_USAGE = """ |
-// The code supports the following hooks: |
-// dartPrint(message) - if this function is defined it is called |
-// instead of the Dart [print] method. |
-// dartMainRunner(main) - if this function is defined, the Dart [main] |
-// method will not be invoked directly. |
-// Instead, a closure that will invoke [main] is |
-// passed to [dartMainRunner]. |
-"""; |
-// TODO(ahe): This code should be integrated in finishClasses. |
-// TODO(ahe): The uri field below is fake. |
-const String REFLECTION_DATA_PARSER = r''' |
+ // TODO(ahe): This code should be integrated in finishClasses. |
+ String getReflectionDataParser() { |
+ return ''' |
(function (reflectionData) { |
if (!init.libraries) init.libraries = []; |
var libraries = init.libraries; |
@@ -3247,10 +3232,10 @@ const String REFLECTION_DATA_PARSER = r''' |
if (!hasOwnProperty.call(descriptor, property)) continue; |
var element = descriptor[property]; |
if (typeof element === "function") { |
- $[property] = element; |
+ ${namer.CURRENT_ISOLATE}[property] = element; |
functions.push(property); |
} else { |
- $$[property] = element; |
+ $classesCollector[property] = element; |
classes.push(property); |
classes.push(element[""]); |
} |
@@ -3258,3 +3243,19 @@ const String REFLECTION_DATA_PARSER = r''' |
libraries.push([name, uri, classes, functions]); |
} |
})'''; |
+ } |
+} |
+ |
+const String GENERATED_BY = """ |
+// Generated by dart2js, the Dart to JavaScript compiler. |
+"""; |
+ |
+const String HOOKS_API_USAGE = """ |
+// The code supports the following hooks: |
+// dartPrint(message) - if this function is defined it is called |
+// instead of the Dart [print] method. |
+// dartMainRunner(main) - if this function is defined, the Dart [main] |
+// method will not be invoked directly. |
+// Instead, a closure that will invoke [main] is |
+// passed to [dartMainRunner]. |
+"""; |