OLD | NEW |
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 part of dart2js.js_emitter.program_builder; | 5 part of dart2js.js_emitter.program_builder; |
6 | 6 |
7 /// Maps [LibraryElement]s to their [Element]s. | 7 /// Maps [LibraryElement]s to their [Element]s. |
8 /// | 8 /// |
9 /// Fundamentally, this class nicely encapsulates a | 9 /// Fundamentally, this class nicely encapsulates a |
10 /// `Map<LibraryElement, List<Element>>`. | 10 /// `Map<LibraryElement, List<Element>>`. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 } | 44 } |
45 } | 45 } |
46 | 46 |
47 /// Keeps track of all elements and holders. | 47 /// Keeps track of all elements and holders. |
48 /// | 48 /// |
49 /// This class assigns each registered element to its [LibrariesMap] (which are | 49 /// This class assigns each registered element to its [LibrariesMap] (which are |
50 /// in bijection with [OutputUnit]s). | 50 /// in bijection with [OutputUnit]s). |
51 /// | 51 /// |
52 /// Registered holders are assigned a name. | 52 /// Registered holders are assigned a name. |
53 class Registry { | 53 class Registry { |
54 final Compiler _compiler; | 54 final DeferredLoadTask _deferredLoadTask; |
55 final Map<String, Holder> _holdersMap = <String, Holder>{}; | 55 final Map<String, Holder> _holdersMap = <String, Holder>{}; |
56 final Map<OutputUnit, LibrariesMap> _deferredLibrariesMap = | 56 final Map<OutputUnit, LibrariesMap> _deferredLibrariesMap = |
57 <OutputUnit, LibrariesMap>{}; | 57 <OutputUnit, LibrariesMap>{}; |
58 | 58 |
59 /// Cache for the last seen output unit. | 59 /// Cache for the last seen output unit. |
60 OutputUnit _lastOutputUnit; | 60 OutputUnit _lastOutputUnit; |
61 LibrariesMap _lastLibrariesMap; | 61 LibrariesMap _lastLibrariesMap; |
62 | 62 |
63 DeferredLoadTask get _deferredLoadTask => _compiler.deferredLoadTask; | |
64 Iterable<Holder> get holders => _holdersMap.values; | 63 Iterable<Holder> get holders => _holdersMap.values; |
65 Iterable<LibrariesMap> get deferredLibrariesMap => | 64 Iterable<LibrariesMap> get deferredLibrariesMap => |
66 _deferredLibrariesMap.values; | 65 _deferredLibrariesMap.values; |
67 | 66 |
68 // Add one for the main libraries map. | 67 // Add one for the main libraries map. |
69 int get librariesMapCount => _deferredLibrariesMap.length + 1; | 68 int get librariesMapCount => _deferredLibrariesMap.length + 1; |
70 | 69 |
71 LibrariesMap mainLibrariesMap; | 70 LibrariesMap mainLibrariesMap; |
72 | 71 |
73 Registry(this._compiler); | 72 Registry(this._deferredLoadTask); |
74 | 73 |
75 OutputUnit get _mainOutputUnit => _deferredLoadTask.mainOutputUnit; | 74 OutputUnit get _mainOutputUnit => _deferredLoadTask.mainOutputUnit; |
76 | 75 |
77 LibrariesMap _mapUnitToLibrariesMap(OutputUnit targetUnit) { | 76 LibrariesMap _mapUnitToLibrariesMap(OutputUnit targetUnit) { |
78 if (targetUnit == _lastOutputUnit) return _lastLibrariesMap; | 77 if (targetUnit == _lastOutputUnit) return _lastLibrariesMap; |
79 | 78 |
80 LibrariesMap result = (targetUnit == _mainOutputUnit) | 79 LibrariesMap result = (targetUnit == _mainOutputUnit) |
81 ? mainLibrariesMap | 80 ? mainLibrariesMap |
82 : _deferredLibrariesMap[targetUnit]; | 81 : _deferredLibrariesMap[targetUnit]; |
83 | 82 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 (_holdersMap[name].isStaticStateHolder == isStaticStateHolder && | 118 (_holdersMap[name].isStaticStateHolder == isStaticStateHolder && |
120 _holdersMap[name].isConstantsHolder == isConstantsHolder)); | 119 _holdersMap[name].isConstantsHolder == isConstantsHolder)); |
121 | 120 |
122 return _holdersMap.putIfAbsent(name, () { | 121 return _holdersMap.putIfAbsent(name, () { |
123 return new Holder(name, _holdersMap.length, | 122 return new Holder(name, _holdersMap.length, |
124 isStaticStateHolder: isStaticStateHolder, | 123 isStaticStateHolder: isStaticStateHolder, |
125 isConstantsHolder: isConstantsHolder); | 124 isConstantsHolder: isConstantsHolder); |
126 }); | 125 }); |
127 } | 126 } |
128 } | 127 } |
OLD | NEW |