| Index: tools/testing/dart/compiler_configuration.dart
|
| diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart
|
| index fcdd979305da5cc9f4d20ac0ecf57b714fdbe18d..e63dbbb38d5390f69cb49d46509a125e5e6338d3 100644
|
| --- a/tools/testing/dart/compiler_configuration.dart
|
| +++ b/tools/testing/dart/compiler_configuration.dart
|
| @@ -2,12 +2,14 @@
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| -import 'dart:io';
|
| +library compiler_configuration;
|
|
|
| -import 'configuration.dart';
|
| -import 'runtime_configuration.dart';
|
| -import 'test_runner.dart';
|
| -import 'test_suite.dart';
|
| +import 'dart:io' show Platform;
|
| +
|
| +import 'runtime_configuration.dart' show RuntimeConfiguration;
|
| +import 'runtime_configuration.dart' show DartPrecompiledAdbRuntimeConfiguration;
|
| +import 'test_runner.dart' show Command, CommandBuilder, CompilationCommand;
|
| +import 'test_suite.dart' show TestInformation, TestUtils;
|
|
|
| List<String> replaceDartFileWith(List<String> list, String replacement) {
|
| var copy = new List<String>.from(list);
|
| @@ -51,70 +53,84 @@ abstract class CompilerConfiguration {
|
| throw new UnsupportedError("This compiler does not support DFE.");
|
| }
|
|
|
| - factory CompilerConfiguration(Configuration configuration) {
|
| - switch (configuration.compiler) {
|
| - case Compiler.dart2analyzer:
|
| + // TODO(ahe): Remove this constructor and move the switch to
|
| + // test_options.dart. We probably want to store an instance of
|
| + // [CompilerConfiguration] in [configuration] there.
|
| + factory CompilerConfiguration(Map<String, dynamic> configuration) {
|
| + var compiler = configuration['compiler'] as String;
|
| +
|
| + // TODO(ahe): Move these booleans into a struction configuration object
|
| + // which can eventually completely replace the Map-based configuration
|
| + // object.
|
| + var isDebug = (configuration['mode'] as String) == 'debug';
|
| + var isChecked = configuration['checked'] as bool;
|
| + var isStrong = configuration['strong'] as bool;
|
| + var isHostChecked = configuration['host_checked'] as bool;
|
| + var useSdk = configuration['use_sdk'] as bool;
|
| + var isCsp = configuration['csp'] as bool;
|
| + var useBlobs = configuration['use_blobs'] as bool;
|
| + var hotReload = configuration['hot_reload'] as bool;
|
| + var hotReloadRollback = configuration['hot_reload_rollback'] as bool;
|
| + var useFastStartup = configuration['fast_startup'] as bool;
|
| + var useKernelInDart2js = configuration['dart2js_with_kernel'] as bool;
|
| +
|
| + switch (compiler) {
|
| + case 'dart2analyzer':
|
| return new AnalyzerCompilerConfiguration(
|
| - isDebug: configuration.mode.isDebug,
|
| - isChecked: configuration.isChecked,
|
| - isStrong: configuration.isStrong,
|
| - isHostChecked: configuration.isHostChecked,
|
| - useSdk: configuration.useSdk);
|
| -
|
| - case Compiler.dart2js:
|
| + isDebug: isDebug,
|
| + isChecked: isChecked,
|
| + isStrong: isStrong,
|
| + isHostChecked: isHostChecked,
|
| + useSdk: useSdk);
|
| + case 'dart2js':
|
| return new Dart2jsCompilerConfiguration(
|
| - isDebug: configuration.mode.isDebug,
|
| - isChecked: configuration.isChecked,
|
| - isHostChecked: configuration.isHostChecked,
|
| - useSdk: configuration.useSdk,
|
| - isCsp: configuration.isCsp,
|
| - useFastStartup: configuration.useFastStartup,
|
| - useKernel: configuration.useDart2JSWithKernel,
|
| - extraDart2jsOptions: configuration.dart2jsOptions);
|
| -
|
| - case Compiler.appJit:
|
| + isDebug: isDebug,
|
| + isChecked: isChecked,
|
| + isHostChecked: isHostChecked,
|
| + useSdk: useSdk,
|
| + isCsp: isCsp,
|
| + useFastStartup: useFastStartup,
|
| + useKernel: useKernelInDart2js,
|
| + extraDart2jsOptions:
|
| + TestUtils.getExtraOptions(configuration, 'dart2js_options'));
|
| + case 'app_jit':
|
| return new AppJitCompilerConfiguration(
|
| - isDebug: configuration.mode.isDebug,
|
| - isChecked: configuration.isChecked);
|
| -
|
| - case Compiler.precompiler:
|
| + isDebug: isDebug, isChecked: isChecked);
|
| + case 'precompiler':
|
| return new PrecompilerCompilerConfiguration(
|
| - isDebug: configuration.mode.isDebug,
|
| - isChecked: configuration.isChecked,
|
| - arch: configuration.architecture,
|
| - useBlobs: configuration.useBlobs,
|
| - isAndroid: configuration.system == System.android);
|
| -
|
| - case Compiler.dartk:
|
| + isDebug: isDebug,
|
| + isChecked: isChecked,
|
| + arch: configuration['arch'] as String,
|
| + useBlobs: useBlobs,
|
| + isAndroid: configuration['system'] == 'android');
|
| + case 'dartk':
|
| return new NoneCompilerConfiguration(
|
| - isDebug: configuration.mode.isDebug,
|
| - isChecked: configuration.isChecked,
|
| - isHostChecked: configuration.isHostChecked,
|
| - useSdk: configuration.useSdk,
|
| - hotReload: configuration.hotReload,
|
| - hotReloadRollback: configuration.hotReloadRollback,
|
| + isDebug: isDebug,
|
| + isChecked: isChecked,
|
| + isHostChecked: isHostChecked,
|
| + useSdk: useSdk,
|
| + hotReload: hotReload,
|
| + hotReloadRollback: hotReloadRollback,
|
| useDfe: true);
|
| -
|
| - case Compiler.dartkp:
|
| + case 'dartkp':
|
| return new PrecompilerCompilerConfiguration(
|
| - isDebug: configuration.mode.isDebug,
|
| - isChecked: configuration.isChecked,
|
| - arch: configuration.architecture,
|
| - useBlobs: configuration.useBlobs,
|
| - isAndroid: configuration.system == System.android,
|
| + isDebug: isDebug,
|
| + isChecked: isChecked,
|
| + arch: configuration['arch'] as String,
|
| + useBlobs: useBlobs,
|
| + isAndroid: configuration['system'] == 'android',
|
| useDfe: true);
|
| -
|
| - case Compiler.none:
|
| + case 'none':
|
| return new NoneCompilerConfiguration(
|
| - isDebug: configuration.mode.isDebug,
|
| - isChecked: configuration.isChecked,
|
| - isHostChecked: configuration.isHostChecked,
|
| - useSdk: configuration.useSdk,
|
| - hotReload: configuration.hotReload,
|
| - hotReloadRollback: configuration.hotReloadRollback);
|
| + isDebug: isDebug,
|
| + isChecked: isChecked,
|
| + isHostChecked: isHostChecked,
|
| + useSdk: useSdk,
|
| + hotReload: hotReload,
|
| + hotReloadRollback: hotReloadRollback);
|
| + default:
|
| + throw "Unknown compiler '$compiler'";
|
| }
|
| -
|
| - throw "unreachable";
|
| }
|
|
|
| CompilerConfiguration._subclass(
|
| @@ -124,8 +140,11 @@ abstract class CompilerConfiguration {
|
| this.isHostChecked: false,
|
| this.useSdk: false});
|
|
|
| - /// A multiplier used to give tests longer time to run.
|
| - int get timeoutMultiplier => 1;
|
| + /// Return a multiplier used to give tests longer time to run.
|
| + // TODO(ahe): Convert to getter!
|
| + int computeTimeoutMultiplier() {
|
| + return 1;
|
| + }
|
|
|
| // TODO(ahe): It shouldn't be necessary to pass [buildDir] to any of these
|
| // functions. It is fixed for a given configuration.
|
| @@ -411,7 +430,7 @@ class ComposedCompilerConfiguration extends CompilerConfiguration {
|
| static ComposedCompilerConfiguration createDartKPConfiguration(
|
| {bool isChecked,
|
| bool isHostChecked,
|
| - Architecture arch,
|
| + String arch,
|
| bool useBlobs,
|
| bool isAndroid,
|
| bool useSdk,
|
| @@ -541,8 +560,8 @@ class Dart2jsCompilerConfiguration extends Dart2xCompilerConfiguration {
|
| isHostChecked: isHostChecked,
|
| useSdk: useSdk);
|
|
|
| - int get timeoutMultiplier {
|
| - var multiplier = 1;
|
| + int computeTimeoutMultiplier() {
|
| + int multiplier = 1;
|
| if (isDebug) multiplier *= 4;
|
| if (isChecked) multiplier *= 2;
|
| if (isHostChecked) multiplier *= 16;
|
| @@ -581,7 +600,7 @@ class Dart2jsCompilerConfiguration extends Dart2xCompilerConfiguration {
|
| }
|
|
|
| class PrecompilerCompilerConfiguration extends CompilerConfiguration {
|
| - final Architecture arch;
|
| + final String arch;
|
| final bool useBlobs;
|
| final bool isAndroid;
|
| final bool useDfe;
|
| @@ -595,8 +614,8 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
|
| this.useDfe: false})
|
| : super._subclass(isDebug: isDebug, isChecked: isChecked);
|
|
|
| - int get timeoutMultiplier {
|
| - var multiplier = 2;
|
| + int computeTimeoutMultiplier() {
|
| + int multiplier = 2;
|
| if (isDebug) multiplier *= 4;
|
| if (isChecked) multiplier *= 2;
|
| return multiplier;
|
| @@ -629,9 +648,9 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
|
| Map<String, String> environmentOverrides) {
|
| String exec;
|
| if (isAndroid) {
|
| - if (arch == Architecture.arm) {
|
| + if (arch == "arm") {
|
| exec = "$buildDir/clang_x86/dart_bootstrap";
|
| - } else if (arch == Architecture.arm64) {
|
| + } else if (arch == "arm64") {
|
| exec = "$buildDir/clang_x64/dart_bootstrap";
|
| }
|
| } else {
|
| @@ -649,7 +668,7 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
|
| } else {
|
| args.add("--snapshot=$tempDir/out.S");
|
| }
|
| - if (isAndroid && arch == Architecture.arm) {
|
| + if (isAndroid && arch == 'arm') {
|
| args.add('--no-sim-use-hardfp');
|
| }
|
| args.addAll(arguments);
|
| @@ -664,13 +683,13 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
|
| CommandBuilder commandBuilder,
|
| List arguments,
|
| Map<String, String> environmentOverrides) {
|
| - String cc, shared, ldFlags;
|
| + String cc, shared, ld_flags;
|
| if (isAndroid) {
|
| var ndk = "third_party/android_tools/ndk";
|
| String triple;
|
| - if (arch == Architecture.arm) {
|
| + if (arch == "arm") {
|
| triple = "arm-linux-androideabi";
|
| - } else if (arch == Architecture.arm64) {
|
| + } else if (arch == "arm64") {
|
| triple = "aarch64-linux-android";
|
| }
|
| String host;
|
| @@ -688,37 +707,36 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration {
|
| cc = 'clang';
|
| shared = '-dynamiclib';
|
| // Tell Mac linker to give up generating eh_frame from dwarf.
|
| - ldFlags = '-Wl,-no_compact_unwind';
|
| + ld_flags = '-Wl,-no_compact_unwind';
|
| } else {
|
| throw "Platform not supported: ${Platform.operatingSystem}";
|
| }
|
|
|
| - String ccFlags;
|
| - switch (arch) {
|
| - case Architecture.x64:
|
| - case Architecture.simarm64:
|
| - ccFlags = "-m64";
|
| - break;
|
| - case Architecture.ia32:
|
| - case Architecture.simarm:
|
| - case Architecture.simmips:
|
| - ccFlags = "-m32";
|
| - break;
|
| - case Architecture.arm:
|
| - case Architecture.arm64:
|
| - ccFlags = null;
|
| - break;
|
| - case Architecture.mips:
|
| - ccFlags = "-EL";
|
| - break;
|
| - default:
|
| - throw "Architecture not supported: ${arch.name}";
|
| + String cc_flags;
|
| + if (arch == 'x64') {
|
| + cc_flags = "-m64";
|
| + } else if (arch == 'simarm64') {
|
| + cc_flags = "-m64";
|
| + } else if (arch == 'ia32') {
|
| + cc_flags = "-m32";
|
| + } else if (arch == 'simarm') {
|
| + cc_flags = "-m32";
|
| + } else if (arch == 'simmips') {
|
| + cc_flags = "-m32";
|
| + } else if (arch == 'arm') {
|
| + cc_flags = null;
|
| + } else if (arch == 'arm64') {
|
| + cc_flags = null;
|
| + } else if (arch == 'mips') {
|
| + cc_flags = "-EL";
|
| + } else {
|
| + throw "Architecture not supported: $arch";
|
| }
|
|
|
| var exec = cc;
|
| var args = <String>[];
|
| - if (ccFlags != null) args.add(ccFlags);
|
| - if (ldFlags != null) args.add(ldFlags);
|
| + if (cc_flags != null) args.add(cc_flags);
|
| + if (ld_flags != null) args.add(ld_flags);
|
| args.add(shared);
|
| args.add('-nostdlib');
|
| args.add('-o');
|
| @@ -806,8 +824,8 @@ class AppJitCompilerConfiguration extends CompilerConfiguration {
|
| AppJitCompilerConfiguration({bool isDebug, bool isChecked})
|
| : super._subclass(isDebug: isDebug, isChecked: isChecked);
|
|
|
| - int get timeoutMultiplier {
|
| - var multiplier = 1;
|
| + int computeTimeoutMultiplier() {
|
| + int multiplier = 1;
|
| if (isDebug) multiplier *= 2;
|
| if (isChecked) multiplier *= 2;
|
| return multiplier;
|
| @@ -891,7 +909,9 @@ class AnalyzerCompilerConfiguration extends CompilerConfiguration {
|
| isHostChecked: isHostChecked,
|
| useSdk: useSdk);
|
|
|
| - int get timeoutMultiplier => 4;
|
| + int computeTimeoutMultiplier() {
|
| + return 4;
|
| + }
|
|
|
| String computeCompilerPath(String buildDir) {
|
| var prefix = 'sdk/bin';
|
|
|