| Index: pkg/compiler/lib/src/compiler.dart
|
| diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
|
| index 6ad622e190913cf75c361c9feaacd41085f8ad24..afea3758b506a847c97b2a2b9a1c13e3409ca754 100644
|
| --- a/pkg/compiler/lib/src/compiler.dart
|
| +++ b/pkg/compiler/lib/src/compiler.dart
|
| @@ -39,7 +39,8 @@ import 'elements/resolution_types.dart'
|
| ResolutionDynamicType,
|
| ResolutionInterfaceType,
|
| Types;
|
| -import 'enqueue.dart' show Enqueuer, EnqueueTask, ResolutionEnqueuer;
|
| +import 'enqueue.dart'
|
| + show DeferredAction, Enqueuer, EnqueueTask, ResolutionEnqueuer;
|
| import 'environment.dart';
|
| import 'id_generator.dart';
|
| import 'io/source_information.dart' show SourceInformation;
|
| @@ -575,17 +576,35 @@ abstract class Compiler implements LibraryLoaderListener {
|
| .loadLibrary(libraryUri, skipFileWithPartOfTag: true)
|
| .then((LibraryElement library) {
|
| if (library == null) return null;
|
| - enqueuer.resolution.applyImpact(computeImpactForLibrary(library));
|
| - emptyQueue(enqueuer.resolution, onProgress: showResolutionProgress);
|
| - enqueuer.resolution.logSummary(reporter.log);
|
| + ResolutionEnqueuer resolutionEnqueuer = startResolution();
|
| + resolutionEnqueuer.applyImpact(computeImpactForLibrary(library));
|
| + emptyQueue(resolutionEnqueuer, onProgress: showResolutionProgress);
|
| + resolutionEnqueuer.logSummary(reporter.log);
|
| return library;
|
| });
|
| }
|
|
|
| + /// Starts the resolution phase, creating the [ResolutionEnqueuer] if not
|
| + /// already created.
|
| + ///
|
| + /// During normal compilation resolution only started once, but through
|
| + /// [analyzeUri] resolution is started repeatedly.
|
| + ResolutionEnqueuer startResolution() {
|
| + ResolutionEnqueuer resolutionEnqueuer;
|
| + if (enqueuer.hasResolution) {
|
| + resolutionEnqueuer = enqueuer.resolution;
|
| + } else {
|
| + resolutionEnqueuer = enqueuer.createResolutionEnqueuer();
|
| + backend.onResolutionStart(resolutionEnqueuer);
|
| + }
|
| + resolutionEnqueuer.addDeferredActions(libraryLoader.pullDeferredActions());
|
| + return resolutionEnqueuer;
|
| + }
|
| +
|
| /// Performs the compilation when all libraries have been loaded.
|
| void compileLoadedLibraries() =>
|
| selfTask.measureSubtask("Compiler.compileLoadedLibraries", () {
|
| - Enqueuer resolutionEnqueuer = enqueuer.createResolutionEnqueuer();
|
| + ResolutionEnqueuer resolutionEnqueuer = startResolution();
|
| WorldImpact mainImpact = computeMain();
|
|
|
| mirrorUsageAnalyzerTask.analyzeUsage(mainApp);
|
|
|