| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:async'; | 5 import 'dart:async'; |
| 6 import 'dart:io'; | 6 import 'dart:io'; |
| 7 | 7 |
| 8 import 'package:front_end/file_system.dart'; | 8 import 'package:front_end/file_system.dart'; |
| 9 import 'package:front_end/incremental_kernel_generator.dart'; | 9 import 'package:front_end/incremental_kernel_generator.dart'; |
| 10 import 'package:front_end/incremental_resolved_ast_generator.dart'; | 10 import 'package:front_end/incremental_resolved_ast_generator.dart'; |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 Uri uri = library.uri; | 166 Uri uri = library.uri; |
| 167 libraryUris.add(uri); | 167 libraryUris.add(uri); |
| 168 libraryUriToFile[uri] = library; | 168 libraryUriToFile[uri] = library; |
| 169 } | 169 } |
| 170 | 170 |
| 171 Future<Null> appendNewDillLibraries(Program program) async { | 171 Future<Null> appendNewDillLibraries(Program program) async { |
| 172 List<DillLibraryBuilder> libraryBuilders = dillTarget.loader | 172 List<DillLibraryBuilder> libraryBuilders = dillTarget.loader |
| 173 .appendLibraries(program, (uri) => libraryUris.contains(uri)); | 173 .appendLibraries(program, (uri) => libraryUris.contains(uri)); |
| 174 | 174 |
| 175 // Compute local scopes. | 175 // Compute local scopes. |
| 176 await dillTarget.computeOutline(); | 176 await dillTarget.buildOutlines(); |
| 177 | 177 |
| 178 // Compute export scopes. | 178 // Compute export scopes. |
| 179 _computeExportScopes(dillTarget, libraryUriToFile, libraryBuilders); | 179 _computeExportScopes(dillTarget, libraryUriToFile, libraryBuilders); |
| 180 } | 180 } |
| 181 | 181 |
| 182 // Check if there is already a bundle with these libraries. | 182 // Check if there is already a bundle with these libraries. |
| 183 List<int> bytes = _byteStore.get(kernelKey); | 183 List<int> bytes = _byteStore.get(kernelKey); |
| 184 if (bytes != null) { | 184 if (bytes != null) { |
| 185 return _logger.runAsync('Read serialized libraries', () async { | 185 return _logger.runAsync('Read serialized libraries', () async { |
| 186 var program = new Program(nameRoot: nameRoot); | 186 var program = new Program(nameRoot: nameRoot); |
| 187 var reader = new BinaryBuilder(bytes); | 187 var reader = new BinaryBuilder(bytes); |
| 188 reader.readProgram(program); | 188 reader.readProgram(program); |
| 189 | 189 |
| 190 await appendNewDillLibraries(program); | 190 await appendNewDillLibraries(program); |
| 191 | 191 |
| 192 return new _LibraryCycleResult(cycle, signature, program.libraries); | 192 return new _LibraryCycleResult(cycle, signature, program.libraries); |
| 193 }); | 193 }); |
| 194 } | 194 } |
| 195 | 195 |
| 196 // Create KernelTarget and configure it for compiling the cycle URIs. | 196 // Create KernelTarget and configure it for compiling the cycle URIs. |
| 197 KernelTarget kernelTarget = new KernelTarget(_fsState.fileSystemView, | 197 KernelTarget kernelTarget = new KernelTarget(_fsState.fileSystemView, |
| 198 dillTarget, _uriTranslator, _options.strongMode); | 198 dillTarget, _uriTranslator, _options.strongMode); |
| 199 for (FileState library in cycle.libraries) { | 199 for (FileState library in cycle.libraries) { |
| 200 kernelTarget.read(library.uri); | 200 kernelTarget.read(library.uri); |
| 201 } | 201 } |
| 202 | 202 |
| 203 // Compile the cycle libraries into a new full program. | 203 // Compile the cycle libraries into a new full program. |
| 204 Program program = await _logger | 204 Program program = await _logger |
| 205 .runAsync('Compile ${cycle.libraries.length} libraries', () async { | 205 .runAsync('Compile ${cycle.libraries.length} libraries', () async { |
| 206 await kernelTarget.computeOutline(nameRoot: nameRoot); | 206 await kernelTarget.buildOutlines(nameRoot: nameRoot); |
| 207 return await kernelTarget.writeProgram(null); | 207 return await kernelTarget.buildProgram(); |
| 208 }); | 208 }); |
| 209 | 209 |
| 210 // Add newly compiled libraries into DILL. | 210 // Add newly compiled libraries into DILL. |
| 211 await appendNewDillLibraries(program); | 211 await appendNewDillLibraries(program); |
| 212 | 212 |
| 213 List<Library> kernelLibraries = program.libraries | 213 List<Library> kernelLibraries = program.libraries |
| 214 .where((library) => libraryUris.contains(library.importUri)) | 214 .where((library) => libraryUris.contains(library.importUri)) |
| 215 .toList(); | 215 .toList(); |
| 216 | 216 |
| 217 _logger.run('Serialize ${kernelLibraries.length} libraries', () { | 217 _logger.run('Serialize ${kernelLibraries.length} libraries', () { |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 /// TODO(scheglov) Use API signatures. | 284 /// TODO(scheglov) Use API signatures. |
| 285 /// TODO(scheglov) Or use tree shaking and compute signatures of outlines. | 285 /// TODO(scheglov) Or use tree shaking and compute signatures of outlines. |
| 286 final String signature; | 286 final String signature; |
| 287 | 287 |
| 288 /// Kernel libraries for libraries in the [cycle]. Bodies of dependencies | 288 /// Kernel libraries for libraries in the [cycle]. Bodies of dependencies |
| 289 /// are not included, but but references to those dependencies are included. | 289 /// are not included, but but references to those dependencies are included. |
| 290 final List<Library> kernelLibraries; | 290 final List<Library> kernelLibraries; |
| 291 | 291 |
| 292 _LibraryCycleResult(this.cycle, this.signature, this.kernelLibraries); | 292 _LibraryCycleResult(this.cycle, this.signature, this.kernelLibraries); |
| 293 } | 293 } |
| OLD | NEW |