Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Unified Diff: pkg/compiler/lib/src/compiler.dart

Issue 2735763002: Create ResolutionEnqueuer after library loading. (Closed)
Patch Set: Updated cf. comments. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/compiler/lib/src/enqueue.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « no previous file | pkg/compiler/lib/src/enqueue.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698