| 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/src/base/api_signature.dart'; | 10 import 'package:front_end/src/base/api_signature.dart'; |
| 11 import 'package:front_end/src/base/performace_logger.dart'; | 11 import 'package:front_end/src/base/performace_logger.dart'; |
| 12 import 'package:front_end/src/base/processed_options.dart'; | 12 import 'package:front_end/src/base/processed_options.dart'; |
| 13 import 'package:front_end/src/fasta/dill/dill_library_builder.dart'; | 13 import 'package:front_end/src/fasta/dill/dill_library_builder.dart'; |
| 14 import 'package:front_end/src/fasta/dill/dill_target.dart'; | 14 import 'package:front_end/src/fasta/dill/dill_target.dart'; |
| 15 import 'package:front_end/src/fasta/kernel/kernel_target.dart'; | 15 import 'package:front_end/src/fasta/kernel/kernel_target.dart'; |
| 16 import 'package:front_end/src/fasta/ticker.dart'; | 16 import 'package:front_end/src/fasta/ticker.dart'; |
| 17 import 'package:front_end/src/fasta/translate_uri.dart'; | 17 import 'package:front_end/src/fasta/translate_uri.dart'; |
| 18 import 'package:front_end/src/incremental/byte_store.dart'; | 18 import 'package:front_end/src/incremental/byte_store.dart'; |
| 19 import 'package:front_end/src/incremental/file_state.dart'; | 19 import 'package:front_end/src/incremental/file_state.dart'; |
| 20 import 'package:kernel/binary/ast_from_binary.dart'; | 20 import 'package:kernel/binary/ast_from_binary.dart'; |
| 21 import 'package:kernel/binary/limited_ast_to_binary.dart'; | 21 import 'package:kernel/binary/limited_ast_to_binary.dart'; |
| 22 import 'package:kernel/kernel.dart' hide Source; | 22 import 'package:kernel/kernel.dart' hide Source; |
| 23 import 'package:kernel/target/targets.dart' show TargetFlags; | 23 import 'package:kernel/target/targets.dart' show TargetFlags; |
| 24 import 'package:kernel/target/vm_fasta.dart' show VmFastaTarget; | 24 import 'package:kernel/target/vm_fasta.dart' show VmFastaTarget; |
| 25 | 25 |
| 26 dynamic unimplemented() { | |
| 27 // TODO(paulberry): get rid of this. | |
| 28 throw new UnimplementedError(); | |
| 29 } | |
| 30 | |
| 31 class ByteSink implements Sink<List<int>> { | 26 class ByteSink implements Sink<List<int>> { |
| 32 final BytesBuilder builder = new BytesBuilder(); | 27 final BytesBuilder builder = new BytesBuilder(); |
| 33 | 28 |
| 34 void add(List<int> data) { | 29 void add(List<int> data) { |
| 35 builder.add(data); | 30 builder.add(data); |
| 36 } | 31 } |
| 37 | 32 |
| 38 void close() {} | 33 void close() {} |
| 39 } | 34 } |
| 40 | 35 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 for (Library library in result.kernelLibraries) { | 121 for (Library library in result.kernelLibraries) { |
| 127 Uri uri = library.importUri; | 122 Uri uri = library.importUri; |
| 128 if (_latestSignature[uri] != result.signature) { | 123 if (_latestSignature[uri] != result.signature) { |
| 129 _latestSignature[uri] = result.signature; | 124 _latestSignature[uri] = result.signature; |
| 130 program.libraries.add(library); | 125 program.libraries.add(library); |
| 131 library.parent = program; | 126 library.parent = program; |
| 132 } | 127 } |
| 133 } | 128 } |
| 134 } | 129 } |
| 135 | 130 |
| 131 if (watch != null) _fsState.fileUris.forEach((f) => watch(f, true)); |
| 132 |
| 136 // TODO(scheglov) Add libraries which import changed libraries. | 133 // TODO(scheglov) Add libraries which import changed libraries. |
| 137 // For now the corresponding test works because we use full library | 134 // For now the corresponding test works because we use full library |
| 138 // contents to compute signatures (not just API parts). So, every library | 135 // contents to compute signatures (not just API parts). So, every library |
| 139 // that imports a changed one, is affected. | 136 // that imports a changed one, is affected. |
| 140 | 137 |
| 141 // Set the main method. | 138 // Set the main method. |
| 142 for (var library in program.libraries) { | 139 for (var library in program.libraries) { |
| 143 if (library.fileUri == _entryPoint.toString()) { | 140 if (library.fileUri == _entryPoint.toString()) { |
| 144 program.mainMethod = library.procedures.firstWhere( | 141 program.mainMethod = library.procedures.firstWhere( |
| 145 (procedure) => procedure.name.name == 'main', | 142 (procedure) => procedure.name.name == 'main', |
| 146 orElse: () => null); | 143 orElse: () => null); |
| 147 break; | 144 break; |
| 148 } | 145 } |
| 149 } | 146 } |
| 150 | 147 |
| 151 return new DeltaProgram(program); | 148 return new DeltaProgram(program); |
| 152 }); | 149 }); |
| 153 } | 150 } |
| 154 | 151 |
| 155 @override | 152 @override |
| 156 void invalidate(Uri uri) { | 153 void invalidate(Uri uri) { |
| 157 _invalidatedFiles.add(uri); | 154 _invalidatedFiles.add(uri); |
| 158 } | 155 } |
| 159 | 156 |
| 160 @override | 157 @override |
| 161 void invalidateAll() => unimplemented(); | 158 void invalidateAll() { |
| 159 _invalidatedFiles.addAll(_fsState.fileUris); |
| 160 } |
| 162 | 161 |
| 163 /// Ensure that [dillTarget] includes the [cycle] libraries. It already | 162 /// Ensure that [dillTarget] includes the [cycle] libraries. It already |
| 164 /// contains all the libraries that sorted before the given [cycle] in | 163 /// contains all the libraries that sorted before the given [cycle] in |
| 165 /// topological order. Return the result with the cycle libraries. | 164 /// topological order. Return the result with the cycle libraries. |
| 166 Future<_LibraryCycleResult> _compileCycle( | 165 Future<_LibraryCycleResult> _compileCycle( |
| 167 CanonicalName nameRoot, DillTarget dillTarget, LibraryCycle cycle) async { | 166 CanonicalName nameRoot, DillTarget dillTarget, LibraryCycle cycle) async { |
| 168 return _logger.runAsync('Compile cycle $cycle', () async { | 167 return _logger.runAsync('Compile cycle $cycle', () async { |
| 169 String signature; | 168 String signature; |
| 170 { | 169 { |
| 171 var signatureBuilder = new ApiSignature(); | 170 var signatureBuilder = new ApiSignature(); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 /// TODO(scheglov) Use API signatures. | 325 /// TODO(scheglov) Use API signatures. |
| 327 /// TODO(scheglov) Or use tree shaking and compute signatures of outlines. | 326 /// TODO(scheglov) Or use tree shaking and compute signatures of outlines. |
| 328 final String signature; | 327 final String signature; |
| 329 | 328 |
| 330 /// Kernel libraries for libraries in the [cycle]. Bodies of dependencies | 329 /// Kernel libraries for libraries in the [cycle]. Bodies of dependencies |
| 331 /// are not included, but but references to those dependencies are included. | 330 /// are not included, but but references to those dependencies are included. |
| 332 final List<Library> kernelLibraries; | 331 final List<Library> kernelLibraries; |
| 333 | 332 |
| 334 _LibraryCycleResult(this.cycle, this.signature, this.kernelLibraries); | 333 _LibraryCycleResult(this.cycle, this.signature, this.kernelLibraries); |
| 335 } | 334 } |
| OLD | NEW |