Index: tools/testing/dart/compiler_configuration.dart |
diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart |
index 2ad03e4cab92b70a7f77fc6adc97de16626bdd58..49368ce1cc60234084f1e0b2310966c7de4bd1df 100644 |
--- a/tools/testing/dart/compiler_configuration.dart |
+++ b/tools/testing/dart/compiler_configuration.dart |
@@ -89,19 +89,6 @@ abstract class CompilerConfiguration { |
arch: configuration['arch'], |
useBlobs: useBlobs, |
isAndroid: configuration['system'] == 'android'); |
- case 'dartk': |
- return ComposedCompilerConfiguration.createDartKConfiguration( |
- isHostChecked: isHostChecked, |
- kernel_transformers: configuration['kernel_transformers'], |
- useSdk: useSdk); |
- case 'dartkp': |
- return ComposedCompilerConfiguration.createDartKPConfiguration( |
- isHostChecked: isHostChecked, |
- arch: configuration['arch'], |
- useBlobs: useBlobs, |
- isAndroid: configuration['system'] == 'android', |
- kernel_transformers: configuration['kernel_transformers'], |
- useSdk: useSdk); |
case 'none': |
return new NoneCompilerConfiguration( |
isDebug: isDebug, |
@@ -212,257 +199,6 @@ class NoneCompilerConfiguration extends CompilerConfiguration { |
} |
} |
-/// The "dartk" compiler. |
-class DartKCompilerConfiguration extends CompilerConfiguration { |
- DartKCompilerConfiguration({bool isHostChecked, bool useSdk}) |
- : super._subclass(isHostChecked: isHostChecked, useSdk: useSdk); |
- |
- @override |
- String computeCompilerPath(String buildDir) { |
- return 'third_party/pkg/kernel/bin/dartk.dart'; |
- } |
- |
- CompilationCommand computeCompilationCommand( |
- String outputFileName, |
- String buildDir, |
- CommandBuilder commandBuilder, |
- List arguments, |
- Map<String, String> environmentOverrides) { |
- var extraArguments = [ |
- '--sdk', |
- '$buildDir/obj/gen/patched_sdk', |
- '--link', |
- '--target=vm', |
- '--out', |
- outputFileName |
- ]; |
- return commandBuilder.getKernelCompilationCommand( |
- 'dartk', |
- outputFileName, |
- true, |
- bootstrapDependencies(buildDir), |
- computeCompilerPath(buildDir), |
- []..addAll(arguments)..addAll(extraArguments), |
- environmentOverrides); |
- } |
- |
- CommandArtifact computeCompilationArtifact( |
- String buildDir, |
- String tempDir, |
- CommandBuilder commandBuilder, |
- List arguments, |
- Map<String, String> environmentOverrides) { |
- return new CommandArtifact(<Command>[ |
- this.computeCompilationCommand('$tempDir/out.dill', buildDir, |
- CommandBuilder.instance, arguments, environmentOverrides) |
- ], '$tempDir/out.dill', 'application/dart'); |
- } |
-} |
- |
-typedef List<String> CompilerArgumentsFunction( |
- List<String> globalArguments, |
- String previousCompilerOutput); |
- |
-class PipelineCommand { |
- final CompilerConfiguration compilerConfiguration; |
- final CompilerArgumentsFunction _argumentsFunction; |
- |
- PipelineCommand._(this.compilerConfiguration, this._argumentsFunction); |
- |
- factory PipelineCommand.runWithGlobalArguments(CompilerConfiguration conf) { |
- return new PipelineCommand._(conf, (List<String> globalArguments, |
- String previousOutput) { |
- assert(previousOutput == null); |
- return globalArguments; |
- }); |
- } |
- |
- factory PipelineCommand.runWithDartOrKernelFile(CompilerConfiguration conf) { |
- return new PipelineCommand._(conf, (List<String> globalArguments, |
- String previousOutput) { |
- var filtered = globalArguments |
- .where((String name) => name.endsWith('.dart') || |
- name.endsWith('.dill')) |
- .toList(); |
- assert(filtered.length == 1); |
- return filtered; |
- }); |
- } |
- |
- factory PipelineCommand.runWithPreviousKernelOutput( |
- CompilerConfiguration conf) { |
- return new PipelineCommand._(conf, (List<String> globalArguments, |
- String previousOutput) { |
- assert(previousOutput.endsWith('.dill')); |
- return [previousOutput]; |
- }); |
- } |
- |
- List<String> extractArguments(List<String> globalArguments, |
- String previousOutput) { |
- return _argumentsFunction(globalArguments, previousOutput); |
- } |
-} |
- |
-class ComposedCompilerConfiguration extends CompilerConfiguration { |
- final List<PipelineCommand> pipelineCommands; |
- |
- ComposedCompilerConfiguration(this.pipelineCommands) |
- : super._subclass(); |
- |
- CommandArtifact computeCompilationArtifact( |
- String buildDir, |
- String tempDir, |
- CommandBuilder commandBuilder, |
- List globalArguments, |
- Map<String, String> environmentOverrides) { |
- |
- List<Command> allCommands = []; |
- |
- // The first compilation command is as usual. |
- var arguments = pipelineCommands[0].extractArguments(globalArguments, null); |
- CommandArtifact artifact = |
- pipelineCommands[0].compilerConfiguration.computeCompilationArtifact( |
- buildDir, tempDir, commandBuilder, arguments, environmentOverrides); |
- allCommands.addAll(artifact.commands); |
- |
- // The following compilation commands are based on the output of the |
- // previous one. |
- for (int i = 1; i < pipelineCommands.length; i++) { |
- PipelineCommand pc = pipelineCommands[i]; |
- |
- arguments = pc.extractArguments(globalArguments, artifact.filename); |
- artifact = pc.compilerConfiguration.computeCompilationArtifact( |
- buildDir, tempDir, commandBuilder, arguments, environmentOverrides); |
- |
- allCommands.addAll(artifact.commands); |
- } |
- |
- return new CommandArtifact( |
- allCommands, artifact.filename, artifact.mimeType); |
- } |
- |
- List<String> computeCompilerArguments(vmOptions, sharedOptions, args) { |
- // The result will be passed as an input to [extractArguments] |
- // (i.e. the arguments to the [PipelineCommand]). |
- return new List<String>.from(sharedOptions)..addAll(args); |
- } |
- |
- List<String> computeRuntimeArguments( |
- RuntimeConfiguration runtimeConfiguration, |
- String buildDir, |
- TestInformation info, |
- List<String> vmOptions, |
- List<String> sharedOptions, |
- List<String> originalArguments, |
- CommandArtifact artifact) { |
- return <String>[artifact.filename]; |
- } |
- |
- static ComposedCompilerConfiguration createDartKPConfiguration( |
- {bool isHostChecked, String arch, bool useBlobs, bool isAndroid, |
- String kernel_transformers, bool useSdk}) { |
- var nested = []; |
- |
- // Compile with dartk. |
- nested.add(new PipelineCommand.runWithGlobalArguments( |
- new DartKCompilerConfiguration(isHostChecked: isHostChecked, |
- useSdk: useSdk))); |
- |
- // Run zero or more transformations. |
- addKernelTransformations(nested, kernel_transformers); |
- |
- // Run the normal precompiler. |
- nested.add(new PipelineCommand.runWithPreviousKernelOutput( |
- new PrecompilerCompilerConfiguration( |
- arch: arch, useBlobs: useBlobs, isAndroid: isAndroid))); |
- |
- return new ComposedCompilerConfiguration(nested); |
- } |
- |
- static ComposedCompilerConfiguration createDartKConfiguration( |
- {bool isHostChecked, bool useSdk, String kernel_transformers}) { |
- var nested = []; |
- |
- // Compile with dartk. |
- nested.add(new PipelineCommand.runWithGlobalArguments( |
- new DartKCompilerConfiguration(isHostChecked: isHostChecked, |
- useSdk: useSdk))); |
- |
- // Run zero or more transformations. |
- addKernelTransformations(nested, kernel_transformers); |
- |
- return new ComposedCompilerConfiguration(nested); |
- } |
- |
- static void addKernelTransformations(List<PipelineCommand> nested, |
- String kernel_transformers) { |
- if (kernel_transformers != null && kernel_transformers.length > 0) { |
- List<String> names = kernel_transformers.split(','); |
- for (var name in names) { |
- var transformation = new KernelTransformation(name); |
- nested.add(nested.isEmpty |
- ? new PipelineCommand.runWithDartOrKernelFile(transformation) |
- : new PipelineCommand.runWithPreviousKernelOutput(transformation)); |
- } |
- } |
- } |
-} |
- |
-class KernelTransformation extends CompilerConfiguration { |
- final String transformation; |
- |
- KernelTransformation(this.transformation) : super._subclass(); |
- |
- CommandArtifact computeCompilationArtifact( |
- String buildDir, |
- String tempDir, |
- CommandBuilder commandBuilder, |
- List arguments, |
- Map<String, String> environmentOverrides) { |
- assert(arguments.length == 1); |
- assert(arguments.last.contains('/')); |
- assert(arguments.last.endsWith('.dill')); |
- |
- // The --kernel-transformers=a,b can be specified as |
- // a = <name> |
- // a = <name>:<path-to-transformer-executable> |
- int colonIndex = transformation.indexOf(':'); |
- String transformationName = transformation; |
- String executable; |
- if (colonIndex > 0) { |
- executable = transformation.substring(colonIndex + 1); |
- transformationName = transformation.substring(0, colonIndex); |
- } |
- |
- // The transformed output will be always written to a new file in the |
- // test-specific temporary directory. |
- var inputFile = arguments.last; |
- var baseInputFilename = inputFile.substring( |
- inputFile.lastIndexOf('/') + 1, inputFile.length - '.dill'.length); |
- var outputFile = '$tempDir/$baseInputFilename.$transformationName.dill'; |
- |
- // Use the user-supplied transformer or fall back to `transformer.dart`. |
- List<String> transformerArguments; |
- bool useBatchMode = false; |
- if (executable == null) { |
- executable = 'third_party/pkg/kernel/bin/transform.dart'; |
- transformerArguments = |
- ['-f', 'bin', '-t', transformation, '-o', outputFile, inputFile]; |
- useBatchMode = true; |
- } else { |
- transformerArguments = [inputFile, outputFile]; |
- } |
- |
- var command = commandBuilder.getKernelTransformationCommand( |
- transformationName, executable, transformerArguments, outputFile, |
- environmentOverrides, useBatchMode); |
- |
- return new CommandArtifact( |
- <Command>[ command ], outputFile, 'application/dart'); |
- } |
-} |
- |
/// Common configuration for dart2js-based tools, such as, dart2js |
class Dart2xCompilerConfiguration extends CompilerConfiguration { |
final String moniker; |