| Index: sdk/lib/_internal/compiler/implementation/enqueue.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/enqueue.dart b/sdk/lib/_internal/compiler/implementation/enqueue.dart
|
| index 8c101a4ed2a9c447a1db7863277ba93f002fbbb7..a00c365e2d766fdf465c8ef3533ce6bba95218ff 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/enqueue.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/enqueue.dart
|
| @@ -40,7 +40,7 @@ abstract class Enqueuer {
|
| = new Map<String, Set<Element>>();
|
| final Map<String, Set<Element>> instanceFunctionsByName
|
| = new Map<String, Set<Element>>();
|
| - final Set<ClassElement> _seenClasses = new Set<ClassElement>();
|
| + final Set<ClassElement> _processedClasses = new Set<ClassElement>();
|
| Set<ClassElement> recentClasses = new Setlet<ClassElement>();
|
| final Universe universe = new Universe();
|
|
|
| @@ -91,7 +91,7 @@ abstract class Enqueuer {
|
| registry.registerDependency(cls);
|
| cls.ensureResolved(compiler);
|
| universe.registerTypeInstantiation(type, byMirrors: mirrorUsage);
|
| - onRegisterInstantiatedClass(cls);
|
| + processInstantiatedClass(cls);
|
| });
|
| }
|
|
|
| @@ -105,7 +105,7 @@ abstract class Enqueuer {
|
| return filter.checkNoEnqueuedInvokedInstanceMethods(this);
|
| }
|
|
|
| - void processInstantiatedClass(ClassElement cls) {
|
| + void processInstantiatedClassMembers(ClassElement cls) {
|
| cls.implementation.forEachMember(processInstantiatedClassMember);
|
| }
|
|
|
| @@ -214,17 +214,17 @@ abstract class Enqueuer {
|
| void enableNoSuchMethod(Element element) {}
|
| void enableIsolateSupport() {}
|
|
|
| - void onRegisterInstantiatedClass(ClassElement cls) {
|
| + void processInstantiatedClass(ClassElement cls) {
|
| task.measure(() {
|
| - if (_seenClasses.contains(cls)) return;
|
| + if (_processedClasses.contains(cls)) return;
|
| // The class must be resolved to compute the set of all
|
| // supertypes.
|
| cls.ensureResolved(compiler);
|
|
|
| void processClass(ClassElement cls) {
|
| - if (_seenClasses.contains(cls)) return;
|
| + if (_processedClasses.contains(cls)) return;
|
|
|
| - _seenClasses.add(cls);
|
| + _processedClasses.add(cls);
|
| recentClasses.add(cls);
|
| cls.ensureResolved(compiler);
|
| cls.implementation.forEachMember(processInstantiatedClassMember);
|
| @@ -410,7 +410,7 @@ abstract class Enqueuer {
|
| // as recently seen, as we do not know how many rounds of resolution might
|
| // have run before tree shaking is disabled and thus everything is
|
| // enqueued.
|
| - recents = _seenClasses.toSet();
|
| + recents = _processedClasses.toSet();
|
| compiler.log('Enqueuing everything');
|
| for (LibraryElement lib in compiler.libraryLoader.libraries) {
|
| enqueueReflectiveElementsInLibrary(lib, recents);
|
| @@ -639,7 +639,7 @@ abstract class Enqueuer {
|
|
|
| void forgetElement(Element element) {
|
| universe.forgetElement(element, compiler);
|
| - _seenClasses.remove(element);
|
| + _processedClasses.remove(element);
|
| }
|
| }
|
|
|
| @@ -682,13 +682,6 @@ class ResolutionEnqueuer extends Enqueuer {
|
| resolvedElements.add(element);
|
| }
|
|
|
| - /// Returns [:true:] if [element] has actually been used.
|
| - bool isLive(Element element) {
|
| - if (_seenClasses.contains(element)) return true;
|
| - if (hasBeenResolved(element)) return true;
|
| - return false;
|
| - }
|
| -
|
| /**
|
| * Decides whether an element should be included to satisfy requirements
|
| * of the mirror system.
|
| @@ -888,11 +881,12 @@ class QueueFilter {
|
| bool checkNoEnqueuedInvokedInstanceMethods(Enqueuer enqueuer) {
|
| enqueuer.task.measure(() {
|
| // Run through the classes and see if we need to compile methods.
|
| - for (ClassElement classElement in enqueuer.universe.instantiatedClasses) {
|
| + for (ClassElement classElement in
|
| + enqueuer.universe.directlyInstantiatedClasses) {
|
| for (ClassElement currentClass = classElement;
|
| currentClass != null;
|
| currentClass = currentClass.superclass) {
|
| - enqueuer.processInstantiatedClass(currentClass);
|
| + enqueuer.processInstantiatedClassMembers(currentClass);
|
| }
|
| }
|
| });
|
|
|