mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 21:11:19 +00:00
Add getTarget method to CompilerCommandLine
The method is used to create an instance of a backend target class. CompilerCommandLine already has the necessary information for this ("target" name string and "strongMode" flag). Additionally, a backed target instance is now not created in fasta.dart/parseScriptInFileSystem, but should be passed at the call site. R=ahe@google.com, scheglov@google.com Review-Url: https://codereview.chromium.org/2932513003 .
This commit is contained in:
parent
90363faa38
commit
aa8ca9244a
|
@ -24,8 +24,6 @@ import 'ticker.dart' show Ticker;
|
|||
|
||||
import 'translate_uri.dart' show TranslateUri;
|
||||
|
||||
import 'package:kernel/target/targets.dart' show getTarget, TargetFlags;
|
||||
|
||||
const int iterations = const int.fromEnvironment("iterations", defaultValue: 1);
|
||||
|
||||
Future mainEntryPoint(List<String> arguments) async {
|
||||
|
@ -73,11 +71,8 @@ Future compilePlatformInternal(CompilerContext c, Ticker ticker, Uri patchedSdk,
|
|||
.parse(c.fileSystem, patchedSdk, packages: c.options.packages);
|
||||
ticker.logMs("Read packages file");
|
||||
|
||||
DillTarget dillTarget = new DillTarget(
|
||||
ticker,
|
||||
uriTranslator,
|
||||
getTarget(
|
||||
c.options.target, new TargetFlags(strongMode: c.options.strongMode)));
|
||||
DillTarget dillTarget =
|
||||
new DillTarget(ticker, uriTranslator, c.options.target);
|
||||
KernelTarget kernelTarget =
|
||||
new KernelTarget(c.fileSystem, dillTarget, uriTranslator, c.uriToSource);
|
||||
|
||||
|
|
|
@ -10,6 +10,9 @@ import 'command_line.dart' show CommandLine, argumentError;
|
|||
|
||||
import 'compiler_context.dart' show CompilerContext;
|
||||
|
||||
import 'package:kernel/target/targets.dart'
|
||||
show Target, getTarget, TargetFlags, targets;
|
||||
|
||||
const Map<String, dynamic> optionSpecification = const <String, dynamic>{
|
||||
"--compile-sdk": Uri,
|
||||
"--fatal": ",",
|
||||
|
@ -60,6 +63,16 @@ class CompilerCommandLine extends CommandLine {
|
|||
} else if (arguments.isEmpty) {
|
||||
return argumentError(usage, "No Dart file specified.");
|
||||
}
|
||||
|
||||
Target target =
|
||||
getTarget(targetName, new TargetFlags(strongMode: strongMode));
|
||||
if (target == null) {
|
||||
return argumentError(
|
||||
usage,
|
||||
"Target '${targetName}' not recognized. "
|
||||
"Valid targets are:\n ${targets.keys.join("\n ")}");
|
||||
}
|
||||
options["target"] = target;
|
||||
}
|
||||
|
||||
Uri get output {
|
||||
|
@ -90,10 +103,12 @@ class CompilerCommandLine extends CommandLine {
|
|||
|
||||
bool get strongMode => options.containsKey("--strong-mode");
|
||||
|
||||
String get target {
|
||||
String get targetName {
|
||||
return options["-t"] ?? options["--target"] ?? "vm_fasta";
|
||||
}
|
||||
|
||||
Target get target => options["target"];
|
||||
|
||||
static dynamic withGlobalOptions(String programName, List<String> arguments,
|
||||
dynamic f(CompilerContext context)) {
|
||||
return CompilerContext.withGlobalOptions(
|
||||
|
|
|
@ -18,7 +18,7 @@ import 'package:kernel/binary/ast_to_binary.dart'
|
|||
|
||||
import 'package:kernel/kernel.dart' show Library, Program, loadProgramFromBytes;
|
||||
|
||||
import 'package:kernel/target/targets.dart' show getTarget, TargetFlags;
|
||||
import 'package:kernel/target/targets.dart' show Target;
|
||||
|
||||
import 'compiler_command_line.dart' show CompilerCommandLine;
|
||||
|
||||
|
@ -114,11 +114,7 @@ class CompileTask {
|
|||
CompileTask(this.c, this.ticker);
|
||||
|
||||
DillTarget createDillTarget(TranslateUri uriTranslator) {
|
||||
return new DillTarget(
|
||||
ticker,
|
||||
uriTranslator,
|
||||
getTarget(c.options.target,
|
||||
new TargetFlags(strongMode: c.options.strongMode)));
|
||||
return new DillTarget(ticker, uriTranslator, c.options.target);
|
||||
}
|
||||
|
||||
KernelTarget createKernelTarget(
|
||||
|
@ -176,17 +172,16 @@ class CompileTask {
|
|||
}
|
||||
|
||||
Future<CompilationResult> parseScript(
|
||||
Uri fileName, Uri packages, Uri patchedSdk,
|
||||
{bool verbose: false, bool strongMode: false}) async {
|
||||
return parseScriptInFileSystem(
|
||||
fileName, PhysicalFileSystem.instance, packages, patchedSdk,
|
||||
verbose: verbose, strongMode: strongMode);
|
||||
Uri fileName, Uri packages, Uri patchedSdk, Target backendTarget,
|
||||
{bool verbose: false}) async {
|
||||
return parseScriptInFileSystem(fileName, PhysicalFileSystem.instance,
|
||||
packages, patchedSdk, backendTarget,
|
||||
verbose: verbose);
|
||||
}
|
||||
|
||||
Future<CompilationResult> parseScriptInFileSystem(
|
||||
Uri fileName, FileSystem fileSystem, Uri packages, Uri patchedSdk,
|
||||
{bool verbose: false, bool strongMode: false, String backendTarget}) async {
|
||||
backendTarget ??= "vm_fasta";
|
||||
Future<CompilationResult> parseScriptInFileSystem(Uri fileName,
|
||||
FileSystem fileSystem, Uri packages, Uri patchedSdk, Target backendTarget,
|
||||
{bool verbose: false}) async {
|
||||
try {
|
||||
if (!await fileSystem.entityForUri(fileName).exists()) {
|
||||
return new CompilationResult.error(
|
||||
|
@ -202,8 +197,8 @@ Future<CompilationResult> parseScriptInFileSystem(
|
|||
TranslateUri uriTranslator =
|
||||
await TranslateUri.parse(fileSystem, patchedSdk, packages: packages);
|
||||
final Ticker ticker = new Ticker(isVerbose: verbose);
|
||||
final DillTarget dillTarget = new DillTarget(ticker, uriTranslator,
|
||||
getTarget(backendTarget, new TargetFlags(strongMode: strongMode)));
|
||||
final DillTarget dillTarget =
|
||||
new DillTarget(ticker, uriTranslator, backendTarget);
|
||||
_appendDillForUri(dillTarget, patchedSdk.resolve('platform.dill'));
|
||||
final KernelTarget kernelTarget =
|
||||
new KernelTarget(fileSystem, dillTarget, uriTranslator);
|
||||
|
@ -268,6 +263,8 @@ Future writeDepsFile(Uri script, Uri depsFile, Uri output,
|
|||
Ticker ticker = new Ticker(isVerbose: verbose);
|
||||
await CompilerCommandLine.withGlobalOptions("", [""],
|
||||
(CompilerContext c) async {
|
||||
c.options.options["--target"] = backendTarget;
|
||||
c.options.options["--strong-mode"] = false;
|
||||
c.options.options["--packages"] = packages;
|
||||
if (verbose) {
|
||||
c.options.options["--verbose"] = true;
|
||||
|
@ -277,8 +274,8 @@ Future writeDepsFile(Uri script, Uri depsFile, Uri output,
|
|||
TranslateUri uriTranslator = await TranslateUri.parse(c.fileSystem, sdk,
|
||||
packages: c.options.packages);
|
||||
ticker.logMs("Read packages file");
|
||||
DillTarget dillTarget = new DillTarget(ticker, uriTranslator,
|
||||
getTarget(backendTarget, new TargetFlags(strongMode: false)));
|
||||
DillTarget dillTarget =
|
||||
new DillTarget(ticker, uriTranslator, c.options.target);
|
||||
_appendDillForUri(dillTarget, platform);
|
||||
KernelTarget kernelTarget = new KernelTarget(
|
||||
PhysicalFileSystem.instance, dillTarget, uriTranslator, c.uriToSource);
|
||||
|
|
|
@ -18,6 +18,9 @@ import 'package:front_end/physical_file_system.dart';
|
|||
|
||||
import 'fasta.dart' as fasta;
|
||||
|
||||
import 'package:kernel/target/targets.dart' show TargetFlags;
|
||||
import 'package:kernel/target/vm_fasta.dart' show VmFastaTarget;
|
||||
|
||||
/// Compilation status codes.
|
||||
///
|
||||
/// Note: The [index] property of these constants must match
|
||||
|
@ -84,9 +87,9 @@ Future<CompilationResult> parseScriptInFileSystem(
|
|||
}
|
||||
|
||||
try {
|
||||
return await fasta.parseScriptInFileSystem(
|
||||
script, fileSystem, packagesUri, patchedSdk,
|
||||
verbose: verbose, strongMode: strongMode);
|
||||
return await fasta.parseScriptInFileSystem(script, fileSystem, packagesUri,
|
||||
patchedSdk, new VmFastaTarget(new TargetFlags(strongMode: strongMode)),
|
||||
verbose: verbose);
|
||||
} catch (err, stack) {
|
||||
return new CompilationResult.crash(err, stack);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue