| Index: pkg/front_end/lib/src/incremental_kernel_generator_impl.dart
|
| diff --git a/pkg/front_end/lib/src/incremental_kernel_generator_impl.dart b/pkg/front_end/lib/src/incremental_kernel_generator_impl.dart
|
| index 1992ba905add5bd7d127e61850f7c1805f15f95a..92506535f62344877490cf89996a40bbff50034e 100644
|
| --- a/pkg/front_end/lib/src/incremental_kernel_generator_impl.dart
|
| +++ b/pkg/front_end/lib/src/incremental_kernel_generator_impl.dart
|
| @@ -159,7 +159,7 @@ class IncrementalKernelGeneratorImpl implements IncrementalKernelGenerator {
|
| _logger.writeln('Signature: $signature.');
|
| String kernelKey = '$signature.kernel';
|
|
|
| - /// We need kernel libraries for these URIs.
|
| + // We need kernel libraries for these URIs.
|
| Set<Uri> libraryUris = new Set<Uri>();
|
| Map<Uri, FileState> libraryUriToFile = {};
|
| for (FileState library in cycle.libraries) {
|
| @@ -168,25 +168,31 @@ class IncrementalKernelGeneratorImpl implements IncrementalKernelGenerator {
|
| libraryUriToFile[uri] = library;
|
| }
|
|
|
| - /// Check if there is already a bundle with these libraries.
|
| + Future<Null> appendNewDillLibraries(Program program) async {
|
| + List<DillLibraryBuilder> libraryBuilders = dillTarget.loader
|
| + .appendLibraries(program, (uri) => libraryUris.contains(uri));
|
| +
|
| + // Compute local scopes.
|
| + await dillTarget.writeOutline(null);
|
| +
|
| + // Compute export scopes.
|
| + _computeExportScopes(dillTarget, libraryUriToFile, libraryBuilders);
|
| + }
|
| +
|
| + // Check if there is already a bundle with these libraries.
|
| List<int> bytes = _byteStore.get(kernelKey);
|
| if (bytes != null) {
|
| - return _logger.run('Read serialized libraries', () {
|
| + return _logger.runAsync('Read serialized libraries', () async {
|
| var program = new Program(nameRoot: nameRoot);
|
| var reader = new BinaryBuilder(bytes);
|
| reader.readProgram(program);
|
|
|
| - List<DillLibraryBuilder> libraryBuilders = dillTarget.loader
|
| - .appendLibraries(program, (uri) => libraryUris.contains(uri));
|
| - _computeExportScopes(dillTarget, libraryUriToFile, libraryBuilders);
|
| + await appendNewDillLibraries(program);
|
|
|
| return new _LibraryCycleResult(cycle, signature, program.libraries);
|
| });
|
| }
|
|
|
| - // Ask DILL to fill outlines using loaded libraries.
|
| - await dillTarget.writeOutline(null);
|
| -
|
| // Create KernelTarget and configure it for compiling the cycle URIs.
|
| KernelTarget kernelTarget = new KernelTarget(_fsState.fileSystemView,
|
| dillTarget, _uriTranslator, _options.strongMode);
|
| @@ -195,19 +201,18 @@ class IncrementalKernelGeneratorImpl implements IncrementalKernelGenerator {
|
| }
|
|
|
| // Compile the cycle libraries into a new full program.
|
| - Program program = await _logger.runAsync(
|
| - 'Compile ${cycle.libraries.length} cycle libraries', () async {
|
| + Program program = await _logger
|
| + .runAsync('Compile ${cycle.libraries.length} libraries', () async {
|
| await kernelTarget.writeOutline(null, nameRoot: nameRoot);
|
| return await kernelTarget.writeProgram(null);
|
| });
|
|
|
| // Add newly compiled libraries into DILL.
|
| + await appendNewDillLibraries(program);
|
| +
|
| List<Library> kernelLibraries = program.libraries
|
| .where((library) => libraryUris.contains(library.importUri))
|
| .toList();
|
| - List<DillLibraryBuilder> libraryBuilders = dillTarget.loader
|
| - .appendLibraries(program, (uri) => libraryUris.contains(uri));
|
| - _computeExportScopes(dillTarget, libraryUriToFile, libraryBuilders);
|
|
|
| _logger.run('Serialize ${kernelLibraries.length} libraries', () {
|
| program.unbindCanonicalNames();
|
|
|