[bazel/kernel_worker] Only workers use incremental compiler; require digest
Change-Id: Iff4b45ffba79a05ce829ed73d952937ae55624d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101282
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
diff --git a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
index 1e74242..fa64f22 100644
--- a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
+++ b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
@@ -55,7 +55,10 @@
Target target,
FileSystem fileSystem,
bool outlineOnly) async {
- List<int> sdkDigest = workerInputDigests[sdkSummary];
+ final List<int> sdkDigest = workerInputDigests[sdkSummary];
+ if (sdkDigest == null) {
+ throw new StateError("Expected to get digest for $sdkSummary");
+ }
IncrementalCompiler incrementalCompiler;
CompilerOptions options;
ProcessedOptions processedOpts;
@@ -73,7 +76,7 @@
// We do have a previous state.
cachedSdkInput = workerInputCache[sdkSummary];
if (cachedSdkInput == null ||
- !digestsEqual(cachedSdkInput.digest, workerInputDigests[sdkSummary])) {
+ !digestsEqual(cachedSdkInput.digest, sdkDigest)) {
// The sdk is out of date.
startOver = true;
}
@@ -102,7 +105,6 @@
} else {
options = oldState.options;
processedOpts = oldState.processedOpts;
-
var sdkComponent = cachedSdkInput.component;
// Reset the state of the component.
for (var lib in sdkComponent.libraries) {
@@ -127,6 +129,9 @@
for (Uri summary in summaryInputs) {
var cachedInput = workerInputCache[summary];
var summaryDigest = workerInputDigests[summary];
+ if (summaryDigest == null) {
+ throw new StateError("Expected to get digest for $summary");
+ }
if (cachedInput == null ||
cachedInput.component.root != nameRoot ||
!digestsEqual(cachedInput.digest, summaryDigest)) {
@@ -145,7 +150,10 @@
for (int i = 0; i < loadFromDill.length; i++) {
Uri summary = loadFromDill[i];
- var summaryDigest = workerInputDigests[summary];
+ List<int> summaryDigest = workerInputDigests[summary];
+ if (summaryDigest == null) {
+ throw new StateError("Expected to get digest for $summary");
+ }
WorkerInputComponent cachedInput = WorkerInputComponent(
summaryDigest,
await processedOpts.loadComponent(
@@ -193,7 +201,7 @@
Future<CompilerResult> _compile(InitializedCompilerState compilerState,
List<Uri> inputs, DiagnosticMessageHandler diagnosticMessageHandler,
- {bool summaryOnly}) {
+ {bool summaryOnly, bool includeOffsets: true}) {
summaryOnly ??= true;
CompilerOptions options = compilerState.options;
options..onDiagnostic = diagnosticMessageHandler;
@@ -203,13 +211,16 @@
processedOpts.inputs.addAll(inputs);
return generateKernel(processedOpts,
- buildSummary: summaryOnly, buildComponent: !summaryOnly);
+ buildSummary: summaryOnly,
+ buildComponent: !summaryOnly,
+ includeOffsets: includeOffsets);
}
Future<List<int>> compileSummary(InitializedCompilerState compilerState,
- List<Uri> inputs, DiagnosticMessageHandler diagnosticMessageHandler) async {
+ List<Uri> inputs, DiagnosticMessageHandler diagnosticMessageHandler,
+ {bool includeOffsets: false}) async {
var result = await _compile(compilerState, inputs, diagnosticMessageHandler,
- summaryOnly: true);
+ summaryOnly: true, includeOffsets: includeOffsets);
return result?.summary;
}
diff --git a/pkg/front_end/lib/src/kernel_generator_impl.dart b/pkg/front_end/lib/src/kernel_generator_impl.dart
index 0a4fad1..f967227 100644
--- a/pkg/front_end/lib/src/kernel_generator_impl.dart
+++ b/pkg/front_end/lib/src/kernel_generator_impl.dart
@@ -35,19 +35,22 @@
Future<CompilerResult> generateKernel(ProcessedOptions options,
{bool buildSummary: false,
bool buildComponent: true,
- bool truncateSummary: false}) async {
+ bool truncateSummary: false,
+ bool includeOffsets: true}) async {
return await CompilerContext.runWithOptions(options, (_) async {
return await generateKernelInternal(
buildSummary: buildSummary,
buildComponent: buildComponent,
- truncateSummary: truncateSummary);
+ truncateSummary: truncateSummary,
+ includeOffsets: includeOffsets);
});
}
Future<CompilerResult> generateKernelInternal(
{bool buildSummary: false,
bool buildComponent: true,
- bool truncateSummary: false}) async {
+ bool truncateSummary: false,
+ bool includeOffsets: true}) async {
var options = CompilerContext.current.options;
var fs = options.fileSystem;
@@ -138,8 +141,8 @@
options.ticker.logMs("Transformed outline");
}
// Don't include source (but do add it above to include importUris).
- summary =
- serializeComponent(trimmedSummaryComponent, includeSources: false);
+ summary = serializeComponent(trimmedSummaryComponent,
+ includeSources: false, includeOffsets: includeOffsets);
options.ticker.logMs("Generated outline");
}
diff --git a/utils/bazel/kernel_worker.dart b/utils/bazel/kernel_worker.dart
index c2f3c1e..d1e6924 100644
--- a/utils/bazel/kernel_worker.dart
+++ b/utils/bazel/kernel_worker.dart
@@ -238,7 +238,9 @@
fe.InitializedCompilerState state;
bool usingIncrementalCompiler = false;
- if (parsedArgs['use-incremental-compiler'] && linkedInputs.isEmpty) {
+ if (parsedArgs['use-incremental-compiler'] &&
+ linkedInputs.isEmpty &&
+ isWorker) {
usingIncrementalCompiler = true;
/// Build a map of uris to digests.
@@ -298,12 +300,14 @@
return Future.value(fe.serializeComponent(incrementalComponent));
});
} else if (summaryOnly) {
- kernel = await fe.compileSummary(state, sources, onDiagnostic);
+ kernel = await fe.compileSummary(state, sources, onDiagnostic,
+ includeOffsets: false);
} else {
Component component =
await fe.compileComponent(state, sources, onDiagnostic);
kernel = fe.serializeComponent(component,
- filter: (library) => sources.contains(library.importUri));
+ filter: (library) => sources.contains(library.importUri),
+ includeOffsets: true);
}
if (kernel != null) {