Chromium Code Reviews| Index: pkg/compiler/lib/src/js_backend/enqueuer.dart |
| diff --git a/pkg/compiler/lib/src/js_backend/enqueuer.dart b/pkg/compiler/lib/src/js_backend/enqueuer.dart |
| index dcdac2af96aa5a2c1d150ca980ab9f62ea0352da..f199e9b66bf73e40fd89d34d104c086ed8e2f2bc 100644 |
| --- a/pkg/compiler/lib/src/js_backend/enqueuer.dart |
| +++ b/pkg/compiler/lib/src/js_backend/enqueuer.dart |
| @@ -54,7 +54,8 @@ class CodegenEnqueuer implements Enqueuer { |
| new Map<String, Set<Element>>(); |
| final Set<ClassElement> _processedClasses = new Set<ClassElement>(); |
| Set<ClassElement> recentClasses = new Setlet<ClassElement>(); |
| - final Universe universe = new Universe(const TypeMaskStrategy()); |
| + final CodegenUniverseImpl _universe = |
| + new CodegenUniverseImpl(const TypeMaskStrategy()); |
| static final TRACE_MIRROR_ENQUEUING = |
| const bool.fromEnvironment("TRACE_MIRROR_ENQUEUING"); |
| @@ -77,6 +78,8 @@ class CodegenEnqueuer implements Enqueuer { |
| impactVisitor = new _EnqueuerImpactVisitor(this); |
| } |
| + CodegenUniverse get universe => _universe; |
| + |
| Backend get backend => _compiler.backend; |
| CompilerOptions get options => _compiler.options; |
| @@ -141,7 +144,7 @@ class CodegenEnqueuer implements Enqueuer { |
| task.measure(() { |
| ClassElement cls = type.element; |
| bool isNative = backend.isNative(cls); |
| - universe.registerTypeInstantiation(type, |
| + _universe.registerTypeInstantiation(type, |
| isNative: isNative, |
| byMirrors: mirrorUsage, onImplemented: (ClassElement cls) { |
| backend.registerImplementedClass(cls, this, globalDependencies); |
| @@ -176,12 +179,12 @@ class CodegenEnqueuer implements Enqueuer { |
| // Note: this assumes that there are no non-native fields on native |
| // classes, which may not be the case when a native class is subclassed. |
| if (backend.isNative(cls)) { |
| - if (universe.hasInvokedGetter(member, _world) || |
| - universe.hasInvocation(member, _world)) { |
| + if (_universe.hasInvokedGetter(member, _world) || |
| + _universe.hasInvocation(member, _world)) { |
| addToWorkList(member); |
| return; |
| } |
| - if (universe.hasInvokedSetter(member, _world)) { |
| + if (_universe.hasInvokedSetter(member, _world)) { |
| addToWorkList(member); |
| return; |
| } |
| @@ -204,7 +207,7 @@ class CodegenEnqueuer implements Enqueuer { |
| } |
| // If there is a property access with the same name as a method we |
| // need to emit the method. |
| - if (universe.hasInvokedGetter(function, _world)) { |
| + if (_universe.hasInvokedGetter(function, _world)) { |
| registerClosurizedMember(function); |
| addToWorkList(function); |
| return; |
| @@ -214,25 +217,25 @@ class CodegenEnqueuer implements Enqueuer { |
| instanceFunctionsByName |
| .putIfAbsent(memberName, () => new Set<Element>()) |
| .add(member); |
| - if (universe.hasInvocation(function, _world)) { |
| + if (_universe.hasInvocation(function, _world)) { |
| addToWorkList(function); |
| return; |
| } |
| } else if (member.isGetter) { |
| FunctionElement getter = member; |
| - if (universe.hasInvokedGetter(getter, _world)) { |
| + if (_universe.hasInvokedGetter(getter, _world)) { |
| addToWorkList(getter); |
| return; |
| } |
| // We don't know what selectors the returned closure accepts. If |
| // the set contains any selector we have to assume that it matches. |
| - if (universe.hasInvocation(getter, _world)) { |
| + if (_universe.hasInvocation(getter, _world)) { |
| addToWorkList(getter); |
| return; |
| } |
| } else if (member.isSetter) { |
| FunctionElement setter = member; |
| - if (universe.hasInvokedSetter(setter, _world)) { |
| + if (_universe.hasInvokedSetter(setter, _world)) { |
| addToWorkList(setter); |
| return; |
| } |
| @@ -281,7 +284,7 @@ class CodegenEnqueuer implements Enqueuer { |
| void registerDynamicUse(DynamicUse dynamicUse) { |
| task.measure(() { |
| - if (universe.registerDynamicUse(dynamicUse)) { |
| + if (_universe.registerDynamicUse(dynamicUse)) { |
| handleUnseenSelector(dynamicUse); |
| } |
| }); |
| @@ -510,7 +513,7 @@ class CodegenEnqueuer implements Enqueuer { |
| Element element = staticUse.element; |
| assert(invariant(element, element.isDeclaration, |
| message: "Element ${element} is not the declaration.")); |
| - universe.registerStaticUse(staticUse); |
| + _universe.registerStaticUse(staticUse); |
| backend.registerStaticUse(element, this); |
| bool addElement = true; |
| switch (staticUse.kind) { |
| @@ -559,7 +562,7 @@ class CodegenEnqueuer implements Enqueuer { |
| } |
| void _registerIsCheck(DartType type) { |
| - type = universe.registerIsCheck(type, _compiler); |
| + type = _universe.registerIsCheck(type, _compiler); |
| // Even in checked mode, type annotations for return type and argument |
| // types do not imply type checks, so there should never be a check |
| // against the type variable of a typedef. |
| @@ -569,7 +572,6 @@ class CodegenEnqueuer implements Enqueuer { |
| void registerCallMethodWithFreeTypeVariables(Element element) { |
| backend.registerCallMethodWithFreeTypeVariables( |
| element, this, globalDependencies); |
| - universe.callMethodsWithFreeTypeVariables.add(element); |
|
Harry Terkelsen
2016/09/19 18:07:10
where is this being registered now?
Johnni Winther
2016/09/21 09:13:04
This and closurizedMembers below are only used in
|
| } |
| void registerClosurizedMember(TypedElement element) { |
| @@ -579,7 +581,6 @@ class CodegenEnqueuer implements Enqueuer { |
| element, this, globalDependencies); |
| } |
| backend.registerBoundClosure(this); |
| - universe.closurizedMembers.add(element); |
| } |
| void forEach(void f(WorkItem work)) { |
| @@ -612,7 +613,7 @@ class CodegenEnqueuer implements Enqueuer { |
| String toString() => 'Enqueuer($name)'; |
| void _forgetElement(Element element) { |
| - universe.forgetElement(element, _compiler); |
| + _universe.forgetElement(element, _compiler); |
| _processedClasses.remove(element); |
| instanceMembersByName[element.name]?.remove(element); |
| instanceFunctionsByName[element.name]?.remove(element); |