| 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 |