Chromium Code Reviews| 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 | 6 |
| 7 import 'package:front_end/file_system.dart'; | 7 import 'package:front_end/file_system.dart'; |
| 8 import 'package:front_end/src/base/api_signature.dart'; | 8 import 'package:front_end/src/base/api_signature.dart'; |
| 9 import 'package:front_end/src/base/performace_logger.dart'; | 9 import 'package:front_end/src/base/performace_logger.dart'; |
| 10 import 'package:front_end/src/fasta/compiler_command_line.dart'; | |
| 11 import 'package:front_end/src/fasta/compiler_context.dart'; | |
| 10 import 'package:front_end/src/fasta/dill/dill_library_builder.dart'; | 12 import 'package:front_end/src/fasta/dill/dill_library_builder.dart'; |
| 11 import 'package:front_end/src/fasta/dill/dill_target.dart'; | 13 import 'package:front_end/src/fasta/dill/dill_target.dart'; |
| 12 import 'package:front_end/src/fasta/kernel/kernel_target.dart'; | 14 import 'package:front_end/src/fasta/kernel/kernel_target.dart'; |
| 13 import 'package:front_end/src/fasta/kernel/utils.dart'; | 15 import 'package:front_end/src/fasta/kernel/utils.dart'; |
| 14 import 'package:front_end/src/fasta/ticker.dart'; | 16 import 'package:front_end/src/fasta/ticker.dart'; |
| 15 import 'package:front_end/src/fasta/uri_translator.dart'; | 17 import 'package:front_end/src/fasta/uri_translator.dart'; |
| 16 import 'package:front_end/src/incremental/byte_store.dart'; | 18 import 'package:front_end/src/incremental/byte_store.dart'; |
| 17 import 'package:front_end/src/incremental/file_state.dart'; | 19 import 'package:front_end/src/incremental/file_state.dart'; |
| 18 import 'package:kernel/binary/ast_from_binary.dart'; | 20 import 'package:kernel/binary/ast_from_binary.dart'; |
| 19 import 'package:kernel/kernel.dart' hide Source; | 21 import 'package:kernel/kernel.dart' hide Source; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 106 /// The [uri] must be absolute and normalized. | 108 /// The [uri] must be absolute and normalized. |
| 107 /// | 109 /// |
| 108 /// The driver will update the current file state for any file previously | 110 /// The driver will update the current file state for any file previously |
| 109 /// reported using [invalidate]. | 111 /// reported using [invalidate]. |
| 110 /// | 112 /// |
| 111 /// If the driver has the cached result for the file with the current file | 113 /// If the driver has the cached result for the file with the current file |
| 112 /// state, it is returned. | 114 /// state, it is returned. |
| 113 /// | 115 /// |
| 114 /// Otherwise the driver will compute new kernel files and return them. | 116 /// Otherwise the driver will compute new kernel files and return them. |
| 115 Future<KernelResult> getKernel(Uri uri) async { | 117 Future<KernelResult> getKernel(Uri uri) async { |
| 116 return await _logger.runAsync('Compute delta', () async { | 118 return await runWithFrontEndContext('Compute delta', () async { |
| 117 await _refreshInvalidatedFiles(); | 119 await _refreshInvalidatedFiles(); |
| 118 | 120 |
| 119 // Ensure that the graph starting at the entry point is ready. | 121 // Ensure that the graph starting at the entry point is ready. |
| 120 FileState entryLibrary = | 122 FileState entryLibrary = |
| 121 await _logger.runAsync('Build graph of files', () async { | 123 await _logger.runAsync('Build graph of files', () async { |
| 122 return await _fsState.getFile(uri); | 124 return await _fsState.getFile(uri); |
| 123 }); | 125 }); |
| 124 | 126 |
| 125 List<LibraryCycle> cycles = _logger.run('Compute library cycles', () { | 127 List<LibraryCycle> cycles = _logger.run('Compute library cycles', () { |
| 126 List<LibraryCycle> cycles = entryLibrary.topologicalOrder; | 128 List<LibraryCycle> cycles = entryLibrary.topologicalOrder; |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 139 LibraryCycleResult result = | 141 LibraryCycleResult result = |
| 140 await _compileCycle(nameRoot, dillTarget, cycle); | 142 await _compileCycle(nameRoot, dillTarget, cycle); |
| 141 results.add(result); | 143 results.add(result); |
| 142 } | 144 } |
| 143 }); | 145 }); |
| 144 | 146 |
| 145 return new KernelResult(nameRoot, results); | 147 return new KernelResult(nameRoot, results); |
| 146 }); | 148 }); |
| 147 } | 149 } |
| 148 | 150 |
| 151 Future<T> runWithFrontEndContext<T>(String msg, Future<T> f()) async { | |
| 152 return await CompilerCommandLine.withGlobalOptions("", [""], | |
|
scheglov
2017/07/14 15:49:17
The name CompilerCommandLine does not make sense i
Siggi Cherem (dart-lang)
2017/07/14 16:34:04
Completely agree - this is exactly what I'm workin
| |
| 153 (CompilerContext context) { | |
| 154 context.options.options["--target"] = _target; | |
| 155 context.options.options["report"] = (message, severity) {}; | |
| 156 context.options.options["reportWithoutLocation"] = (message, severity) {}; | |
| 157 return _logger.runAsync(msg, f); | |
| 158 }); | |
| 159 } | |
| 160 | |
| 149 /// The file with the given [uri] might have changed - updated, added, or | 161 /// The file with the given [uri] might have changed - updated, added, or |
| 150 /// removed. Or not, we don't know. Or it might have, but then changed back. | 162 /// removed. Or not, we don't know. Or it might have, but then changed back. |
| 151 /// | 163 /// |
| 152 /// The [uri] must be absolute and normalized file URI. | 164 /// The [uri] must be absolute and normalized file URI. |
| 153 /// | 165 /// |
| 154 /// Schedules the file contents for the [uri] to be read into the current | 166 /// Schedules the file contents for the [uri] to be read into the current |
| 155 /// file state prior the next invocation of [getKernel] returns the result. | 167 /// file state prior the next invocation of [getKernel] returns the result. |
| 156 /// | 168 /// |
| 157 /// Invocation of this method will not prevent a [Future] returned from | 169 /// Invocation of this method will not prevent a [Future] returned from |
| 158 /// [getKernel] from completing with a result, but the result is not | 170 /// [getKernel] from completing with a result, but the result is not |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 357 | 369 |
| 358 LibraryCycleResult(this.cycle, this.signature, this.kernelLibraries); | 370 LibraryCycleResult(this.cycle, this.signature, this.kernelLibraries); |
| 359 } | 371 } |
| 360 | 372 |
| 361 @visibleForTesting | 373 @visibleForTesting |
| 362 class _TestView { | 374 class _TestView { |
| 363 /// The list of [LibraryCycle]s compiled for the last delta. | 375 /// The list of [LibraryCycle]s compiled for the last delta. |
| 364 /// It does not include libraries which were read from the cache. | 376 /// It does not include libraries which were read from the cache. |
| 365 final List<LibraryCycle> compiledCycles = []; | 377 final List<LibraryCycle> compiledCycles = []; |
| 366 } | 378 } |
| OLD | NEW |