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

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

Issue 1192103002: Support serialization of the compiler backbone. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments Created 5 years, 6 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
Index: pkg/compiler/lib/src/library_loader.dart
diff --git a/pkg/compiler/lib/src/library_loader.dart b/pkg/compiler/lib/src/library_loader.dart
index a566d3f27d33b24bb5cb2e9152311f66648137da..737e1451074d97717cfd1ae039576c576e1512f1 100644
--- a/pkg/compiler/lib/src/library_loader.dart
+++ b/pkg/compiler/lib/src/library_loader.dart
@@ -482,7 +482,7 @@ class _LibraryLoaderTask extends CompilerTask implements LibraryLoaderTask {
then((Script sourceScript) {
if (sourceScript == null) return;
- CompilationUnitElement unit =
+ CompilationUnitElementX unit =
new CompilationUnitElementX(sourceScript, library);
compiler.withCurrentElement(unit, () {
compiler.scanner.scan(unit);
@@ -523,6 +523,23 @@ class _LibraryLoaderTask extends CompilerTask implements LibraryLoaderTask {
});
}
+ /// Loads the deserialized [library] with the [handler].
+ ///
+ /// All libraries imported or exported transitively from [library] will be
+ /// loaded as well.
+ Future<LibraryElement> loadDeserializedLibrary(
+ LibraryDependencyHandler handler,
+ LibraryElement library) async {
+ compiler.onLibraryCreated(library);
+ libraryCanonicalUriMap[library.canonicalUri] = library;
+ await compiler.onLibraryScanned(library, handler);
+ for (LibraryTag tag in library.tags) {
+ LibraryElement dependency = library.getLibraryFromTag(tag);
+ await createLibrary(handler, library, dependency.canonicalUri);
+ }
+ return library;
+ }
+
/**
* Create (or reuse) a library element for the library specified by the
* [resolvedUri].
@@ -539,6 +556,10 @@ class _LibraryLoaderTask extends CompilerTask implements LibraryLoaderTask {
if (library != null) {
return new Future.value(library);
}
+ library = compiler.serialization.readLibrary(resolvedUri);
+ if (library != null) {
+ return loadDeserializedLibrary(handler, library);
+ }
var readScript = compiler.readScript;
if (readableUri == null) {
readableUri = resolvedUri;

Powered by Google App Engine
This is Rietveld 408576698