Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: tools/testing/dart/compiler_configuration.dart

Issue 2912563002: Revert "Revert "Revert "Refactor test option parsing code.""" (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/testing/dart/co19_test.dart ('k') | tools/testing/dart/main.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library compiler_configuration; 5 library compiler_configuration;
6 6
7 import 'dart:io' show Platform; 7 import 'dart:io' show Platform;
8 8
9 import 'runtime_configuration.dart' show RuntimeConfiguration; 9 import 'runtime_configuration.dart' show RuntimeConfiguration;
10 import 'runtime_configuration.dart' show DartPrecompiledAdbRuntimeConfiguration; 10 import 'runtime_configuration.dart' show DartPrecompiledAdbRuntimeConfiguration;
(...skipping 29 matching lines...) Expand all
40 return (path == '' || path.endsWith('/')) ? uri : Uri.parse('$uri/'); 40 return (path == '' || path.endsWith('/')) ? uri : Uri.parse('$uri/');
41 } 41 }
42 42
43 abstract class CompilerConfiguration { 43 abstract class CompilerConfiguration {
44 final bool isDebug; 44 final bool isDebug;
45 final bool isChecked; 45 final bool isChecked;
46 final bool isStrong; 46 final bool isStrong;
47 final bool isHostChecked; 47 final bool isHostChecked;
48 final bool useSdk; 48 final bool useSdk;
49 49
50 /// Only some subclasses support this check, but we statically allow calling
51 /// it on [CompilerConfiguration].
52 bool get useDfe {
53 throw new UnsupportedError("This compiler does not support DFE.");
54 }
55
56 // TODO(ahe): Remove this constructor and move the switch to 50 // TODO(ahe): Remove this constructor and move the switch to
57 // test_options.dart. We probably want to store an instance of 51 // test_options.dart. We probably want to store an instance of
58 // [CompilerConfiguration] in [configuration] there. 52 // [CompilerConfiguration] in [configuration] there.
59 factory CompilerConfiguration(Map configuration) { 53 factory CompilerConfiguration(Map configuration) {
60 String compiler = configuration['compiler']; 54 String compiler = configuration['compiler'];
61 55
62 // TODO(ahe): Move these booleans into a struction configuration object 56 // TODO(ahe): Move these booleans into a struction configuration object
63 // which can eventually completely replace the Map-based configuration 57 // which can eventually completely replace the Map-based configuration
64 // object. 58 // object.
65 bool isDebug = configuration['mode'] == 'debug'; 59 bool isDebug = configuration['mode'] == 'debug';
66 bool isChecked = configuration['checked']; 60 bool isChecked = configuration['checked'];
67 bool isStrong = configuration['strong']; 61 bool isStrong = configuration['strong'];
68 bool isHostChecked = configuration['host_checked']; 62 bool isHostChecked = configuration['host_checked'];
69 bool useSdk = configuration['use_sdk']; 63 bool useSdk = configuration['use_sdk'];
70 bool isCsp = configuration['csp']; 64 bool isCsp = configuration['csp'];
65 bool useCps = configuration['cps_ir'];
71 bool useBlobs = configuration['use_blobs']; 66 bool useBlobs = configuration['use_blobs'];
72 bool hotReload = configuration['hot_reload']; 67 bool hotReload = configuration['hot_reload'];
73 bool hotReloadRollback = configuration['hot_reload_rollback']; 68 bool hotReloadRollback = configuration['hot_reload_rollback'];
74 bool useFastStartup = configuration['fast_startup']; 69 bool useFastStartup = configuration['fast_startup'];
75 bool useKernelInDart2js = configuration['dart2js_with_kernel']; 70 bool useKernelInDart2js = configuration['dart2js_with_kernel'];
76 71
77 switch (compiler) { 72 switch (compiler) {
78 case 'dart2analyzer': 73 case 'dart2analyzer':
79 return new AnalyzerCompilerConfiguration( 74 return new AnalyzerCompilerConfiguration(
80 isDebug: isDebug, 75 isDebug: isDebug,
81 isChecked: isChecked, 76 isChecked: isChecked,
82 isStrong: isStrong, 77 isStrong: isStrong,
83 isHostChecked: isHostChecked, 78 isHostChecked: isHostChecked,
84 useSdk: useSdk); 79 useSdk: useSdk);
85 case 'dart2js': 80 case 'dart2js':
86 return new Dart2jsCompilerConfiguration( 81 return new Dart2jsCompilerConfiguration(
87 isDebug: isDebug, 82 isDebug: isDebug,
88 isChecked: isChecked, 83 isChecked: isChecked,
89 isHostChecked: isHostChecked, 84 isHostChecked: isHostChecked,
85 useCps: useCps,
90 useSdk: useSdk, 86 useSdk: useSdk,
91 isCsp: isCsp, 87 isCsp: isCsp,
92 useFastStartup: useFastStartup, 88 useFastStartup: useFastStartup,
93 useKernel: useKernelInDart2js, 89 useKernel: useKernelInDart2js,
94 extraDart2jsOptions: 90 extraDart2jsOptions:
95 TestUtils.getExtraOptions(configuration, 'dart2js_options')); 91 TestUtils.getExtraOptions(configuration, 'dart2js_options'));
96 case 'app_jit': 92 case 'app_jit':
97 return new AppJitCompilerConfiguration( 93 return new AppJitCompilerConfiguration(
98 isDebug: isDebug, isChecked: isChecked); 94 isDebug: isDebug, isChecked: isChecked);
99 case 'precompiler': 95 case 'precompiler':
100 return new PrecompilerCompilerConfiguration( 96 return new PrecompilerCompilerConfiguration(
101 isDebug: isDebug, 97 isDebug: isDebug,
102 isChecked: isChecked, 98 isChecked: isChecked,
103 arch: configuration['arch'], 99 arch: configuration['arch'],
104 useBlobs: useBlobs, 100 useBlobs: useBlobs,
105 isAndroid: configuration['system'] == 'android'); 101 isAndroid: configuration['system'] == 'android');
106 case 'dartk': 102 case 'dartk':
107 return new NoneCompilerConfiguration( 103 return new NoneCompilerConfiguration(
108 isDebug: isDebug, 104 isDebug: isDebug,
109 isChecked: isChecked, 105 isChecked: isChecked,
110 isHostChecked: isHostChecked, 106 isHostChecked: isHostChecked,
111 useSdk: useSdk, 107 useSdk: useSdk,
112 hotReload: hotReload, 108 hotReload: hotReload,
113 hotReloadRollback: hotReloadRollback, 109 hotReloadRollback: hotReloadRollback,
114 useDfe: true); 110 useDFE: true);
115 case 'dartkp': 111 case 'dartkp':
116 return new PrecompilerCompilerConfiguration( 112 return new PrecompilerCompilerConfiguration(
117 isDebug: isDebug, 113 isDebug: isDebug,
118 isChecked: isChecked, 114 isChecked: isChecked,
119 arch: configuration['arch'], 115 arch: configuration['arch'],
120 useBlobs: useBlobs, 116 useBlobs: useBlobs,
121 isAndroid: configuration['system'] == 'android', 117 isAndroid: configuration['system'] == 'android',
122 useDfe: true); 118 useDFE: true);
123 case 'none': 119 case 'none':
124 return new NoneCompilerConfiguration( 120 return new NoneCompilerConfiguration(
125 isDebug: isDebug, 121 isDebug: isDebug,
126 isChecked: isChecked, 122 isChecked: isChecked,
127 isHostChecked: isHostChecked, 123 isHostChecked: isHostChecked,
128 useSdk: useSdk, 124 useSdk: useSdk,
129 hotReload: hotReload, 125 hotReload: hotReload,
130 hotReloadRollback: hotReloadRollback); 126 hotReloadRollback: hotReloadRollback);
131 default: 127 default:
132 throw "Unknown compiler '$compiler'"; 128 throw "Unknown compiler '$compiler'";
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 List<String> originalArguments, 180 List<String> originalArguments,
185 CommandArtifact artifact) { 181 CommandArtifact artifact) {
186 return [artifact.filename]; 182 return [artifact.filename];
187 } 183 }
188 } 184 }
189 185
190 /// The "none" compiler. 186 /// The "none" compiler.
191 class NoneCompilerConfiguration extends CompilerConfiguration { 187 class NoneCompilerConfiguration extends CompilerConfiguration {
192 final bool hotReload; 188 final bool hotReload;
193 final bool hotReloadRollback; 189 final bool hotReloadRollback;
194 final bool useDfe; 190 final bool useDFE;
195 191
196 NoneCompilerConfiguration( 192 NoneCompilerConfiguration(
197 {bool isDebug, 193 {bool isDebug,
198 bool isChecked, 194 bool isChecked,
199 bool isHostChecked, 195 bool isHostChecked,
200 bool useSdk, 196 bool useSdk,
201 bool this.hotReload, 197 bool this.hotReload,
202 bool this.hotReloadRollback, 198 bool this.hotReloadRollback,
203 this.useDfe: false}) 199 this.useDFE: false})
204 : super._subclass( 200 : super._subclass(
205 isDebug: isDebug, 201 isDebug: isDebug,
206 isChecked: isChecked, 202 isChecked: isChecked,
207 isHostChecked: isHostChecked, 203 isHostChecked: isHostChecked,
208 useSdk: useSdk); 204 useSdk: useSdk);
209 205
210 bool get hasCompiler => false; 206 bool get hasCompiler => false;
211 207
212 List<String> computeRuntimeArguments( 208 List<String> computeRuntimeArguments(
213 RuntimeConfiguration runtimeConfiguration, 209 RuntimeConfiguration runtimeConfiguration,
214 String buildDir, 210 String buildDir,
215 TestInformation info, 211 TestInformation info,
216 List<String> vmOptions, 212 List<String> vmOptions,
217 List<String> sharedOptions, 213 List<String> sharedOptions,
218 List<String> originalArguments, 214 List<String> originalArguments,
219 CommandArtifact artifact) { 215 CommandArtifact artifact) {
220 List<String> args = []; 216 List<String> args = [];
221 if (useDfe) { 217 if (useDFE) {
222 args.add('--dfe=${buildDir}/gen/kernel-service.dart.snapshot'); 218 args.add('--dfe=${buildDir}/gen/kernel-service.dart.snapshot');
223 args.add('--platform=${buildDir}/patched_sdk/platform.dill'); 219 args.add('--platform=${buildDir}/patched_sdk/platform.dill');
224 } 220 }
225 if (isChecked) { 221 if (isChecked) {
226 args.add('--enable_asserts'); 222 args.add('--enable_asserts');
227 args.add('--enable_type_checks'); 223 args.add('--enable_type_checks');
228 } 224 }
229 if (hotReload) { 225 if (hotReload) {
230 args.add('--hot-reload-test-mode'); 226 args.add('--hot-reload-test-mode');
231 } else if (hotReloadRollback) { 227 } else if (hotReloadRollback) {
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 Uri.base 530 Uri.base
535 .resolveUri(nativeDirectoryToUri(buildDir)) 531 .resolveUri(nativeDirectoryToUri(buildDir))
536 .resolve('dart-sdk/bin/snapshots/dart2js.dart.snapshot') 532 .resolve('dart-sdk/bin/snapshots/dart2js.dart.snapshot')
537 ]); 533 ]);
538 } 534 }
539 } 535 }
540 536
541 /// Configuration for dart2js compiler. 537 /// Configuration for dart2js compiler.
542 class Dart2jsCompilerConfiguration extends Dart2xCompilerConfiguration { 538 class Dart2jsCompilerConfiguration extends Dart2xCompilerConfiguration {
543 final bool isCsp; 539 final bool isCsp;
540 final bool useCps;
544 final bool useFastStartup; 541 final bool useFastStartup;
545 final bool useKernel; 542 final bool useKernel;
546 final List<String> extraDart2jsOptions; 543 final List<String> extraDart2jsOptions;
544 // We cache the extended environment to save memory.
545 static Map<String, String> cpsFlagCache;
546 static Map<String, String> environmentOverridesCacheObject;
547 547
548 Dart2jsCompilerConfiguration( 548 Dart2jsCompilerConfiguration(
549 {bool isDebug, 549 {bool isDebug,
550 bool isChecked, 550 bool isChecked,
551 bool isHostChecked, 551 bool isHostChecked,
552 bool useSdk, 552 bool useSdk,
553 bool this.useCps,
553 bool this.isCsp, 554 bool this.isCsp,
554 bool this.useFastStartup, 555 bool this.useFastStartup,
555 this.useKernel, 556 this.useKernel,
556 this.extraDart2jsOptions}) 557 this.extraDart2jsOptions})
557 : super('dart2js', 558 : super('dart2js',
558 isDebug: isDebug, 559 isDebug: isDebug,
559 isChecked: isChecked, 560 isChecked: isChecked,
560 isHostChecked: isHostChecked, 561 isHostChecked: isHostChecked,
561 useSdk: useSdk); 562 useSdk: useSdk);
562 563
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 Uri preambleDir = sdk.resolve('lib/_internal/js_runtime/lib/preambles/'); 597 Uri preambleDir = sdk.resolve('lib/_internal/js_runtime/lib/preambles/');
597 return runtimeConfiguration.dart2jsPreambles(preambleDir) 598 return runtimeConfiguration.dart2jsPreambles(preambleDir)
598 ..add(artifact.filename); 599 ..add(artifact.filename);
599 } 600 }
600 } 601 }
601 602
602 class PrecompilerCompilerConfiguration extends CompilerConfiguration { 603 class PrecompilerCompilerConfiguration extends CompilerConfiguration {
603 final String arch; 604 final String arch;
604 final bool useBlobs; 605 final bool useBlobs;
605 final bool isAndroid; 606 final bool isAndroid;
606 final bool useDfe; 607 final bool useDFE;
607 608
608 PrecompilerCompilerConfiguration( 609 PrecompilerCompilerConfiguration(
609 {bool isDebug, 610 {bool isDebug,
610 bool isChecked, 611 bool isChecked,
611 this.arch, 612 this.arch,
612 this.useBlobs, 613 this.useBlobs,
613 this.isAndroid, 614 this.isAndroid,
614 this.useDfe: false}) 615 this.useDFE: false})
615 : super._subclass(isDebug: isDebug, isChecked: isChecked); 616 : super._subclass(isDebug: isDebug, isChecked: isChecked);
616 617
617 int computeTimeoutMultiplier() { 618 int computeTimeoutMultiplier() {
618 int multiplier = 2; 619 int multiplier = 2;
619 if (isDebug) multiplier *= 4; 620 if (isDebug) multiplier *= 4;
620 if (isChecked) multiplier *= 2; 621 if (isChecked) multiplier *= 2;
621 return multiplier; 622 return multiplier;
622 } 623 }
623 624
624 CommandArtifact computeCompilationArtifact( 625 CommandArtifact computeCompilationArtifact(
(...skipping 25 matching lines...) Expand all
650 if (isAndroid) { 651 if (isAndroid) {
651 if (arch == "arm") { 652 if (arch == "arm") {
652 exec = "$buildDir/clang_x86/dart_bootstrap"; 653 exec = "$buildDir/clang_x86/dart_bootstrap";
653 } else if (arch == "arm64") { 654 } else if (arch == "arm64") {
654 exec = "$buildDir/clang_x64/dart_bootstrap"; 655 exec = "$buildDir/clang_x64/dart_bootstrap";
655 } 656 }
656 } else { 657 } else {
657 exec = "$buildDir/dart_bootstrap"; 658 exec = "$buildDir/dart_bootstrap";
658 } 659 }
659 var args = <String>[]; 660 var args = <String>[];
660 if (useDfe) { 661 if (useDFE) {
661 args.add('--dfe=utils/kernel-service/kernel-service.dart'); 662 args.add('--dfe=utils/kernel-service/kernel-service.dart');
662 args.add('--platform=${buildDir}/patched_sdk/platform.dill'); 663 args.add('--platform=${buildDir}/patched_sdk/platform.dill');
663 } 664 }
664 args.add("--snapshot-kind=app-aot"); 665 args.add("--snapshot-kind=app-aot");
665 if (useBlobs) { 666 if (useBlobs) {
666 args.add("--snapshot=$tempDir/out.aotsnapshot"); 667 args.add("--snapshot=$tempDir/out.aotsnapshot");
667 args.add("--use-blobs"); 668 args.add("--use-blobs");
668 } else { 669 } else {
669 args.add("--snapshot=$tempDir/out.S"); 670 args.add("--snapshot=$tempDir/out.S");
670 } 671 }
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 RuntimeConfiguration runtimeConfiguration, 957 RuntimeConfiguration runtimeConfiguration,
957 String buildDir, 958 String buildDir,
958 TestInformation info, 959 TestInformation info,
959 List<String> vmOptions, 960 List<String> vmOptions,
960 List<String> sharedOptions, 961 List<String> sharedOptions,
961 List<String> originalArguments, 962 List<String> originalArguments,
962 CommandArtifact artifact) { 963 CommandArtifact artifact) {
963 return <String>[]; 964 return <String>[];
964 } 965 }
965 } 966 }
OLDNEW
« no previous file with comments | « tools/testing/dart/co19_test.dart ('k') | tools/testing/dart/main.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698