| Index: pkg/compiler/lib/src/enqueue.dart
|
| diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart
|
| index 8a5cda013d2a7d098987076c42fdd7440723312b..2025673d73deb5a75e65641c13633ae369d6d415 100644
|
| --- a/pkg/compiler/lib/src/enqueue.dart
|
| +++ b/pkg/compiler/lib/src/enqueue.dart
|
| @@ -17,7 +17,6 @@ import 'elements/elements.dart'
|
| import 'elements/entities.dart';
|
| import 'elements/resolution_types.dart' show ResolutionTypedefType;
|
| import 'elements/types.dart';
|
| -import 'native/native.dart' as native;
|
| import 'universe/world_builder.dart';
|
| import 'universe/use.dart'
|
| show DynamicUse, StaticUse, StaticUseKind, TypeUse, TypeUseKind;
|
| @@ -44,7 +43,6 @@ class EnqueueTask extends CompilerTask {
|
| ? const DirectEnqueuerStrategy()
|
| : const TreeShakingEnqueuerStrategy(),
|
| compiler.backend.resolutionEnqueuerListener,
|
| - compiler.backend.nativeResolutionEnqueuer(),
|
| new ElementResolutionWorldBuilder(
|
| compiler.backend, compiler.resolution, const OpenWorldStrategy()),
|
| new ResolutionWorkItemBuilder(compiler.resolution));
|
| @@ -57,7 +55,6 @@ class EnqueueTask extends CompilerTask {
|
|
|
| abstract class Enqueuer {
|
| WorldBuilder get worldBuilder;
|
| - native.NativeEnqueuer get nativeEnqueuer;
|
| ImpactStrategy get impactStrategy;
|
|
|
| void open(ImpactStrategy impactStrategy, FunctionEntity mainMethod,
|
| @@ -83,7 +80,7 @@ abstract class Enqueuer {
|
|
|
| /// Check the enqueuer queue is empty or fail otherwise.
|
| void checkQueueIsEmpty();
|
| - void logSummary(log(message));
|
| + void logSummary(void log(String message));
|
|
|
| Iterable<Entity> get processedEntities;
|
|
|
| @@ -92,7 +89,8 @@ abstract class Enqueuer {
|
|
|
| abstract class EnqueuerListener {
|
| /// Called to instruct to the backend that [type] has been instantiated.
|
| - void registerInstantiatedType(InterfaceType type, {bool isGlobal});
|
| + void registerInstantiatedType(InterfaceType type,
|
| + {bool isGlobal: false, bool nativeUsage: false});
|
|
|
| /// Called to notify to the backend that a class is being instantiated. Any
|
| /// backend specific [WorldImpact] of this is returned.
|
| @@ -135,6 +133,9 @@ abstract class EnqueuerListener {
|
| /// [recentClasses], but every class seen by the [enqueuer] will be present in
|
| /// [recentClasses] at least once.
|
| bool onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses);
|
| +
|
| + /// Called after the queue has been emptied.
|
| + void logSummary(void log(String message));
|
| }
|
|
|
| abstract class EnqueuerImpl extends Enqueuer {
|
| @@ -173,7 +174,6 @@ class ResolutionEnqueuer extends EnqueuerImpl {
|
| final String name;
|
| final CompilerOptions _options;
|
| final EnqueuerListener listener;
|
| - final native.NativeEnqueuer nativeEnqueuer;
|
|
|
| final EnqueuerStrategy strategy;
|
| final Set<ClassEntity> _recentClasses = new Setlet<ClassEntity>();
|
| @@ -194,15 +194,8 @@ class ResolutionEnqueuer extends EnqueuerImpl {
|
| /// has been emptied.
|
| final Queue<_DeferredAction> _deferredQueue = new Queue<_DeferredAction>();
|
|
|
| - ResolutionEnqueuer(
|
| - this.task,
|
| - this._options,
|
| - this._reporter,
|
| - this.strategy,
|
| - this.listener,
|
| - this.nativeEnqueuer,
|
| - this._worldBuilder,
|
| - this._workItemBuilder,
|
| + ResolutionEnqueuer(this.task, this._options, this._reporter, this.strategy,
|
| + this.listener, this._worldBuilder, this._workItemBuilder,
|
| [this.name = 'resolution enqueuer']) {
|
| _impactVisitor = new EnqueuerImplImpactVisitor(this);
|
| }
|
| @@ -238,11 +231,8 @@ class ResolutionEnqueuer extends EnqueuerImpl {
|
| constructor: constructor,
|
| byMirrors: mirrorUsage,
|
| isRedirection: isRedirection);
|
| - if (nativeUsage) {
|
| - nativeEnqueuer.onInstantiatedType(type);
|
| - }
|
| listener.registerInstantiatedType(type,
|
| - isGlobal: globalDependency && !mirrorUsage);
|
| + isGlobal: globalDependency && !mirrorUsage, nativeUsage: nativeUsage);
|
| });
|
| }
|
|
|
| @@ -376,9 +366,9 @@ class ResolutionEnqueuer extends EnqueuerImpl {
|
| } while (_queue.isNotEmpty || _recentClasses.isNotEmpty);
|
| }
|
|
|
| - void logSummary(log(message)) {
|
| + void logSummary(void log(String message)) {
|
| log('Resolved ${_processedEntities.length} elements.');
|
| - nativeEnqueuer.logSummary(log);
|
| + listener.logSummary(log);
|
| }
|
|
|
| String toString() => 'Enqueuer($name)';
|
|
|