Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart |
| diff --git a/sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart |
| index 92c0156325d3392253a5ee2faa22db0d9f4d731c..ae51683a4033842fc85d013952a2f73ba610abbf 100644 |
| --- a/sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart |
| +++ b/sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart |
| @@ -23,8 +23,6 @@ class DartBackend extends Backend { |
| final bool stripAsserts; |
| // TODO(antonm): make available from command-line options. |
| final bool outputAst = false; |
| - final Map<Node, String> renames; |
| - final Map<LibraryElement, String> imports; |
| final Map<ClassNode, List<Node>> memberNodes; |
| Map<Element, LibraryElement> reexportingLibraries; |
| @@ -105,8 +103,6 @@ class DartBackend extends Backend { |
| DartBackend(Compiler compiler, List<String> strips) |
| : tasks = <CompilerTask>[], |
| - renames = new Map<Node, String>(), |
| - imports = new Map<LibraryElement, String>(), |
| memberNodes = new Map<ClassNode, List<Node>>(), |
| reexportingLibraries = <Element, LibraryElement>{}, |
| forceStripTypes = strips.indexOf('types') != -1, |
| @@ -396,14 +392,15 @@ class DartBackend extends Backend { |
| bool shouldCutDeclarationTypes = forceStripTypes |
| || (compiler.enableMinification |
| && isSafeToRemoveTypeDeclarations(classMembers)); |
| - renamePlaceholders( |
| - compiler, collector, renames, imports, |
| - fixedMemberNames, reexportingLibraries, |
| - shouldCutDeclarationTypes, |
| - uniqueGlobalNaming: useMirrorHelperLibrary); |
| + |
| + PlaceholderRenamer placeholderRenamer = |
| + new PlaceholderRenamer(compiler, fixedMemberNames, reexportingLibraries, |
| + cutDeclarationTypes: shouldCutDeclarationTypes); |
|
jgruber1
2014/08/07 15:15:04
Does cutDeclarationTypes have to be optional?
sigurdm
2014/08/14 09:39:16
No - it is named because named parameters are much
|
| + |
| + placeholderRenamer.computeRenamings(collector); |
| // Sort elements. |
| - final sortedTopLevels = sortElements(topLevelElements); |
| + final List<Element> sortedTopLevels = sortElements(topLevelElements); |
| final sortedClassMembers = new Map<ClassElement, List<Element>>(); |
| classMembers.forEach((classElement, members) { |
| sortedClassMembers[classElement] = sortElements(members); |
| @@ -430,7 +427,7 @@ class DartBackend extends Backend { |
| return; |
| } |
| - final topLevelNodes = <Node>[]; |
| + final List<Node> topLevelNodes = <Node>[]; |
| for (final element in sortedTopLevels) { |
| topLevelNodes.add(elementAsts[element].ast); |
| if (element.isClass && !element.isMixinApplication) { |
| @@ -443,18 +440,38 @@ class DartBackend extends Backend { |
| } |
| if (useMirrorHelperLibrary) { |
| - mirrorRenamer.addRenames(renames, topLevelNodes, collector); |
| + mirrorRenamer.addRenames(placeholderRenamer.renames, |
| + topLevelNodes, collector); |
| } |
| - final unparser = new EmitterUnparser(renames, stripTypes: forceStripTypes, |
| - minify: compiler.enableMinification); |
| - emitCode(unparser, imports, topLevelNodes, memberNodes); |
| + final unparser = new EmitterUnparser(placeholderRenamer.renames, |
| + stripTypes: forceStripTypes, |
| + minify: compiler.enableMinification); |
| String assembledCode = unparser.result; |
| compiler.outputProvider('', 'dart') |
| ..add(assembledCode) |
| ..close(); |
| compiler.assembledCode = assembledCode; |
| + for(LibraryElement library in placeholderRenamer.platformImports) { |
| + if (library.isPlatformLibrary && !library.isInternalLibrary) { |
| + unparser.unparseImportTag(library.canonicalUri.toString()); |
| + } |
| + } |
| + for (int i = 0; i < sortedTopLevels.length; i++) { |
| + Element element = sortedTopLevels[i]; |
| + Node node = topLevelNodes[i]; |
| + if (node is ClassNode) { |
| + // TODO(smok): Filter out default constructors here. |
| + unparser.unparseClassWithBody(node, memberNodes[node]); |
| + } else { |
| + unparser.unparse(node); |
| + } |
| + unparser.newline(); |
| + } |
| + compiler.outputProvider("", "dart") |
| + ..add(unparser.result) |
| + ..close(); |
| // Output verbose info about size ratio of resulting bundle to all |
| // referenced non-platform sources. |
| logResultBundleSizeInfo(topLevelElements); |