[CFE] Rename additionalDills to additionalDillModules; don't use it to load platform

* Rename additionalDills to additionalDillModules to indicate that it
   is used to load a "module", not any old dill file.
 * Where additionalDills was used to provide the platform use sdkSummary
   instead.
 * Remove unused constructor in KernelCompilationResults.

Tested: Existing tests.
Change-Id: I5f73f61db73b2bc932c211fb0b2e66ec2f5c50c5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/495981
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
Jens Johansen
2026-05-01 00:57:31 -07:00
committed by dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent 1aba9d0fa5
commit ec5e71ead4
32 changed files with 159 additions and 164 deletions
+1 -1
View File
@@ -75,7 +75,7 @@ Future<Component> compileTestCaseToKernelProgram(
);
final options = CompilerOptions()
..target = target
..additionalDills = <Uri>[platformKernel]
..sdkSummary = platformKernel
..environmentDefines = {}
..onDiagnostic = (CfeDiagnosticMessage message) {
fail("Compilation error: ${message.plainTextFormatted.join('\n')}");
@@ -29,9 +29,9 @@ main() {
var options = CompilerOptions()
..target = Dart2jsTarget("dart2js", TargetFlags())
..packagesFileUri = Uri.base.resolve('.dart_tool/package_config.json')
..additionalDills = <Uri>[
computePlatformBinariesLocation().resolve("dart2js_platform.dill"),
]
..sdkSummary = computePlatformBinariesLocation().resolve(
"dart2js_platform.dill",
)
..setExitCodeOnProblem = true
..verify = true;
@@ -104,16 +104,18 @@ Future<Uint8List> compileUnit(
entity.writeAsBytesSync(data);
}
});
List<Uri> additionalDills = [
computePlatformBinariesLocation().resolve("dart2js_platform.dill"),
]..addAll(deps.map(toTestUri));
List<Uri> additionalDillModules = deps.map(toTestUri).toList();
fs
.entityForUri(toTestUri('.dart_tool/package_config.json'))
.writeAsStringSync('{"configVersion": 2, "packages": []}');
var options = CompilerOptions()
..target = Dart2jsTarget("dart2js", TargetFlags())
..fileSystem = TestFileSystem(fs)
..additionalDills = additionalDills
..sdkSummary = computePlatformBinariesLocation().resolve(
"dart2js_platform.dill",
)
..additionalDillModules = additionalDillModules
..packagesFileUri = toTestUri('.dart_tool/package_config.json')
..explicitExperimentalFlags = {ExperimentalFlag.nonNullable: true};
var inputUris = inputs.map(toTestUri).toList();
@@ -19,7 +19,7 @@ main() {
null,
Dart2jsTarget('dart2js', TargetFlags()),
sdkLibrariesSpecificationUri,
[], // additionalDills
[], // additionalDillModules
Uri.base.resolve('.dart_tool/package_config.json'), // packagesFileUri
explicitExperimentalFlags: experimentalFlags,
verify: true,
+3 -3
View File
@@ -253,9 +253,9 @@ Future<int> runCompilerWithOptions({
final platformKernelUri = Uri.base.resolveUri(new Uri.file(platformKernel));
final List<Uri> additionalDills = <Uri>[];
final List<Uri> additionalDillModules = <Uri>[];
if (importDill != null) {
additionalDills.add(Uri.base.resolveUri(new Uri.file(importDill)));
additionalDillModules.add(Uri.base.resolveUri(new Uri.file(importDill)));
}
final Uri? dynamicInterfaceSpecificationUri =
@@ -279,7 +279,7 @@ Future<int> runCompilerWithOptions({
final CompilerOptions compilerOptions = CompilerOptions()
..sdkSummary = platformKernelUri
..fileSystem = fileSystem
..additionalDills = additionalDills
..additionalDillModules = additionalDillModules
..packagesFileUri = packagesUri
..dynamicInterfaceSpecificationUri = dynamicInterfaceSpecificationUri
..explicitExperimentalFlags = parseExperimentalFlags(
@@ -94,7 +94,7 @@ Future<CompilerResult> compileTestCaseToKernelProgram(
final options = CompilerOptions()
..target = target
..omitPlatform = true
..additionalDills = <Uri>[platformKernel]
..sdkSummary = platformKernel
..environmentDefines = {}
..onDiagnostic = (CfeDiagnosticMessage message) {
fail("Compilation error: ${message.plainTextFormatted.join('\n')}");
+14 -14
View File
@@ -273,7 +273,7 @@ Future<CompilerResult> _compile(
var trackCreationLocations = argResults.flag('track-creation-locations');
var oldCompilerState = compilerState;
var recordUsedInputs = argResults.option('used-inputs-file') != null;
var additionalDills = summaryModules.keys.toList();
var additionalDillModules = summaryModules.keys.toList();
fe.DdcResult? result;
// TODO(jmesserly): is there a cleaner way to do this?
@@ -289,7 +289,7 @@ Future<CompilerResult> _compile(
compileSdk ? null : sourcePathToUri(sdkSummaryPath!),
packageFile != null ? sourcePathToUri(packageFile) : null,
sourcePathToUri(librarySpecPath),
additionalDills,
additionalDillModules,
DevCompilerTarget(
TargetFlags(trackCreationLocations: trackCreationLocations),
),
@@ -313,7 +313,7 @@ Future<CompilerResult> _compile(
inputDigests[uri] = const [0];
}
}
var doneAdditionalDills = List.filled(
var doneAdditionalDillModules = List.filled(
summaryModules.length,
dummyComponent,
);
@@ -324,13 +324,13 @@ Future<CompilerResult> _compile(
'multiRootScheme=${fileSystem.markerScheme}',
'multiRootRoots=${fileSystem.roots}',
},
doneAdditionalDills,
doneAdditionalDillModules,
compileSdk,
sourcePathToUri(getSdkPath()),
compileSdk ? null : sourcePathToUri(sdkSummaryPath!),
packageFile != null ? sourcePathToUri(packageFile) : null,
sourcePathToUri(librarySpecPath),
additionalDills,
additionalDillModules,
inputDigests,
DevCompilerTarget(
TargetFlags(trackCreationLocations: trackCreationLocations),
@@ -353,7 +353,7 @@ Future<CompilerResult> _compile(
result = fe.DdcResult(
incrementalCompilerResult.component,
cachedSdkInput?.component,
doneAdditionalDills,
doneAdditionalDillModules,
incrementalCompilerResult.classHierarchy,
incrementalCompilerResult.neededDillLibraries,
);
@@ -474,13 +474,13 @@ Future<CompilerResult> _compile(
final importToSummary = Map<Library, Component>.identity();
final summaryToModule = Map<Component, String>.identity();
for (var i = 0; i < result.additionalDills.length; i++) {
var additionalDill = result.additionalDills[i];
var moduleImport = summaryModules[additionalDills[i]]!;
for (var l in additionalDill.libraries) {
for (var i = 0; i < result.additionalDillModules.length; i++) {
var additionalDillModule = result.additionalDillModules[i];
var moduleImport = summaryModules[additionalDillModules[i]]!;
for (var l in additionalDillModule.libraries) {
assert(!importToSummary.containsKey(l));
importToSummary[l] = additionalDill;
summaryToModule[additionalDill] = moduleImport;
importToSummary[l] = additionalDillModule;
summaryToModule[additionalDillModule] = moduleImport;
}
}
@@ -489,10 +489,10 @@ Future<CompilerResult> _compile(
// This is only required for non-SDK modules, as SDK modules are all bundled
// in the same module and are never deferred.
// `result.component` contains all the compiled libraries as well as libraries
// already seen in `additionalDills`.
// already seen in `additionalDillModules`.
if (!compileSdk) {
for (var l in result.component.libraries) {
// Don't override libraries already recorded in `additionalDills`.
// Don't override libraries already recorded in `additionalDillModules`.
if (importToSummary.containsKey(l)) {
continue;
}
@@ -63,14 +63,14 @@ class CompilerOptions {
/// If an old ".packages" file is given an error is issued.
Uri? packagesFileUri;
/// URIs of additional dill files.
/// URIs of additional dill files used as modules.
///
/// These will be loaded and linked into the output.
///
/// The components provided here should be closed: any libraries that they
/// reference should be defined in a component in [additionalDills] or
/// reference should be defined in a component in [additionalDillModules] or
/// [sdkSummary].
List<Uri> additionalDills = [];
List<Uri> additionalDillModules = [];
/// URI of the SDK summary file (typically a "file:" URI).
///
@@ -79,6 +79,8 @@ class CompilerOptions {
///
/// If `null` and [compileSdk] is false, the SDK summary will be searched for
/// at a default location within [sdkRoot].
// TODO(jensj): Rename to `platformDill`. See also the discussion at
// https://dart-review.googlesource.com/c/sdk/+/495981.
Uri? sdkSummary;
/// Uri to a dynamic interface specification file.
@@ -275,7 +277,9 @@ class CompilerOptions {
}
if (packagesFileUri != other.packagesFileUri) return false;
// Coverage-ignore-block(suite): Not run.
if (!equalLists(additionalDills, other.additionalDills)) return false;
if (!equalLists(additionalDillModules, other.additionalDillModules)) {
return false;
}
if (sdkSummary != other.sdkSummary) return false;
if (dynamicInterfaceSpecificationUri !=
other.dynamicInterfaceSpecificationUri) {
@@ -102,10 +102,10 @@ Future<CompilerResult?> kernelForProgramInternal(
/// must be acyclic.
///
/// This API is intended for modular compilation. Dependencies to other modules
/// are specified using [CompilerOptions.additionalDills]. Any dependency
/// of [sources] that is not listed in [CompilerOptions.additionalDills] and
/// [CompilerOptions.sdkSummary] is treated as an additional source file for the
/// module.
/// are specified using [CompilerOptions.additionalDillModules]. Any dependency
/// of [sources] that is not listed in [CompilerOptions.additionalDillModules]
/// or [CompilerOptions.sdkSummary] is treated as an additional source file for
/// the module being compiled.
///
/// Any `part` declarations found in [sources] must refer to part files which
/// are also listed in the module sources, otherwise an error results. (It
@@ -18,7 +18,7 @@ import 'compiler_options.dart';
/// Intended to be a part of a modular compilation process.
///
/// Any dependency of [sources] that is not listed in
/// [CompilerOptions.additionalDills] and [CompilerOptions.sdkSummary] is
/// [CompilerOptions.additionalDillModules] and [CompilerOptions.sdkSummary] is
/// treated as an additional source file for the build unit.
///
/// Any `part` declarations found in [sources] must refer to part files which
@@ -46,7 +46,7 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
Uri? sdkSummary,
Uri? packagesFile,
Uri? librariesSpecificationUri,
List<Uri> additionalDills,
List<Uri> additionalDillModules,
Map<Uri, List<int>> workerInputDigests,
Target target,
FileSystem fileSystem,
@@ -56,10 +56,8 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
bool trackNeededDillLibraries = false,
bool verbose = false,
}) {
List<Component> outputLoadedAdditionalDills = new List<Component>.filled(
additionalDills.length,
dummyComponent,
);
List<Component> outputLoadedAdditionalDillModules =
new List<Component>.filled(additionalDillModules.length, dummyComponent);
Map<ExperimentalFlag, bool> experimentalFlags = parseExperimentalFlags(
parseExperimentalArguments(experiments),
onError: (e) => throw e,
@@ -67,11 +65,11 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
return modular.initializeIncrementalCompiler(
oldState,
tags,
outputLoadedAdditionalDills,
outputLoadedAdditionalDillModules,
sdkSummary,
packagesFile,
librariesSpecificationUri,
additionalDills,
additionalDillModules,
workerInputDigests,
target,
fileSystem: fileSystem,
@@ -89,7 +87,7 @@ InitializedCompilerState initializeCompiler(
Uri? sdkSummary,
Uri? librariesSpecificationUri,
Uri? packagesFile,
List<Uri> additionalDills,
List<Uri> additionalDillModules,
Target target,
FileSystem fileSystem,
Iterable<String> experiments,
@@ -105,7 +103,7 @@ InitializedCompilerState initializeCompiler(
..sdkSummary = sdkSummary
..packagesFileUri = packagesFile
..librariesSpecificationUri = librariesSpecificationUri
..additionalDills = additionalDills
..additionalDillModules = additionalDillModules
..target = target
..fileSystem = fileSystem
..environmentDefines = environmentDefines
@@ -95,7 +95,7 @@ InitializedCompilerState initializeCompiler(
InitializedCompilerState? oldState,
Target target,
Uri? librariesSpecificationUri,
List<Uri> additionalDills,
List<Uri> additionalDillModules,
Uri? packagesFileUri, {
required Map<ExperimentalFlag, bool> explicitExperimentalFlags,
Map<String, String>? environmentDefines,
@@ -103,7 +103,7 @@ InitializedCompilerState initializeCompiler(
Set<InvocationMode> invocationModes = const <InvocationMode>{},
Verbosity verbosity = Verbosity.all,
}) {
additionalDills.sort((a, b) => a.toString().compareTo(b.toString()));
additionalDillModules.sort((a, b) => a.toString().compareTo(b.toString()));
// We don't check `target` because it doesn't support '==' and each
// compilation passes a fresh target. However, we pass a logically identical
@@ -111,7 +111,10 @@ InitializedCompilerState initializeCompiler(
if (oldState != null &&
oldState.options.packagesFileUri == packagesFileUri &&
oldState.options.librariesSpecificationUri == librariesSpecificationUri &&
equalLists(oldState.options.additionalDills, additionalDills) &&
equalLists(
oldState.options.additionalDillModules,
additionalDillModules,
) &&
equalMaps(
oldState.options.explicitExperimentalFlags,
explicitExperimentalFlags,
@@ -125,7 +128,7 @@ InitializedCompilerState initializeCompiler(
CompilerOptions options = new CompilerOptions()
..target = target
..additionalDills = additionalDills
..additionalDillModules = additionalDillModules
..librariesSpecificationUri = librariesSpecificationUri
..packagesFileUri = packagesFileUri
..explicitExperimentalFlags = explicitExperimentalFlags
+17 -12
View File
@@ -54,7 +54,7 @@ export 'compiler_state.dart'
class DdcResult {
final Component component;
final Component? sdkSummary;
final List<Component> additionalDills;
final List<Component> additionalDillModules;
final ClassHierarchy classHierarchy;
final Set<Library>? neededDillLibraries;
late final Set<Library> librariesFromDill = _computeLibrariesFromDill();
@@ -63,7 +63,7 @@ class DdcResult {
DdcResult(
this.component,
this.sdkSummary,
this.additionalDills,
this.additionalDillModules,
this.classHierarchy,
this.neededDillLibraries,
);
@@ -71,7 +71,7 @@ class DdcResult {
Set<Library> _computeLibrariesFromDill() {
Set<Library> librariesFromDill = new Set<Library>();
for (Component c in additionalDills) {
for (Component c in additionalDillModules) {
for (Library lib in c.libraries) {
librariesFromDill.add(lib);
}
@@ -106,20 +106,23 @@ InitializedCompilerState initializeCompiler(
Uri? sdkSummary,
Uri? packagesFile,
Uri? librariesSpecificationUri,
List<Uri> additionalDills,
List<Uri> additionalDillModules,
Target target, {
FileSystem? fileSystem,
Map<ExperimentalFlag, bool>? explicitExperimentalFlags,
Map<String, String>? environmentDefines,
}) {
additionalDills.sort((a, b) => a.toString().compareTo(b.toString()));
additionalDillModules.sort((a, b) => a.toString().compareTo(b.toString()));
if (oldState != null &&
oldState.options.compileSdk == compileSdk &&
oldState.options.sdkSummary == sdkSummary &&
oldState.options.packagesFileUri == packagesFile &&
oldState.options.librariesSpecificationUri == librariesSpecificationUri &&
equalLists(oldState.options.additionalDills, additionalDills) &&
equalLists(
oldState.options.additionalDillModules,
additionalDillModules,
) &&
equalMaps(
oldState.options.explicitExperimentalFlags,
explicitExperimentalFlags,
@@ -134,7 +137,7 @@ InitializedCompilerState initializeCompiler(
..sdkRoot = sdkRoot
..sdkSummary = sdkSummary
..packagesFileUri = packagesFile
..additionalDills = additionalDills
..additionalDillModules = additionalDillModules
..librariesSpecificationUri = librariesSpecificationUri
..target = target
..fileSystem = fileSystem ?? StandardFileSystem.instance
@@ -155,13 +158,13 @@ InitializedCompilerState initializeCompiler(
Future<InitializedCompilerState> initializeIncrementalCompiler(
InitializedCompilerState? oldState,
Set<String> tags,
List<Component> doneAdditionalDills,
List<Component> doneAdditionalDillModules,
bool compileSdk,
Uri? sdkRoot,
Uri? sdkSummary,
Uri? packagesFile,
Uri? librariesSpecificationUri,
List<Uri> additionalDills,
List<Uri> additionalDillModules,
Map<Uri, List<int>> workerInputDigests,
Target target, {
FileSystem? fileSystem,
@@ -172,11 +175,11 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
return modular.initializeIncrementalCompiler(
oldState,
tags,
doneAdditionalDills,
doneAdditionalDillModules,
sdkSummary,
packagesFile,
librariesSpecificationUri,
additionalDills,
additionalDillModules,
workerInputDigests,
target,
compileSdk: compileSdk,
@@ -212,7 +215,9 @@ Future<DdcResult?> compile(
// These should be cached.
Component? sdkSummary = await processedOpts.loadSdkSummary(null);
List<Component> summaries = await processedOpts.loadAdditionalDills(null);
List<Component> summaries = await processedOpts.loadAdditionalDillModules(
null,
);
return new DdcResult(
component,
sdkSummary,
@@ -23,19 +23,20 @@ import 'util.dart' show equalMaps, equalSets;
/// as necessary based on [workerInputDigests].
///
/// Notes:
/// * [outputLoadedAdditionalDills] should be given as an empty list of the same
/// size as the [additionalDills]. The input summaries are loaded (or taken
/// from cache) and placed in this list in order, i.e. the `i`-th entry in
/// [outputLoadedAdditionalDills] after this call corresponds to the component
/// loaded from the `i`-th entry in [additionalDills].
/// * [outputLoadedAdditionalDillModules] should be given as an empty list of
/// the same size as the [additionalDillModules]. The input summaries are
/// loaded (or taken from cache) and placed in this list in order, i.e. the
/// `i`-th entry in [outputLoadedAdditionalDillModules] after this call
/// corresponds to the component loaded from the `i`-th entry in
/// [additionalDillModules].
Future<InitializedCompilerState> initializeIncrementalCompiler(
InitializedCompilerState? oldState,
Set<String> tags,
List<Component> outputLoadedAdditionalDills,
List<Component> outputLoadedAdditionalDillModules,
Uri? sdkSummary,
Uri? packagesFile,
Uri? librariesSpecificationUri,
List<Uri> additionalDills,
List<Uri> additionalDillModules,
Map<Uri, List<int>> workerInputDigests,
Target target, {
bool compileSdk = false,
@@ -163,13 +164,14 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
// Notice that the ordering of the input summaries matter, so we need to
// keep them in order.
if (outputLoadedAdditionalDills.length != additionalDills.length) {
if (outputLoadedAdditionalDillModules.length !=
additionalDillModules.length) {
throw new ArgumentError("Invalid length.");
}
Set<Uri> additionalDillsSet = new Set<Uri>();
for (int i = 0; i < additionalDills.length; i++) {
Uri summaryUri = additionalDills[i];
additionalDillsSet.add(summaryUri);
Set<Uri> additionalDillModulesSet = new Set<Uri>();
for (int i = 0; i < additionalDillModules.length; i++) {
Uri summaryUri = additionalDillModules[i];
additionalDillModulesSet.add(summaryUri);
WorkerInputComponent? cachedInput = workerInputCache[summaryUri];
List<int>? digest = workerInputDigests[summaryUri];
if (digest == null) {
@@ -196,20 +198,22 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
}
}
component.computeCanonicalNames(); // this isn't needed, is it?
outputLoadedAdditionalDills[i] = component;
outputLoadedAdditionalDillModules[i] = component;
}
}
for (int i = 0; i < loadFromDillIndexes.length; i++) {
int index = loadFromDillIndexes[i];
Uri additionalDillUri = additionalDills[index];
List<int>? digest = workerInputDigests[additionalDillUri];
Uri additionalDillModuleUri = additionalDillModules[index];
List<int>? digest = workerInputDigests[additionalDillModuleUri];
if (digest == null) {
throw new StateError("Expected to get digest for $additionalDillUri");
throw new StateError(
"Expected to get digest for $additionalDillModuleUri",
);
}
Uint8List bytes = await fileSystem
.entityForUri(additionalDillUri)
.entityForUri(additionalDillModuleUri)
.readAsBytes();
WorkerInputComponent cachedInput = new WorkerInputComponent(
digest,
@@ -219,12 +223,12 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
alwaysCreateNewNamedNodes: true,
),
);
workerInputCache[additionalDillUri] = cachedInput;
outputLoadedAdditionalDills[index] = cachedInput.component;
workerInputCache[additionalDillModuleUri] = cachedInput;
outputLoadedAdditionalDillModules[index] = cachedInput.component;
for (Library lib in cachedInput.component.libraries) {
if (workerInputCacheLibs.containsKey(lib.importUri)) {
Uri fromSummary = workerInputCacheLibs[lib.importUri]!;
if (additionalDillsSet.contains(fromSummary)) {
if (additionalDillModulesSet.contains(fromSummary)) {
throw new StateError(
"Asked to load several summaries that contain the same "
"library.",
@@ -239,17 +243,17 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
}
}
} else {
workerInputCacheLibs[lib.importUri] = additionalDillUri;
workerInputCacheLibs[lib.importUri] = additionalDillModuleUri;
}
if (trackNeededDillLibraries) {
libraryToInputDill![lib.importUri] = additionalDillUri;
libraryToInputDill![lib.importUri] = additionalDillModuleUri;
}
}
}
incrementalCompiler.setModulesToLoadOnNextComputeDelta(
outputLoadedAdditionalDills,
outputLoadedAdditionalDillModules,
);
return new InitializedCompilerState(
@@ -26,6 +26,7 @@ class Flags {
static const String target = "--target";
/// TODO(jensj): Consider removing this. Or renaming it.
static const String linkDependencies = "--link-dependencies";
static const String compileSdk = "--compile-sdk";
@@ -88,13 +88,13 @@ class ProcessedOptions {
/// types unless legacy mode is enabled.
Component? _sdkSummaryComponent;
/// The component for each uri in `options.additionalDills`.
/// The component for each uri in `options.additionalDillModules`.
///
/// A summary, also referred to as "outline" internally, is a [Component]
/// where all method bodies are left out. In essence, it contains just API
/// signatures and constants. The summaries should include inferred top-level
/// types unless legacy mode is enabled.
List<Component>? _additionalDillComponents;
List<Component>? _additionalDillModuleComponents;
/// The location of the SDK, or `null` if the location hasn't been determined
/// yet.
@@ -186,7 +186,7 @@ class ProcessedOptions {
// Coverage-ignore(suite): Not run.
bool get enableUnscheduledExperiments => _raw.enableUnscheduledExperiments;
bool get hasAdditionalDills => _raw.additionalDills.isNotEmpty;
bool get hasAdditionalDillModules => _raw.additionalDillModules.isNotEmpty;
/// The entry-points provided to the compiler.
final List<Uri> inputs;
@@ -434,7 +434,7 @@ class ProcessedOptions {
return false;
}
for (Uri source in _raw.additionalDills) {
for (Uri source in _raw.additionalDillModules) {
// Coverage-ignore-block(suite): Not run.
// TODO(ahe): Remove this check, the compiler itself should handle and
// recover from this.
@@ -532,12 +532,14 @@ class ProcessedOptions {
}
// Coverage-ignore(suite): Not run.
/// Get the components for each of the underlying `additionalDill`
/// Get the components for each of the underlying `additionalDillModules`
/// provided via [CompilerOptions].
// TODO(sigmund): move, this doesn't feel like an "option".
Future<List<Component>> loadAdditionalDills(CanonicalName? nameRoot) async {
if (_additionalDillComponents == null) {
List<Uri> uris = _raw.additionalDills;
Future<List<Component>> loadAdditionalDillModules(
CanonicalName? nameRoot,
) async {
if (_additionalDillModuleComponents == null) {
List<Uri> uris = _raw.additionalDillModules;
if (uris.isEmpty) return const <Component>[];
// TODO(sigmund): throttle # of concurrent operations.
List<Uint8List?> allBytes = await Future.wait(
@@ -549,9 +551,9 @@ class ProcessedOptions {
if (bytes == null) continue;
result.add(loadComponent(bytes, nameRoot, fileUri: uris[i]));
}
_additionalDillComponents = result;
_additionalDillModuleComponents = result;
}
return _additionalDillComponents!;
return _additionalDillModuleComponents!;
}
/// Helper to load a .dill file from [fileUri] using the existing [nameRoot].
@@ -935,7 +937,7 @@ class ProcessedOptions {
'(provided: ${_raw.fileSystem.runtimeType})',
);
writeList('Additional Dills', _raw.additionalDills);
writeList('Additional Dill Modules', _raw.additionalDillModules);
sb.writeln('Packages uri: ${_raw.packagesFileUri}');
sb.writeln('Packages: ${_packages}');
@@ -162,7 +162,7 @@ class SubdivideTiming {
enum BenchmarkPhases {
implicitInitialization,
loadSDK,
loadAdditionalDills,
loadAdditionalDillModules,
dill_buildOutlines,
dill_finalizeExports,
@@ -68,7 +68,7 @@ Future<InternalCompilerResult> generateKernelInternal(
bool includeHierarchyAndCoreTypes = false,
bool retainDataForTesting = false,
Benchmarker? benchmarker,
List<Component>? additionalDillsForTesting,
List<Component>? additionalDillModulesForTesting,
bool allowVerificationErrorForTesting = false,
}) async {
ProcessedOptions options = compilerContext.options;
@@ -99,19 +99,19 @@ Future<InternalCompilerResult> generateKernelInternal(
// By using the nameRoot of the summary, we enable sharing the
// sdkSummary between multiple invocations.
CanonicalName? nameRoot;
if (additionalDillsForTesting != null) {
for (Component additionalDill in additionalDillsForTesting) {
loadedComponents.add(additionalDill);
dillTarget.loader.appendLibraries(additionalDill);
if (additionalDillModulesForTesting != null) {
for (Component additionalDillModule
in additionalDillModulesForTesting) {
loadedComponents.add(additionalDillModule);
dillTarget.loader.appendLibraries(additionalDillModule);
}
} else if (options.hasAdditionalDills) {
} else if (options.hasAdditionalDillModules) {
// Coverage-ignore-block(suite): Not run.
nameRoot = sdkSummary?.root ?? new CanonicalName.root();
for (Component additionalDill in await options.loadAdditionalDills(
nameRoot,
)) {
loadedComponents.add(additionalDill);
dillTarget.loader.appendLibraries(additionalDill);
for (Component additionalDillModule
in await options.loadAdditionalDillModules(nameRoot)) {
loadedComponents.add(additionalDillModule);
dillTarget.loader.appendLibraries(additionalDillModule);
}
}
@@ -32,7 +32,7 @@ import '../compute_platform_binaries_location.dart'
Future<CompilerResult?> compileScript(
dynamic scriptOrSources, {
String fileName = 'main.dart',
List<String> additionalDills = const [],
List<String> additionalDillModules = const [],
CompilerOptions? options,
bool retainDataForTesting = false,
bool requireMain = true,
@@ -45,7 +45,7 @@ Future<CompilerResult?> compileScript(
assert(scriptOrSources is Map);
sources = scriptOrSources;
}
await setup(options, sources, additionalDills: additionalDills);
await setup(options, sources, additionalDillModules: additionalDillModules);
return await kernelForProgramInternal(
toTestUri(fileName),
options,
@@ -60,11 +60,11 @@ Future<CompilerResult?> compileScript(
Future<Component?> compileUnit(
List<String> inputs,
Map<String, dynamic> sources, {
List<String> additionalDills = const [],
List<String> additionalDillModules = const [],
CompilerOptions? options,
}) async {
options ??= new CompilerOptions();
await setup(options, sources, additionalDills: additionalDills);
await setup(options, sources, additionalDillModules: additionalDillModules);
return (await kernelForModule(
inputs.map(toTestUri).toList(),
options,
@@ -77,12 +77,12 @@ Future<Component?> compileUnit(
Future<Uint8List?> summarize(
List<String> inputs,
Map<String, dynamic> sources, {
List<String> additionalDills = const [],
List<String> additionalDillModules = const [],
CompilerOptions? options,
bool truncate = false,
}) async {
options ??= new CompilerOptions();
await setup(options, sources, additionalDills: additionalDills);
await setup(options, sources, additionalDillModules: additionalDillModules);
return await summaryFor(
inputs.map(toTestUri).toList(),
options,
@@ -104,7 +104,7 @@ Future<Uint8List?> summarize(
Future<Null> setup(
CompilerOptions options,
Map<String, dynamic> sources, {
List<String> additionalDills = const [],
List<String> additionalDillModules = const [],
}) async {
MemoryFileSystem fs = createMemoryFileSystem();
sources.forEach((name, data) {
@@ -127,7 +127,7 @@ Future<Null> setup(
options
..verify = true
..fileSystem = new HybridFileSystem(fs)
..additionalDills = additionalDills.map(toTestUri).toList();
..additionalDillModules = additionalDillModules.map(toTestUri).toList();
if (options.packagesFileUri == null) {
options.packagesFileUri = toTestUri('.dart_tool/package_config.json');
}
+1 -1
View File
@@ -79,7 +79,7 @@ Future<void> test() async {
options = new CompilerOptions()
..fileSystem = fs
..additionalDills = <Uri>[base.resolve("lib.dart.dill")]
..additionalDillModules = <Uri>[base.resolve("lib.dart.dill")]
..sdkSummary = platformDill
..target = new NoneTarget(new TargetFlags());
@@ -151,7 +151,7 @@ void main() {
var unitBC = await compileUnit(
['b.dart', 'c.dart'],
sources,
additionalDills: ['a.dill'],
additionalDillModules: ['a.dill'],
);
// Pretend that the compiled code is a summary
@@ -171,14 +171,14 @@ void main() {
var unitD1 = await compileUnit(
['d.dart'],
sources,
additionalDills: ['a.dill', 'bc.dill'],
additionalDillModules: ['a.dill', 'bc.dill'],
);
checkDCallsC(unitD1!);
var unitD2 = await compileUnit(
['d.dart'],
sources,
additionalDills: ['bc.dill', 'a.dill'],
additionalDillModules: ['bc.dill', 'a.dill'],
);
checkDCallsC(unitD2!);
});
@@ -42,7 +42,7 @@ void main() {
var summaryBC = await summarize(
['b.dart', 'c.dart'],
sourcesWithA,
additionalDills: ['a.dill'],
additionalDillModules: ['a.dill'],
);
var sourcesWithABC = new Map<String, dynamic>.from(sourcesWithA);
@@ -53,7 +53,7 @@ void main() {
var summaryD = await summarize(
['d.dart'],
sourcesWithABC,
additionalDills: ['a.dill', 'bc.dill'],
additionalDillModules: ['a.dill', 'bc.dill'],
);
checkDSummary(summaryD!);
@@ -67,7 +67,7 @@ void main() {
var summaryBC = await summarize(
['b.dart', 'c.dart'],
sourcesWithA,
additionalDills: ['a.dill'],
additionalDillModules: ['a.dill'],
);
var sourcesWithABC = new Map<String, dynamic>.from(sourcesWithA);
@@ -80,7 +80,7 @@ void main() {
var summaryD = await summarize(
['d.dart'],
sourcesWithABC,
additionalDills: ['bc.dill', 'a.dill'],
additionalDillModules: ['bc.dill', 'a.dill'],
);
checkDSummary(summaryD!);
});
@@ -100,7 +100,7 @@ void main() {
var summaryB = await summarize(
['b.dart'],
sourcesWithA,
additionalDills: ['a.dill'],
additionalDillModules: ['a.dill'],
truncate: true,
);
component = loadComponentFromBytes(summaryB!);
+1 -1
View File
@@ -2464,7 +2464,7 @@ class Outline extends Step<TestDescription, ComponentResult, FastaContext> {
serializeIfBuildingSummary: false,
buildComponent: compileMode != CompileMode.outline,
retainDataForTesting: true,
additionalDillsForTesting: alsoAppend != null
additionalDillModulesForTesting: alsoAppend != null
? [alsoAppend]
: null,
allowVerificationErrorForTesting: true,
+1 -1
View File
@@ -238,7 +238,7 @@ ProcessedOptions analyzeCommandLine(
..explicitExperimentalFlags = explicitExperimentalFlags
..environmentDefines = environmentDefines
..enableUnscheduledExperiments = enableUnscheduledExperiments
..additionalDills = linkDependencies
..additionalDillModules = linkDependencies
..emitDeps = !noDeps
..invocationModes = InvocationMode.parseArguments(invocationModes)
..verbosity = Verbosity.parseArgument(verbosity);
+2 -2
View File
@@ -324,8 +324,8 @@ class BatchCompiler {
"Platform must be omitted for the batch compiler.",
);
assert(
!options.hasAdditionalDills,
"Additional dills are not supported for the batch compiler.",
!options.hasAdditionalDillModules,
"Additional dill modules are not supported for the batch compiler.",
);
IncrementalCompilerResult compilerResult = await _incrementalCompiler!
.computeDelta(fullComponent: true);
+1 -9
View File
@@ -820,7 +820,7 @@ class FrontendCompiler implements CompilerInterface {
final String? importDill = options['import-dill'];
if (importDill != null) {
compilerOptions.additionalDills = <Uri>[
compilerOptions.additionalDillModules = <Uri>[
Uri.base.resolveUri(new Uri.file(importDill)),
];
}
@@ -865,14 +865,6 @@ class FrontendCompiler implements CompilerInterface {
incrementalSerializer = _generator.incrementalSerializer;
} else {
if (options['link-platform']) {
// TODO(aam): Remove linkedDependencies once platform is directly
// embedded into VM snapshot and http://dartbug.com/30111 is fixed.
compilerOptions.additionalDills = <Uri>[
sdkRoot.resolve(platformKernelDill),
...compilerOptions.additionalDills,
];
}
results = await _runWithPrintRedirection(
() => compileToKernel(
new KernelCompilationArguments(
@@ -199,9 +199,9 @@ Future<int> runCompilerWithCommandLineArguments(List<String> arguments) async {
final platformKernelUri = Uri.base.resolveUri(new Uri.file(platformKernel));
final additionalDills = <Uri>[];
final additionalDillModules = <Uri>[];
if (importDill != null) {
additionalDills.add(Uri.base.resolveUri(new Uri.file(importDill)));
additionalDillModules.add(Uri.base.resolveUri(new Uri.file(importDill)));
}
final verbosity = Verbosity.parseArgument(messageVerbosity);
@@ -216,7 +216,7 @@ Future<int> runCompilerWithCommandLineArguments(List<String> arguments) async {
final compilerOptions = CompilerOptions()
..sdkSummary = platformKernelUri
..fileSystem = fileSystem
..additionalDills = additionalDills
..additionalDillModules = additionalDillModules
..packagesFileUri = packagesUri
..explicitExperimentalFlags = parseExperimentalFlags(
parseExperimentalArguments(experimentalFlags),
+1 -1
View File
@@ -85,7 +85,7 @@ Future<Component> compileTestCaseToKernelProgram(
);
final options = CompilerOptions()
..target = target
..additionalDills = <Uri>[platformKernel]
..sdkSummary = platformKernel
..environmentDefines = {}
..onDiagnostic = (CfeDiagnosticMessage message) {
fail("Compilation error: ${message.plainTextFormatted.join('\n')}");
+1 -15
View File
@@ -384,10 +384,6 @@ Future<int> runCompiler(ArgResults options, String usage) async {
final Uri? packagesUri = packages != null ? resolveInputUri(packages) : null;
final platformKernelUri = Uri.base.resolveUri(new Uri.file(platformKernel));
final List<Uri> additionalDills = <Uri>[];
if (aot || linkPlatform) {
additionalDills.add(platformKernelUri);
}
final verbosity = Verbosity.parseArgument(options['verbosity']);
final errorPrinter = new ErrorPrinter(verbosity);
@@ -423,7 +419,6 @@ Future<int> runCompiler(ArgResults options, String usage) async {
final CompilerOptions compilerOptions = new CompilerOptions()
..sdkSummary = platformKernelUri
..fileSystem = fileSystem
..additionalDills = additionalDills
..packagesFileUri = packagesUri
..explicitExperimentalFlags = parseExperimentalFlags(
parseExperimentalArguments(experimentalFlags),
@@ -456,7 +451,7 @@ Future<int> runCompiler(ArgResults options, String usage) async {
additionalSources: additionalSources,
nativeAssets: nativeAssetsUri,
recordedUsages: recordedUsagesUri,
includePlatform: additionalDills.isNotEmpty,
includePlatform: aot || linkPlatform,
deleteToStringPackageUris: options['delete-tostring-package-uri'],
keepClassNamesImplementing: options['keep-class-names-implementing'],
dynamicInterface: dynamicInterfaceUri,
@@ -552,15 +547,6 @@ class KernelCompilationResults {
final Iterable<Uri>? compiledSources;
final Uri? usedPackageConfig;
KernelCompilationResults(
this.component,
this.loadedLibraries,
this.classHierarchy,
this.coreTypes,
this.compiledSources,
) : nativeAssetsLibrary = null,
usedPackageConfig = null;
KernelCompilationResults.named({
this.component,
this.loadedLibraries = const {},
+2 -2
View File
@@ -46,7 +46,7 @@ Future<Component> compileTestCaseToKernelProgram(
environmentDefines ??= <String, String>{};
final options = new CompilerOptions()
..target = target
..additionalDills = <Uri>[platformKernel]
..sdkSummary = platformKernel
..environmentDefines = environmentDefines
..packagesFileUri = packagesFileUri
..explicitExperimentalFlags = parseExperimentalFlags(
@@ -72,7 +72,7 @@ Future<Component> compileTestCaseToKernelProgram(
} finally {
await sink.close();
}
options..additionalDills = <Uri>[platformKernel, uri];
options..additionalDillModules = <Uri>[uri];
}
final Component component = (await kernelForProgram(
+2 -4
View File
@@ -29,16 +29,14 @@ import 'package:vm/modular/target/vm.dart';
import 'common_test_utils.dart';
main() {
final platformKernel = computePlatformBinariesLocation().resolve(
'vm_platform.dill',
);
final sdkRoot = computePlatformBinariesLocation();
final platformKernel = sdkRoot.resolve('vm_platform.dill');
CompilerOptions getFreshOptions() {
return new CompilerOptions()
..sdkRoot = sdkRoot
..target = new VmTarget(new TargetFlags())
..additionalDills = <Uri>[platformKernel]
..sdkSummary = platformKernel
..onDiagnostic = (CfeDiagnosticMessage message) {
fail("Compilation error: ${message.plainTextFormatted.join('\n')}");
}
@@ -108,14 +108,14 @@ Future compileToKernel(
Uri packagesFile,
Uri outputFile,
List<Uri> sources,
List<Uri> additionalDills,
List<Uri> additionalDillModules,
) async {
final state = fe.initializeCompiler(
null,
sdkSummary,
librariesFile,
packagesFile,
additionalDills,
additionalDillModules,
target,
StandardFileSystem.instance,
const <String>[],