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

Unified Diff: pkg/compiler/lib/src/js_emitter/registry.dart

Issue 851683004: dart2js: register output units explicitly in the program builder. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebase 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/program_builder.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_emitter/registry.dart
diff --git a/pkg/compiler/lib/src/js_emitter/registry.dart b/pkg/compiler/lib/src/js_emitter/registry.dart
index 87fd5534f6060fda9aa949bec47cf99f7a78b25d..b8cafba80f91998acabf71e937d8cb5ae5ec6ea4 100644
--- a/pkg/compiler/lib/src/js_emitter/registry.dart
+++ b/pkg/compiler/lib/src/js_emitter/registry.dart
@@ -78,24 +78,29 @@ class Registry {
LibrariesMap _mapUnitToLibrariesMap(OutputUnit targetUnit) {
if (targetUnit == _lastOutputUnit) return _lastLibrariesMap;
- if (mainLibrariesMap == null) {
- mainLibrariesMap =
- new LibrariesMap.main(_deferredLoadTask.mainOutputUnit);
- }
+ LibrariesMap result = (targetUnit == _mainOutputUnit)
+ ? mainLibrariesMap
+ : _deferredLibrariesMap[targetUnit];
- LibrariesMap result;
- if (targetUnit == _mainOutputUnit) {
- result = mainLibrariesMap;
- } else {
- String name = targetUnit.name;
- result = _deferredLibrariesMap.putIfAbsent(
- targetUnit, () => new LibrariesMap.deferred(targetUnit, name));
- }
+ assert(result != null);
_lastOutputUnit = targetUnit;
_lastLibrariesMap = result;
return result;
}
+ void registerOutputUnit(OutputUnit outputUnit) {
+ if (outputUnit == _mainOutputUnit) {
+ assert(mainLibrariesMap == null);
+ mainLibrariesMap =
+ new LibrariesMap.main(_deferredLoadTask.mainOutputUnit);
+ } else {
+ assert(!_deferredLibrariesMap.containsKey(outputUnit));
+ String name = outputUnit.name;
+ _deferredLibrariesMap[outputUnit] =
+ new LibrariesMap.deferred(outputUnit, name);
+ }
+ }
+
/// Adds all elements to their respective libraries in the correct
/// libraries map.
void registerElements(OutputUnit outputUnit, List<Element> elements) {
@@ -106,9 +111,7 @@ class Registry {
}
void registerConstant(OutputUnit outputUnit, ConstantValue constantValue) {
- // We just need to make sure that the target library map is registered.
- // Otherwise a library map that contains only constants is not built.
- _mapUnitToLibrariesMap(outputUnit);
+ // Ignore for now.
}
Holder registerHolder(String name) {
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/program_builder.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698