Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(344)

Side by Side Diff: pkg/compiler/lib/src/deferred_load.dart

Issue 830703004: Emit to StreamCodeOutput instead of CodeBuffer. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library deferred_load; 5 library deferred_load;
6 6
7 import 'constants/expressions.dart'; 7 import 'constants/expressions.dart';
8 import 'constants/values.dart' show 8 import 'constants/values.dart' show
9 ConstantValue, 9 ConstantValue,
10 ConstructedConstantValue, 10 ConstructedConstantValue,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 /// 67 ///
68 /// Whenever a deferred Element is shared between several deferred imports it is 68 /// Whenever a deferred Element is shared between several deferred imports it is
69 /// in an output unit with those imports in the [imports] Set. 69 /// in an output unit with those imports in the [imports] Set.
70 /// 70 ///
71 /// OutputUnits are equal if their [imports] are equal. 71 /// OutputUnits are equal if their [imports] are equal.
72 class OutputUnit { 72 class OutputUnit {
73 /// The deferred imports that will load this output unit when one of them is 73 /// The deferred imports that will load this output unit when one of them is
74 /// loaded. 74 /// loaded.
75 final Setlet<Import> imports = new Setlet<Import>(); 75 final Setlet<Import> imports = new Setlet<Import>();
76 76
77 /// `true` is this the output unit for the main output file.
floitsch 2015/01/09 16:35:19 Not english.
Johnni Winther 2015/01/13 08:53:05 Done.
78 final bool isMainOutput;
79
77 /// A unique name representing this [OutputUnit]. 80 /// A unique name representing this [OutputUnit].
78 /// Based on the set of [imports]. 81 /// Based on the set of [imports].
79 String name; 82 String name;
80 83
84 OutputUnit({this.isMainOutput: false});
85
81 String toString() => "OutputUnit($name)"; 86 String toString() => "OutputUnit($name)";
82 87
83 bool operator==(OutputUnit other) { 88 bool operator==(OutputUnit other) {
84 return imports.length == other.imports.length && 89 return imports.length == other.imports.length &&
85 imports.containsAll(other.imports); 90 imports.containsAll(other.imports);
86 } 91 }
87 92
88 int get hashCode { 93 int get hashCode {
89 int sum = 0; 94 int sum = 0;
90 for (Import import in imports) { 95 for (Import import in imports) {
(...skipping 12 matching lines...) Expand all
103 108
104 /// DeferredLibrary from dart:async 109 /// DeferredLibrary from dart:async
105 ClassElement get deferredLibraryClass => compiler.deferredLibraryClass; 110 ClassElement get deferredLibraryClass => compiler.deferredLibraryClass;
106 111
107 /// A synthetic [Import] representing the loading of the main 112 /// A synthetic [Import] representing the loading of the main
108 /// program. 113 /// program.
109 final Import _fakeMainImport = new Import(null, new LiteralString(null, 114 final Import _fakeMainImport = new Import(null, new LiteralString(null,
110 new LiteralDartString("main")), null, null, null); 115 new LiteralDartString("main")), null, null, null);
111 116
112 /// The OutputUnit that will be loaded when the program starts. 117 /// The OutputUnit that will be loaded when the program starts.
113 final OutputUnit mainOutputUnit = new OutputUnit(); 118 final OutputUnit mainOutputUnit = new OutputUnit(isMainOutput: true);
114 119
115 /// A set containing (eventually) all output units that will result from the 120 /// A set containing (eventually) all output units that will result from the
116 /// program. 121 /// program.
117 final Set<OutputUnit> allOutputUnits = new Set<OutputUnit>(); 122 final Set<OutputUnit> allOutputUnits = new Set<OutputUnit>();
118 123
119 /// Will be `true` if the program contains deferred libraries. 124 /// Will be `true` if the program contains deferred libraries.
120 bool isProgramSplit = false; 125 bool isProgramSplit = false;
121 126
122 /// A mapping from the name of a defer import to all the output units it 127 /// A mapping from the name of a defer import to all the output units it
123 /// depends on in a list of lists to be loaded in the order they appear. 128 /// depends on in a list of lists to be loaded in the order they appear.
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 Element maybePrefix = elements[identifier]; 763 Element maybePrefix = elements[identifier];
759 if (maybePrefix != null && maybePrefix.isPrefix) { 764 if (maybePrefix != null && maybePrefix.isPrefix) {
760 PrefixElement prefixElement = maybePrefix; 765 PrefixElement prefixElement = maybePrefix;
761 if (prefixElement.isDeferred) { 766 if (prefixElement.isDeferred) {
762 return prefixElement; 767 return prefixElement;
763 } 768 }
764 } 769 }
765 return null; 770 return null;
766 } 771 }
767 } 772 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698