Index: pkg/compiler/lib/src/resolution/registry.dart |
diff --git a/pkg/compiler/lib/src/resolution/registry.dart b/pkg/compiler/lib/src/resolution/registry.dart |
index da2629a6b49b1a3934101464d5c0013701b443bd..5e6105e4b5de402a13b408f68fb481225acf3fa1 100644 |
--- a/pkg/compiler/lib/src/resolution/registry.dart |
+++ b/pkg/compiler/lib/src/resolution/registry.dart |
@@ -31,6 +31,8 @@ import '../universe/selector.dart' show |
Selector; |
import '../universe/universe.dart' show |
UniverseSelector; |
+import '../universe/world_impact.dart' show |
+ WorldImpactBuilder; |
import '../world.dart' show World; |
import 'send_structure.dart'; |
@@ -85,100 +87,17 @@ class EagerRegistry extends Registry { |
String toString() => 'EagerRegistry for ${mapping.analyzedElement}'; |
} |
-class _ResolutionWorldImpact extends ResolutionImpact { |
+class _ResolutionWorldImpact extends ResolutionImpact with WorldImpactBuilder { |
final String name; |
- // TODO(johnniwinther): Do we benefit from lazy initialization of the |
- // [Setlet]s? |
- Setlet<UniverseSelector> _dynamicInvocations; |
- Setlet<UniverseSelector> _dynamicGetters; |
- Setlet<UniverseSelector> _dynamicSetters; |
- Setlet<InterfaceType> _instantiatedTypes; |
- Setlet<Element> _staticUses; |
- Setlet<DartType> _isChecks; |
- Setlet<DartType> _asCasts; |
- Setlet<DartType> _checkedModeChecks; |
- Setlet<MethodElement> _closurizedFunctions; |
- Setlet<LocalFunctionElement> _closures; |
Setlet<Feature> _features; |
// TODO(johnniwinther): This seems to be a union of other sets. |
Setlet<DartType> _requiredTypes; |
Setlet<MapLiteralUse> _mapLiterals; |
Setlet<ListLiteralUse> _listLiterals; |
- Setlet<DartType> _typeLiterals; |
Setlet<String> _constSymbolNames; |
_ResolutionWorldImpact(this.name); |
- void registerDynamicGetter(UniverseSelector selector) { |
- assert(selector != null); |
- if (_dynamicGetters == null) { |
- _dynamicGetters = new Setlet<UniverseSelector>(); |
- } |
- _dynamicGetters.add(selector); |
- } |
- |
- @override |
- Iterable<UniverseSelector> get dynamicGetters { |
- return _dynamicGetters != null |
- ? _dynamicGetters : const <UniverseSelector>[]; |
- } |
- |
- void registerDynamicInvocation(UniverseSelector selector) { |
- assert(selector != null); |
- if (_dynamicInvocations == null) { |
- _dynamicInvocations = new Setlet<UniverseSelector>(); |
- } |
- _dynamicInvocations.add(selector); |
- } |
- |
- @override |
- Iterable<UniverseSelector> get dynamicInvocations { |
- return _dynamicInvocations != null |
- ? _dynamicInvocations : const <UniverseSelector>[]; |
- } |
- |
- void registerDynamicSetter(UniverseSelector selector) { |
- assert(selector != null); |
- if (_dynamicSetters == null) { |
- _dynamicSetters = new Setlet<UniverseSelector>(); |
- } |
- _dynamicSetters.add(selector); |
- } |
- |
- @override |
- Iterable<UniverseSelector> get dynamicSetters { |
- return _dynamicSetters != null |
- ? _dynamicSetters : const <UniverseSelector>[]; |
- } |
- |
- void registerInstantiatedType(InterfaceType type) { |
- assert(type != null); |
- if (_instantiatedTypes == null) { |
- _instantiatedTypes = new Setlet<InterfaceType>(); |
- } |
- _instantiatedTypes.add(type); |
- } |
- |
- @override |
- Iterable<InterfaceType> get instantiatedTypes { |
- return _instantiatedTypes != null |
- ? _instantiatedTypes : const <InterfaceType>[]; |
- } |
- |
- void registerTypeLiteral(DartType type) { |
- assert(type != null); |
- if (_typeLiterals == null) { |
- _typeLiterals = new Setlet<DartType>(); |
- } |
- _typeLiterals.add(type); |
- } |
- |
- @override |
- Iterable<DartType> get typeLiterals { |
- return _typeLiterals != null |
- ? _typeLiterals : const <DartType>[]; |
- } |
- |
void registerRequiredType(DartType type) { |
assert(type != null); |
if (_requiredTypes == null) { |
@@ -221,85 +140,6 @@ class _ResolutionWorldImpact extends ResolutionImpact { |
? _listLiterals : const <ListLiteralUse>[]; |
} |
- void registerStaticUse(Element element) { |
- assert(element != null); |
- if (_staticUses == null) { |
- _staticUses = new Setlet<Element>(); |
- } |
- _staticUses.add(element); |
- } |
- |
- @override |
- Iterable<Element> get staticUses { |
- return _staticUses != null ? _staticUses : const <Element>[]; |
- } |
- |
- void registerIsCheck(DartType type) { |
- assert(type != null); |
- if (_isChecks == null) { |
- _isChecks = new Setlet<DartType>(); |
- } |
- _isChecks.add(type); |
- } |
- |
- @override |
- Iterable<DartType> get isChecks { |
- return _isChecks != null |
- ? _isChecks : const <DartType>[]; |
- } |
- |
- void registerAsCast(DartType type) { |
- if (_asCasts == null) { |
- _asCasts = new Setlet<DartType>(); |
- } |
- _asCasts.add(type); |
- } |
- |
- @override |
- Iterable<DartType> get asCasts { |
- return _asCasts != null |
- ? _asCasts : const <DartType>[]; |
- } |
- |
- void registerCheckedModeCheckedType(DartType type) { |
- if (_checkedModeChecks == null) { |
- _checkedModeChecks = new Setlet<DartType>(); |
- } |
- _checkedModeChecks.add(type); |
- } |
- |
- @override |
- Iterable<DartType> get checkedModeChecks { |
- return _checkedModeChecks != null |
- ? _checkedModeChecks : const <DartType>[]; |
- } |
- |
- void registerClosurizedFunction(MethodElement element) { |
- if (_closurizedFunctions == null) { |
- _closurizedFunctions = new Setlet<MethodElement>(); |
- } |
- _closurizedFunctions.add(element); |
- } |
- |
- @override |
- Iterable<MethodElement> get closurizedFunctions { |
- return _closurizedFunctions != null |
- ? _closurizedFunctions : const <MethodElement>[]; |
- } |
- |
- void registerClosure(LocalFunctionElement element) { |
- if (_closures == null) { |
- _closures = new Setlet<LocalFunctionElement>(); |
- } |
- _closures.add(element); |
- } |
- |
- @override |
- Iterable<LocalFunctionElement> get closures { |
- return _closures != null |
- ? _closures : const <LocalFunctionElement>[]; |
- } |
- |
void registerConstSymbolName(String name) { |
if (_constSymbolNames == null) { |
_constSymbolNames = new Setlet<String>(); |