Chromium Code Reviews| 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..20b5130a04e248c8602e21ec6f5145b9f3ca9d20 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,32 @@ 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. |
|
Siggi Cherem (dart-lang)
2017/03/14 05:27:55
why would it be created before? or is that only in
Johnni Winther
2017/03/15 12:46:53
Due to [analyzeUri]. Added to the comment.
|
| + 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); |