Add ./tools/test.py -c precompiler -r dart_precompiled.

- Make --gen/run-precompiled-snapshot take a directory to use for the snapshot pieces.
 - Throw on Platform.executeable to prevent tests from becoming fork-bombs.
 - Update status files so 'dart_precompiled' is generally expected to behave the same as 'vm'.

Currently multitests will fail unless run with --jobs=1 because the test harness assigns them the same temporary directory.

Running this also requires a great deal of space. My out directory is 380G.

BUG=http://dartbug.com/24975
R=fschneider@google.com, srdjan@google.com

Review URL: https://codereview.chromium.org/1507943002 .
This commit is contained in:
Ryan Macnak 2015-12-18 12:08:10 -08:00
parent f1ea359020
commit 6b964b83ac
23 changed files with 482 additions and 123 deletions

View file

@ -71,6 +71,12 @@ static bool has_gen_precompiled_snapshot = false;
static bool has_run_precompiled_snapshot = false;
// Value of the --gen/run_precompiled_snapshot flag.
// (This pointer points into an argv buffer and does not need to be
// free'd.)
static const char* precompiled_snapshot_directory = NULL;
// Global flag that is used to indicate that we want to compile everything in
// the same way as precompilation before main, then continue running in the
// same process.
@ -304,16 +310,18 @@ static bool ProcessCompileAllOption(const char* arg,
static bool ProcessGenPrecompiledSnapshotOption(
const char* arg,
CommandLineOptions* vm_options) {
ASSERT(arg != NULL);
if (*arg != '\0') {
return false;
}
// Ensure that we are not already running using a full snapshot.
if (isolate_snapshot_buffer != NULL) {
Log::PrintErr("Precompiled snapshots must be generated with"
" dart_no_snapshot.\n");
return false;
}
ASSERT(arg != NULL);
if ((arg[0] == '=') || (arg[0] == ':')) {
precompiled_snapshot_directory = &arg[1];
} else {
precompiled_snapshot_directory = arg;
}
has_gen_precompiled_snapshot = true;
vm_options->AddArgument("--precompilation");
return true;
@ -324,8 +332,10 @@ static bool ProcessRunPrecompiledSnapshotOption(
const char* arg,
CommandLineOptions* vm_options) {
ASSERT(arg != NULL);
if (*arg != '\0') {
return false;
precompiled_snapshot_directory = arg;
if ((precompiled_snapshot_directory[0] == '=') ||
(precompiled_snapshot_directory[0] == ':')) {
precompiled_snapshot_directory = &precompiled_snapshot_directory[1];
}
has_run_precompiled_snapshot = true;
vm_options->AddArgument("--precompilation");
@ -1009,34 +1019,67 @@ static void ServiceStreamCancelCallback(const char* stream_id) {
}
static void WriteSnapshotFile(const char* filename,
const uint8_t* buffer,
const intptr_t size) {
File* file = File::Open(filename, File::kWriteTruncate);
static void WritePrecompiledSnapshotFile(const char* filename,
const uint8_t* buffer,
const intptr_t size) {
char* concat = NULL;
const char* qualified_filename;
if (strlen(precompiled_snapshot_directory) > 0) {
intptr_t len = snprintf(NULL, 0, "%s/%s",
precompiled_snapshot_directory, filename);
concat = new char[len + 1];
snprintf(concat, len + 1, "%s/%s",
precompiled_snapshot_directory, filename);
qualified_filename = concat;
} else {
qualified_filename = filename;
}
File* file = File::Open(qualified_filename, File::kWriteTruncate);
ASSERT(file != NULL);
if (!file->WriteFully(buffer, size)) {
ErrorExit(kErrorExitCode,
"Unable to open file %s for writing snapshot\n",
filename);
qualified_filename);
}
delete file;
if (concat != NULL) {
delete concat;
}
}
static void ReadSnapshotFile(const char* filename,
const uint8_t** buffer) {
void* file = DartUtils::OpenFile(filename, false);
static void ReadPrecompiledSnapshotFile(const char* filename,
const uint8_t** buffer) {
char* concat = NULL;
const char* qualified_filename;
if (strlen(precompiled_snapshot_directory) > 0) {
intptr_t len = snprintf(NULL, 0, "%s/%s",
precompiled_snapshot_directory, filename);
concat = new char[len + 1];
snprintf(concat, len + 1, "%s/%s",
precompiled_snapshot_directory, filename);
qualified_filename = concat;
} else {
qualified_filename = filename;
}
void* file = DartUtils::OpenFile(qualified_filename, false);
if (file == NULL) {
ErrorExit(kErrorExitCode,
"Error: Unable to open file %s for reading snapshot\n", filename);
"Error: Unable to open file %s for reading snapshot\n",
qualified_filename);
}
intptr_t len = -1;
DartUtils::ReadFile(buffer, &len, file);
if (*buffer == NULL || len == -1) {
ErrorExit(kErrorExitCode,
"Error: Unable to read snapshot file %s\n", filename);
"Error: Unable to read snapshot file %s\n", qualified_filename);
}
DartUtils::CloseFile(file);
if (concat != NULL) {
delete concat;
}
}
@ -1215,15 +1258,15 @@ bool RunMainIsolate(const char* script_name,
&instructions_buffer,
&instructions_size);
CHECK_RESULT(result);
WriteSnapshotFile(kPrecompiledVmIsolateName,
vm_isolate_buffer,
vm_isolate_size);
WriteSnapshotFile(kPrecompiledIsolateName,
isolate_buffer,
isolate_size);
WriteSnapshotFile(kPrecompiledInstructionsName,
instructions_buffer,
instructions_size);
WritePrecompiledSnapshotFile(kPrecompiledVmIsolateName,
vm_isolate_buffer,
vm_isolate_size);
WritePrecompiledSnapshotFile(kPrecompiledIsolateName,
isolate_buffer,
isolate_size);
WritePrecompiledSnapshotFile(kPrecompiledInstructionsName,
instructions_buffer,
instructions_size);
} else {
if (has_compile_all) {
result = Dart_CompileAll();
@ -1426,8 +1469,10 @@ void main(int argc, char** argv) {
if (has_run_precompiled_snapshot) {
instructions_snapshot = reinterpret_cast<const uint8_t*>(
LoadLibrarySymbol(kPrecompiledLibraryName, kPrecompiledSymbolName));
ReadSnapshotFile(kPrecompiledVmIsolateName, &vm_isolate_snapshot_buffer);
ReadSnapshotFile(kPrecompiledIsolateName, &isolate_snapshot_buffer);
ReadPrecompiledSnapshotFile(kPrecompiledVmIsolateName,
&vm_isolate_snapshot_buffer);
ReadPrecompiledSnapshotFile(kPrecompiledIsolateName,
&isolate_snapshot_buffer);
}
// Initialize the Dart VM.

View file

@ -45,12 +45,28 @@ void FUNCTION_NAME(Platform_LocalHostname)(Dart_NativeArguments args) {
void FUNCTION_NAME(Platform_ExecutableName)(Dart_NativeArguments args) {
ASSERT(Platform::GetExecutableName() != NULL);
if (Dart_IsRunningPrecompiledCode()) {
// This is a work-around to be able to use most of the existing test suite
// for precompilation. Many tests do something like Process.run(
// Platform.executable, some_other_script.dart). But with precompilation
// the script is already fixed, so the spawned process runs the same script
// again and we have a fork-bomb.
Dart_ThrowException(Dart_NewStringFromCString(
"Platform.executable not supported under precompilation"));
UNREACHABLE();
}
Dart_SetReturnValue(
args, Dart_NewStringFromCString(Platform::GetExecutableName()));
}
void FUNCTION_NAME(Platform_ResolvedExecutableName)(Dart_NativeArguments args) {
if (Dart_IsRunningPrecompiledCode()) {
Dart_ThrowException(Dart_NewStringFromCString(
"Platform.resolvedExecutable not supported under precompilation"));
UNREACHABLE();
}
if (Platform::GetResolvedExecutableName() != NULL) {
Dart_SetReturnValue(
args, Dart_NewStringFromCString(Platform::GetResolvedExecutableName()));

View file

@ -2819,4 +2819,7 @@ DART_EXPORT Dart_Handle Dart_CreatePrecompiledSnapshot(
uint8_t** instructions_snapshot_buffer,
intptr_t* instructions_snapshot_size);
DART_EXPORT bool Dart_IsRunningPrecompiledCode();
#endif /* INCLUDE_DART_API_H_ */ /* NOLINT */

View file

@ -2,7 +2,7 @@
# 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.
[ $compiler == none && $runtime == vm ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) ]
evaluate_activation_test/instance: RuntimeError # http://dartbug.com/20047
evaluate_activation_test/scope: RuntimeError # http://dartbug.com/20047
@ -21,5 +21,5 @@ developer_extension_test: SkipByDesign
[ $arch == arm ]
process_service_test: Pass, Fail # Issue 24344
[ $noopt ]
[ ($noopt || $compiler == precompiler) ]
*: Skip # Issue 24651

View file

@ -57,7 +57,7 @@ dart/inline_stack_frame_test: RuntimeError, Pass # Issue 7953
# Data uri's not supported by dart2js or the analyzer.
dart/data_uri*test: Skip
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
dart/data_uri_import_test/wrongmime: RuntimeError, OK # VM is more restrictive than the browser
dart/data_uri_import_test/nomime: RuntimeError, OK
dart/data_uri_import_test/nocharset: RuntimeError, OK
@ -78,10 +78,16 @@ dart/snapshot_version_test: SkipByDesign # Spawns processes
dart/spawn_infinite_loop_test: Skip # VM shutdown test
dart/spawn_shutdown_test: Skip # VM Shutdown test
[ $runtime == vm && $mode == debug && $builder_tag == asan ]
[ ($runtime == vm || $runtime == dart_precompiled) && $mode == debug && $builder_tag == asan ]
cc/Dart2JSCompileAll: Skip # Timeout.
[ $noopt ]
dart/redirection_type_shuffling_test: CompileTimeError # Imports dart:mirrors
dart/byte_array_test: Crash # Incompatible flag --disable_alloc_stubs_after_gc
[ $noopt || $compiler == precompiler ]
dart/redirection_type_shuffling_test: CompileTimeError # Imports dart:mirrors
dart/inline_stack_frame_test: Fail # Issue 24783 - inlined frames missing
[ $runtime == dart_precompiled ]
dart/optimized_stacktrace_test: Fail
dart/data_uri_spawn_test: RuntimeError # Isolate.spawnUri

View file

@ -5974,4 +5974,9 @@ DART_EXPORT Dart_Handle Dart_CreatePrecompiledSnapshot(
return Api::Success();
}
DART_EXPORT bool Dart_IsRunningPrecompiledCode() {
return Dart::IsRunningPrecompiledCode();
}
} // namespace dart

View file

@ -1087,6 +1087,7 @@ void Precompiler::VisitFunctions(FunctionVisitor* visitor) {
for (intptr_t j = 0; j < closures.Length(); j++) {
function ^= closures.At(j);
visitor->VisitFunction(function);
ASSERT(!function.HasImplicitClosureFunction());
}
}

View file

@ -24,3 +24,5 @@ sample_extension/test/sample_extension_test: Skip # Issue 14705
[ $arch == simarm64 ]
*: Skip
[ $runtime == dart_precompiled ]
sample_extension: RuntimeError # Platform.executable

View file

@ -2,7 +2,7 @@
# 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.
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
*: Skip
[ $compiler == dart2js && $runtime == none ]

View file

@ -3,7 +3,7 @@
# BSD-style license that can be found in the LICENSE file.
[ $compiler == none && ($runtime == vm || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && (($runtime == vm || $runtime == dart_precompiled) || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: Fail # Issue 22200
LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: Fail # Issue 22200
@ -38,7 +38,7 @@ LibTest/isolate/Isolate/spawn_A02_t02: RuntimeError # Dart issue 15617
LibTest/core/Symbol/Symbol_A01_t03: RuntimeError # Issue 13596
LibTest/core/Symbol/Symbol_A01_t05: RuntimeError # Issue 13596
[ $compiler == none && $runtime == vm ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) ]
LibTest/typed_data/Float32x4/reciprocalSqrt_A01_t01: Pass, Fail # co19 issue 599
LibTest/typed_data/Float32x4/reciprocal_A01_t01: Pass, Fail # co19 issue 599
Language/Expressions/Instance_Creation/Const/abstract_class_t01: MissingCompileTimeError # Issue 22007
@ -48,16 +48,16 @@ Language/Libraries_and_Scripts/Imports/invalid_uri_t02: Fail
Language/Libraries_and_Scripts/Exports/invalid_uri_t02: Fail
Language/Libraries_and_Scripts/Parts/syntax_t06: Fail
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
LibTest/math/MutableRectangle/MutableRectangle.fromPoints_A01_t01: Pass, RuntimeError # co19-roll r607: Please triage this failure
[ $compiler == none && $runtime == vm && $mode == debug ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) && $mode == debug ]
LibTest/core/List/List_class_A01_t02: Pass, Slow
[ $compiler == none && $runtime == vm && ($arch != x64 && $arch != simarm64) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) && ($arch != x64 && $arch != simarm64) ]
LibTest/core/int/operator_left_shift_A01_t02: Fail # co19 issue 129
[ $compiler == none && $runtime == vm && $arch == mips ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) && $arch == mips ]
LibTest/core/double/toInt_A01_t01: Fail
# These tests take too much memory (300 MB) for our 1 GB test machine.
# co19 issue 673. http://code.google.com/p/co19/issues/detail?id=673
@ -65,30 +65,30 @@ LibTest/core/List/List_class_A01_t02: Skip # co19 issue 673
LibTest/collection/ListMixin/ListMixin_class_A01_t02: Skip # co19 issue 673
LibTest/collection/ListBase/ListBase_class_A01_t02: Skip # co19 issue 673
[ $compiler == none && $runtime == vm && $arch == mips && $mode == debug ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) && $arch == mips && $mode == debug ]
LibTest/isolate/Isolate/spawnUri_A01_t04: Crash, Pass # Issue 17440
LibTest/isolate/Isolate/spawn_A01_t04: Crash, Pass # Issue 17440
[ $compiler == none && $runtime == vm && ($arch == simarm || $arch == simarmv5te || $arch == simmips || $arch == simarm64) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) && ($arch == simarm || $arch == simarmv5te || $arch == simmips || $arch == simarm64) ]
LibTest/core/Uri/Uri_A06_t03: Skip # Timeout
LibTest/collection/ListMixin/ListMixin_class_A01_t01: Skip # Timeout
LibTest/collection/ListBase/ListBase_class_A01_t01: Skip # Timeout
LibTest/collection/ListMixin/ListMixin_class_A01_t02: Skip # Timeout
LibTest/collection/ListBase/ListBase_class_A01_t02: Skip # Timeout
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
LibTest/isolate/Isolate/spawn_A02_t01: Skip # co19 issue 667
LibTest/html/*: SkipByDesign # dart:html not supported on VM.
LayoutTests/fast/*: SkipByDesign # DOM not supported on VM.
WebPlatformTest/*: SkipByDesign # dart:html not supported on VM.
[ $runtime == vm && $mode == debug && $builder_tag == asan ]
[ ($runtime == vm || $runtime == dart_precompiled) && $mode == debug && $builder_tag == asan ]
Language/Types/Interface_Types/subtype_t27: Skip # Issue 21174.
[ $runtime == vm && $arch == arm ]
[ ($runtime == vm || $runtime == dart_precompiled) && $arch == arm ]
LibTest/typed_data/Float32x4/operator_multiplication_A01_t01: Fail # Dart issue 24416
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
# co19 update Sep 29, 2015 (3ed795ea02e022ef19c77cf1b6095b7c8f5584d0)
Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t01: MissingCompileTimeError # Please triage this failure
Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t02: MissingCompileTimeError # Please triage this failure
@ -131,10 +131,10 @@ Language/Mixins/declaring_constructor_t01: MissingCompileTimeError # Please tria
Language/Mixins/not_object_superclass_t01: MissingCompileTimeError # Please triage this failure
Language/Mixins/reference_to_super_t01: MissingCompileTimeError # Please triage this failure
[ $runtime == vm && $mode == debug ]
[ ($runtime == vm || $runtime == dart_precompiled) && $mode == debug ]
Language/Mixins/Mixin_Application/wrong_type_t02: Crash # Please triage this failure
[ $runtime == vm && $checked ]
[ ($runtime == vm || $runtime == dart_precompiled) && $checked ]
Language/Errors_and_Warnings/static_warning_t01: RuntimeError # Please triage this failure
Language/Errors_and_Warnings/static_warning_t02: RuntimeError # Please triage this failure
Language/Errors_and_Warnings/static_warning_t03: RuntimeError # Please triage this failure
@ -142,7 +142,7 @@ Language/Errors_and_Warnings/static_warning_t04: RuntimeError # Please triage th
Language/Errors_and_Warnings/static_warning_t05: RuntimeError # Please triage this failure
Language/Errors_and_Warnings/static_warning_t06: RuntimeError # Please triage this failure
[ $runtime == vm && $noopt ]
[ ($noopt || $compiler == precompiler) ]
LibTest/collection/ListBase/ListBase_class_A01_t02: Pass, Timeout
LibTest/collection/ListMixin/ListMixin_class_A01_t02: Pass, Timeout
LibTest/core/Map/Map_class_A01_t04: Pass, Timeout
@ -152,3 +152,6 @@ Language/Mixins/Mixin_Application/error_t02: Pass
Language/Mixins/declaring_constructor_t01: Pass
Language/Expressions/Property_Extraction/Named_Constructor_Extraction/deferred_type_t01: Pass
Language/Metadata/*: Skip # Uses dart:mirrors
[ $runtime == dart_precompiled ]
LibTest/isolate/Isolate/spawnUri*: RuntimeError # Isolate.spawnUri

View file

@ -2,7 +2,7 @@
# 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.
[ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
bool_from_environment2_test: Skip
bool_from_environment_test: Skip
from_environment_const_type_test: Skip
@ -14,18 +14,18 @@ string_from_environment2_test: Skip
string_from_environment3_test: Skip
string_from_environment_test: Skip
[ $compiler == none ]
[ ($compiler == none || $compiler == precompiler) ]
unicode_test: Fail # Bug 6706
compare_to2_test: Fail # Bug 4018
symbol_test/01: Fail, Pass # bug 11669
# #void should be a valid symbol.
[ $compiler == none || $compiler == dart2js ]
[ ($compiler == none || $compiler == precompiler) || $compiler == dart2js ]
symbol_reserved_word_test/02: CompileTimeError # bug 20191
symbol_reserved_word_test/05: CompileTimeError # bug 20191
[ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
symbol_reserved_word_test/02: RuntimeError # bug 20191 / dartium/drt cannot detect CompileTimeErrors
symbol_reserved_word_test/05: RuntimeError # bug 20191 / dartium/drt cannot detect CompileTimeErrors
@ -42,27 +42,27 @@ int_modulo_arith_test/modPow: RuntimeError # No bigints.
# With the exception of 'void', const Symbol() should not accept reserved
# words.
[ $compiler == none || $compiler == dart2js ]
[ ($compiler == none || $compiler == precompiler) || $compiler == dart2js ]
symbol_reserved_word_test/04: MissingCompileTimeError # bug 11669, 19972
symbol_reserved_word_test/07: MissingCompileTimeError # bug 11669, 19972
symbol_reserved_word_test/10: MissingCompileTimeError # bug 11669, 19972
[ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
symbol_reserved_word_test/04: Fail # bug 11669, 19972 / dartium/drt cannot detect CompileTimeErrors
symbol_reserved_word_test/07: Fail # bug 11669, 19972 / dartium/drt cannot detect CompileTimeErrors
symbol_reserved_word_test/10: Fail # bug 11669, 19972 / dartium/drt cannot detect CompileTimeErrors
# With the exception of 'void', new Symbol() should not accept reserved words.
[ $compiler == none ]
[ ($compiler == none || $compiler == precompiler) ]
symbol_reserved_word_test/06: RuntimeError # bug 11669
symbol_reserved_word_test/09: RuntimeError # bug 11669
symbol_reserved_word_test/12: RuntimeError # bug 11669
[ $compiler == none && $runtime != dartium && $runtime != drt && $runtime != ContentShellOnAndroid ]
[ ($compiler == none || $compiler == precompiler) && $runtime != dartium && $runtime != drt && $runtime != ContentShellOnAndroid ]
symbol_test/02: MissingCompileTimeError # bug 11669
symbol_test/03: MissingCompileTimeError # bug 11669
[ $compiler == none ]
[ ($compiler == none || $compiler == precompiler) ]
symbol_test/none: Fail # bug 11669
symbol_operator_test/03: Fail # bug 11669
string_case_test/01: Fail # Bug 18061
@ -70,10 +70,10 @@ string_case_test/01: Fail # Bug 18061
iterable_return_type_test/01: RuntimeError # Issue 13646
iterable_return_type_test/02: RuntimeError # Issue 13646
[ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
main_test: Fail # Dartium needs to check for both main() and main(args).
[ $compiler == none && $runtime == ContentShellOnAndroid ]
[ ($compiler == none || $compiler == precompiler) && $runtime == ContentShellOnAndroid ]
core_runtime_types_test: Pass, Fail # Issue 20525
[ $runtime == ff || $runtime == jsshell ]
@ -170,7 +170,7 @@ stopwatch_test: Skip # Flaky test due to expected performance behaviour.
# The regexp tests are not verified to work on non d8/vm platforms yet.
regexp/*: Skip
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
regexp/global_test: Skip # Timeout. Issue 21709 and 21708
[ $runtime != vm && $compiler != dart2analyzer]
@ -182,7 +182,7 @@ http_resource_test: Skip, OK # VM specific test, uses dart:io.
[ $mode == debug ]
regexp/pcre_test: Pass, Slow # Timeout. Issue 22008
[ $runtime == vm && $arch == simarmv5te ]
[ ($runtime == vm || $runtime == dart_precompiled) && $arch == simarmv5te ]
int_parse_radix_test/*: Pass, Slow
big_integer_parsed_mul_div_vm_test: Pass, Slow
@ -211,7 +211,7 @@ symbol_test/none: RuntimeError # Please triage this failure.
[ $compiler == dart2js && $cps_ir && $host_checked ]
regexp/pcre_test: Crash # Stack Overflow
[ $noopt ]
[ ($noopt || $compiler == precompiler) ]
apply3_test: CompileTimeError # Imports dart:mirrors
regexp/stack-overflow_test: RuntimeError, OK # Smaller limit with irregex interpreter
big_integer_huge_mul_vm_test: Pass, Timeout # --no_intrinsify

View file

@ -382,7 +382,7 @@ mediasource_test/functional: RuntimeError # Issue 24838
# 'html' tests import the HTML library, so they only make sense in
# a browser environment.
[ $runtime == vm ]
[ $runtime == vm || $runtime == dart_precompiled ]
*: Skip
[ $compiler == dart2js && ($runtime == drt || $runtime == ff) ]

View file

@ -2,17 +2,17 @@
# 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.
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
browser/*: SkipByDesign # Browser specific tests
isolate_stress_test: Fail # Issue 12588: This should be able to pass when we have wrapper-less tests.
[ $runtime != vm ]
checked_test: Skip # Unsupported.
[ $runtime == vm && $arch == mips && $mode == debug ]
[ ($runtime == vm || $runtime == dart_precompiled) && $arch == mips && $mode == debug ]
mandel_isolate_test: Skip # Uses 600 MB Ram on our 1 GB test device.
[ $compiler == none ]
[ ($compiler == none || $compiler == precompiler) ]
compile_time_error_test/01: Skip # Issue 12587
ping_test: Skip # Resolve test issues
ping_pause_test: Skip # Resolve test issues
@ -20,7 +20,7 @@ kill3_test: Pass, Fail # Bad test: expects total message order
message3_test/int32x4: Crash, Timeout # Issue 21818
[ $compiler == none && $runtime == ContentShellOnAndroid ]
[ ($compiler == none || $compiler == precompiler) && $runtime == ContentShellOnAndroid ]
*: Skip # Isolate tests are timing out flakily on Android content_shell. Issue 19795
[ $compiler == dart2js && $runtime == safarimobilesim ]
@ -78,25 +78,25 @@ isolate_stress_test: Pass, Slow # Issue 10697
[ $compiler == dart2js && $runtime == chromeOnAndroid ]
unresolved_ports_test: Pass, Timeout # Issue 15610
[ $compiler == none && $runtime == drt ]
[ ($compiler == none || $compiler == precompiler) && $runtime == drt ]
spawn_uri_nested_vm_test: Skip # Issue 14463
[ $jscl ]
spawn_uri_multi_test/none: RuntimeError # Issue 13544
[ $compiler == none && ($runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
pause_test: Fail # Not implemented yet
[ $compiler == none && $runtime == ContentShellOnAndroid ]
[ ($compiler == none || $compiler == precompiler) && $runtime == ContentShellOnAndroid ]
nested_spawn2_test: Skip # Issue 19127: This test is timing out.
[ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == dartium || $runtime == ContentShellOnAndroid) ]
spawn_uri_nested_vm_test: Skip # Issue 14479: This test is timing out.
[ $compiler == none && $runtime == dartium && $arch == x64 ]
[ ($compiler == none || $compiler == precompiler) && $runtime == dartium && $arch == x64 ]
isolate/spawn_uri_multi_test/01: Skip # Times out. Issue 24795
[ $compiler == none && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
typed_message_test: Crash, Fail # Issue 13921, 14400
message_enum_test: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
compile_time_error_test/none: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
@ -145,7 +145,7 @@ package_map_test: SkipByDesign # Uses Isolate.packageMap
deferred_in_isolate2_test: RuntimeError # A.loadLibrary is not a function
isolate_current_test: RuntimeError # Please triage this failure.
[ $noopt ]
[ ($noopt || $compiler == precompiler) ]
# Imports dart:mirrors
count_test: CompileTimeError
cross_isolate_message_test: CompileTimeError
@ -166,3 +166,19 @@ stacktrace_message_test: CompileTimeError
stacktrace_message_test: CompileTimeError
static_function_test: CompileTimeError
unresolved_ports_test: CompileTimeError
[ $runtime == dart_precompiled ]
deferred_in_isolate_test: Skip # Isolate.spawnUri
deferred_in_isolate2_test: Skip # Isolate.spawnUri
exit_at_spawnuri_test: Skip # Isolate.spawnUri
error_exit_at_spawnuri_test: Skip # Isolate.spawnUri
issue_24243_parent_isolate_test: Skip # Isolate.spawnUri
issue_21398_parent_isolate1_test: Skip # Isolate.spawnUri
spawn_uri_exported_main_test: Skip # Isolate.spawnUri
spawn_uri_test: Skip # Isolate.spawnUri
spawn_uri_nested_vm_test: Skip # Isolate.spawnUri
deferred_in_isolate_test: Skip # Isolate.spawnUri
spawn_uri_multi_test: Skip # Isolate.spawnUri
spawn_uri_vm_test: Skip # Isolate.spawnUri
issue_21398_parent_isolate_test: Skip # Isolate.spawnUri
error_at_spawnuri_test: Skip # Isolate.spawnUri

View file

@ -5,7 +5,7 @@
# This directory contains tests that are intended to show the
# current state of the language.
[ $compiler == none ]
[ ($compiler == none || $compiler == precompiler) ]
built_in_identifier_prefix_test: Fail # Issue 6970
tearoff_constructor_basic_test: Skip # Crashes in checked mode -- hausner investigating
@ -34,24 +34,24 @@ async_star_await_pauses_test: Skip # Times out. Issue 23996
# Unsupported configuration specific imports.
config_import_test: Fail # Issue 24581
[ $compiler == none && $runtime == vm ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) ]
class_keyword_test/02: MissingCompileTimeError # Issue 13627
unicode_bom_test: Fail # Issue 16067
vm/debug_break_enabled_vm_test/01: Crash, OK # Expected to hit breakpoint.
try_catch_optimized1_test: Skip # Srdjan investigating
[ $compiler == none && $checked ]
[ ($compiler == none || $compiler == precompiler) && $checked ]
type_variable_bounds4_test/01: Fail # Issue 14006
[ $compiler == none ]
[ ($compiler == none || $compiler == precompiler) ]
dynamic_prefix_core_test/01: RuntimeError # Issue 12478
multiline_strings_test: Fail # Issue 23020
[ $compiler == none && ($runtime == vm || $runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && (($runtime == vm || $runtime == dart_precompiled) || $runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
dynamic_prefix_core_test/none: Fail # Issue 12478
export_ambiguous_main_negative_test: Fail # Issue 14763
[ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid) && $unchecked ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == dartium || $runtime == ContentShellOnAndroid) && $unchecked ]
assertion_test: Fail # Issue 14651.
generic_test: Fail # Issue 14651.
list_literal4_test: Fail # Issue 14651.
@ -64,7 +64,7 @@ positional_parameters_type_test/02: Fail # Issue 14651.
type_checks_in_factory_method_test: Fail # Issue 14651.
vm/type_vm_test: Fail # Issue 14651.
[ $compiler == none && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
issue13474_test: Pass, Fail # Issue 14651.
vm/optimized_guarded_field_isolates_test: Fail # Issue 13921.
main_test/01: Fail # Issue 20028
@ -76,36 +76,36 @@ main_test/42: Fail # Issue 20028
mirror_in_static_init_test: Fail # Issue 22071
vm/debug_break_enabled_vm_test/*: Skip # Issue 14651.
[ $compiler == none && $runtime == dartium && $system == linux && $arch != x64 ]
[ ($compiler == none || $compiler == precompiler) && $runtime == dartium && $system == linux && $arch != x64 ]
issue_22780_test/01 : Pass, Timeout # Issue 24473
[ $compiler == none && $runtime == drt ]
[ ($compiler == none || $compiler == precompiler) && $runtime == drt ]
disassemble_test: Pass, Fail # Issue 18122
[ $compiler == none && $runtime == vm && $arch == mips && $checked ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) && $arch == mips && $checked ]
generic_instanceof3_test: Pass, Crash # Issue 17440.
[ $compiler == none && $runtime == vm && $arch == mips && $mode == debug ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) && $arch == mips && $mode == debug ]
stack_overflow_test: Skip # Crashes. Issue 17440.
stack_overflow_stacktrace_test: Skip # Crashes. Issue 17440.
large_class_declaration_test: SkipSlow # Times out. Issue 20352
[ $compiler == none && ($runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) && $mode == debug ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) && $mode == debug ]
large_class_declaration_test: SkipSlow # Times out. Issue 20352
[ $compiler == none && $runtime == ContentShellOnAndroid ]
[ ($compiler == none || $compiler == precompiler) && $runtime == ContentShellOnAndroid ]
gc_test: SkipSlow # Times out flakily. Issue 20956
[ $compiler == none && $runtime == vm && ( $arch == simarm || $arch == arm || $arch == simarmv5te || $arch == armv5te || $arch == simarm64 || $arch == arm64 || $arch == simmips || $arch == mips) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == vm || $runtime == dart_precompiled) && ( $arch == simarm || $arch == arm || $arch == simarmv5te || $arch == armv5te || $arch == simarm64 || $arch == arm64 || $arch == simmips || $arch == mips) ]
vm/load_to_load_unaligned_forwarding_vm_test: Pass, Crash # Unaligned offset. Issue 22151
[ $compiler == none && $runtime == dartium ]
[ ($compiler == none || $compiler == precompiler) && $runtime == dartium ]
issue23244_test: Fail # Issue 23244
[ $compiler == none && ($runtime == vm || $runtime == drt || $runtime == dartium) && $arch == ia32 ]
[ ($compiler == none || $compiler == precompiler) && (($runtime == vm || $runtime == dart_precompiled) || $runtime == drt || $runtime == dartium) && $arch == ia32 ]
vm/regress_24517_test: Pass, Fail # Issue 24517.
[ $noopt ]
[ ($noopt || $compiler == precompiler) ]
# Imports dart:mirrors
const_evaluation_test: CompileTimeError
deferred_constraints_constants_test: CompileTimeError
@ -139,3 +139,9 @@ deopt_inlined_function_lazy_test: Pass, Crash # Incompatible flag: --deoptimize-
tearoff_basic_test: RuntimeError, Crash # Conflicting flag.
vm/type_cast_vm_test: RuntimeError # Line number mismatch.
stack_trace_test: Fail # Issue 24783 - inlined frames missing
[ $runtime == dart_precompiled ]
ct_const2_test: Pass, Crash # Incompatible flag --compile_all
hello_dart_test: Pass, Crash # Incompatible flag --compile_all
implicit_closure_test: Pass, Crash # --use_slow_path

View file

@ -186,7 +186,7 @@ async/timer_not_available_test: Fail, OK # only meant to test when there is no w
# 'js' tests import the dart:js library, so they only make sense in
# a browser environment.
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
js/*: Skip
[ $compiler == dart2js && $minified ]
@ -223,19 +223,19 @@ async/multiple_timer_test: Pass, Fail # Probably issue 14734
# TODO(efortuna): Investigate.
async/timer_test: Fail, Pass
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
async/timer_not_available_test: Fail, OK
mirrors/native_class_test: Fail, OK # This test is meant to run in a browser.
mirrors/deferred_type_test: CompileTimeError, OK # Don't have a multitest marker for dynamic compile time errors.
[ $compiler == none ]
[ ($compiler == none || $compiler == precompiler) ]
async/timer_not_available_test: SkipByDesign # only meant to test when there is no way to implement timer (currently only in d8)
mirrors/symbol_validation_test: RuntimeError # Issue 13596
mirrors/mirrors_used*: SkipByDesign # Invalid tests. MirrorsUsed does not have a specification, and dart:mirrors is not required to hide declarations that are not covered by any MirrorsUsed annotation.
[ $compiler == none && ( $runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ( $runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
async/schedule_microtask6_test: Fail # Issue 10910
async/timer_test: Fail, Pass # Issue 15487
async/multiple_timer_test: Fail, Pass # Issue 15487
@ -248,14 +248,14 @@ mirrors/spawn_function_root_library_test: SkipByDesign # Uses spawnFunction.
mirrors/local_isolate_test: RuntimeError # Issue 12188
mirrors/deferred_type_test: RuntimeError, OK # Should be CompileTimeError. Issue 22072
[ $compiler == none && $runtime == drt && $system == windows ]
[ ($compiler == none || $compiler == precompiler) && $runtime == drt && $system == windows ]
async/multiple_timer_test: Fail, Pass # See Issue 10982
async/timer_test: Fail, Pass # See Issue 10982
[ $compiler == none && $runtime == drt && $checked ]
[ ($compiler == none || $compiler == precompiler) && $runtime == drt && $checked ]
async/slow_consumer_test: Fail, Pass # Dartium JsInterop failure, dartbug.com/24460
[$compiler == none && $runtime == ContentShellOnAndroid ]
[($compiler == none || $compiler == precompiler) && $runtime == ContentShellOnAndroid ]
async/stream_timeout_test: RuntimeError, Pass # Issue 19127
async/slow_consumer3_test: SkipSlow # Times out flakily. Issue 20956
async/slow_consumer2_test: SkipSlow # Times out flakily. Issue 20956
@ -305,7 +305,7 @@ mirrors/*deferred*: Skip # Issue 17458
[ $compiler == dart2js && $mode == debug ]
mirrors/native_class_test: Pass, Slow
[ $compiler == none && $arch == mips ]
[ ($compiler == none || $compiler == precompiler) && $arch == mips ]
async/timer_regress22626_test: Pass, RuntimeError # Issue 22626
[ $arch == simarm || $arch == simarmv5te ]
@ -325,16 +325,16 @@ convert/utf85_test: Skip # Pass, Slow Issue 20111.
[ $mode == debug && $arch == ia32 && $system == windows ]
convert/streamed_conversion_json_utf8_decode_test: Skip # Verification OOM.
[ $runtime == vm && $mode == debug && $arch == x64 && $system == windows ]
[ ($runtime == vm || $runtime == dart_precompiled) && $mode == debug && $arch == x64 && $system == windows ]
convert/streamed_conversion_json_utf8_decode_test: Pass, Slow
[ $runtime == vm && $mode == release && $arch == ia32 && $system == windows ]
[ ($runtime == vm || $runtime == dart_precompiled) && $mode == release && $arch == ia32 && $system == windows ]
convert/json_test: RuntimeError # Issue 24908
[ $mode == debug && $arch != ia32 && $arch != x64 && $arch != simarm && $arch != simarmv5te ]
convert/streamed_conversion_json_utf8_decode_test: Skip # Verification not yet implemented.
[ $runtime == vm && $mode == debug && $builder_tag == asan ]
[ ($runtime == vm || $runtime == dart_precompiled) && $mode == debug && $builder_tag == asan ]
mirrors/immutable_collections_test: SkipSlow # Timeout.
convert/streamed_conversion_json_utf8_decode_test: Skip # Timeout.
@ -357,7 +357,7 @@ mirrors/typedef_library_test: Crash # Assertion failure: typedef(G) has not been
[ $compiler != dart2js ]
async/dart2js_uncaught_error_test: Skip # JS-integration only test
[ $noopt ]
[ ($noopt || $compiler == precompiler) ]
mirrors/*: SkipByDesign
convert/chunked_conversion_utf88_test: Pass, Timeout
convert/utf85_test: Pass, Timeout

View file

@ -17,15 +17,15 @@ issue14236_test: Pass # Do not remove this line. It serves as a marker for Issue
javascript_compatibility_errors_test/none: Fail, OK # Not possible to exclude or annotate with '/// none:'
[ $runtime != vm && ($runtime != drt || $compiler != none)) ]
[ ($runtime != vm && $runtime != dart_precompiled) && ($runtime != drt || $compiler != none)) ]
no_assert_test: Fail, OK # This is testing a vm flag.
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
package/package_isolate_test: Fail # Issue 12474
io/observatory_test: Fail
package/scenarios/invalid/same_package_twice_test: Pass # Issue 24119
[ $runtime == vm && $checked ]
[ ($runtime == vm || $runtime == dart_precompiled) && $checked ]
# These tests have type errors on purpose.
io/process_invalid_arguments_test: Fail, OK
io/directory_invalid_arguments_test: Fail, OK
@ -38,13 +38,13 @@ io/stdout_bad_argument_test: Fail, OK
io/file_fuzz_test: Skip
io/directory_fuzz_test: Skip
[ $runtime == vm && $system == macos ]
[ ($runtime == vm || $runtime == dart_precompiled) && $system == macos ]
# This test fails with "Too many open files" on the Mac OS buildbot.
# This is expected as MacOS by default runs with a very low number
# of allowed open files ('ulimit -n' says something like 256).
io/socket_many_connections_test: Skip
[ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
typed_array_test: Fail # Issue 13921
typed_array_int64_uint64_test: Fail # Issue 13921
typed_data_isolate_test: SkipByDesign # This test uses dart:io
@ -157,10 +157,10 @@ io/test_runner_test: Skip # Flakily times out in a subtest. Issue 201351
full_coverage_test: SkipSlow # Times out. Issue 20352
io/http_client_stays_alive_test: Skip # Timing dependent test, MIPS machine too slow.
[ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid) && $unchecked ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == dartium || $runtime == ContentShellOnAndroid) && $unchecked ]
assert_test: Fail # Issue 14651.
[ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid) ]
[ ($compiler == none || $compiler == precompiler) && ($runtime == dartium || $runtime == ContentShellOnAndroid) ]
javascript_int_overflow_literal_test/01: Fail # Issue 14651.
javascript_int_overflow_test: Fail # Issue 14651.
@ -205,19 +205,62 @@ io/process_sync_test: Pass, Timeout # Issue 24596
[ $arch != ia32 && $arch != x64 && $arch != simarm && $arch != simarmv5te && $mode == debug ]
verified_mem_test: Skip # Not yet implemented.
[ $runtime == vm && $mode == debug && $builder_tag == asan ]
[ ($runtime == vm || $runtime == dart_precompiled) && $mode == debug && $builder_tag == asan ]
full_coverage_test: Skip # Timeout.
io/file_lock_test: Skip # Timeout.
io/test_runner_test: Skip # Timeout.
io/http_client_stays_alive_test: Skip # Timeout.
[ $runtime == vm ]
[ ($runtime == vm || $runtime == dart_precompiled) ]
# Failures in secure networking while NSS is replaced with BoringSSL
io/https_client_certificate_test: RuntimeError # Issue 24070
io/secure_socket_renegotiate_test: RuntimeError
io/secure_socket_bad_data_test: RuntimeError # An error in a secure connection just puts a READ_CLOSED on the stream, rather than signaling an error on the stream.
[ $noopt ]
[ ($noopt || $compiler == precompiler) ]
map_literal_oom_test: Pass, Crash # Issue 24678
javascript*: SkipByDesign # JS overflow flag unsupported
io/web_socket_test: Pass, RuntimeError # Issue 24674
[ $runtime == dart_precompiled ]
debugger/*: Skip
noopt_test: Skip
precompilation_dart2js_test: Skip
full_coverage_test: RuntimeError # Platform.executable
http_launch_test: RuntimeError # Platform.executable
io/addlatexhash_test: RuntimeError # Platform.executable
io/compile_all_test: Crash # Incompatible flag --compile_all
io/file_read_special_device_test: RuntimeError # Platform.executable
io/file_stream_test: RuntimeError # Platform.executable
io/file_test: RuntimeError # Platform.executable
io/http_cross_process_test: RuntimeError # Platform.executable
io/https_unauthorized_test: RuntimeError # Platform.executable
io/platform_resolved_executable_test: RuntimeError # Platform.resolvedExecutable
io/skipping_dart2js_compilations_test: RuntimeError # Platform.executable
io/snapshot_fail_test: RuntimeError # Platform.executable
io/stdin_sync_test: RuntimeError # Platform.executable
io/test_extension_fail_test: RuntimeError # Platform.executable
precompilation_test: RuntimeError # Platform.executable
standalone/io/file_read_special_device_test: RuntimeError # Platform.executable
verbose_gc_to_bmu_test: RuntimeError # Platform.executable
io/http_server_close_response_after_error_test: RuntimeError # Platform.executable
io/http_client_stays_alive_test: RuntimeError # Platform.executable
io/print_sync_test: RuntimeError # Platform.executable
io/signals_test: RuntimeError # Platform.executable
io/stdio_nonblocking_test: RuntimeError # Platform.executable
io/regress_7191_test: RuntimeError # Platform.executable
io/secure_unauthorized_test: RuntimeError # Platform.executable
io/dart_std_io_pipe_test: RuntimeError # Platform.executable
io/platform_test: RuntimeError # Platform.executable
io/socket_cross_process_test: RuntimeError # Platform.executable
io/test_runner_test: RuntimeError # Platform.executable
io/file_lock_test: RuntimeError # Platform.executable
io/code_collection_test: RuntimeError # Platform.executable
io/file_lock_test: RuntimeError # Platform.executable
io/code_collection_test: RuntimeError # Platform.executable
io/raw_socket_cross_process_test: RuntimeError # Platform.executable
io/test_extension_test: RuntimeError # Platform.executable
io/regress_7679_test: RuntimeError # Platform.executable
io/process_*: Skip # Most use Platform.executable

View file

@ -13,14 +13,14 @@ source_mirrors_test: Slow, Pass
[ $compiler == dart2js && $browser ]
*: Skip
[ $compiler == none && $runtime != vm ]
[ ($compiler == none || $compiler == precompiler) && $runtime != vm ]
dart2js_test: SkipByDesign # Uses dart:io.
[ $compiler == dart2js && $mode == debug ]
dummy_compiler_test: Slow, Pass
[ $compiler == none && $runtime == ContentShellOnAndroid ]
[ ($compiler == none || $compiler == precompiler) && $runtime == ContentShellOnAndroid ]
dummy_compiler_test: Pass, RuntimeError # Issue 17662
recursive_import_test: Pass, RuntimeError # Issue 17662
source_mirrors_test: Pass, RuntimeError # Issue 17662
@ -30,5 +30,5 @@ dummy_compiler_test: Crash # (switch (function.na... continue to a labeled swit
recursive_import_test: Crash # (switch (function.na... continue to a labeled switch case
source_mirrors_test: Crash, Slow # (switch (function.na... continue to a labeled switch case
[ $noopt ]
[ ($noopt || $compiler == precompiler) ]
source_mirrors_test: SkipByDesign # Imports dart:mirrors

View file

@ -0,0 +1,64 @@
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// 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.
library precompiler;
import 'dart:io';
void run(String executable, String arguments, [String workingDirectory]) {
print("+ $executable ${arguments.join(' ')}");
var result = Process.runSync(executable, arguments,
workingDirectory: workingDirectory);
stdout.write(result.stdout);
stderr.write(result.stderr);
if (result.exitCode != 0) {
exit(result.exitCode);
}
}
void main(List<String> args) {
var configuration = Platform.environment["DART_CONFIGURATION"];
var cc, cc_flags, shared, libname;
if (Platform.isLinux) {
cc = 'gcc';
shared = '-shared';
libname = 'libprecompiled.so';
} else if (Platform.isMacOS) {
cc = 'clang';
shared = '-dynamiclib';
libname = 'libprecompiled.dylib';
} else {
print("Test only supports Linux and Mac");
return;
}
if (configuration.endsWith("X64")) {
cc_flags = "-m64";
} else if (configuration.endsWith("SIMARM64")) {
cc_flags = "-m64";
} else if (configuration.endsWith("SIMARM")) {
cc_flags = "-m32";
} else if (configuration.endsWith("SIMMIPS")) {
cc_flags = "-m32";
} else if (configuration.endsWith("ARM")) {
cc_flags = "";
} else if (configuration.endsWith("MIPS")) {
cc_flags = "-EL";
} else {
print("Architecture not supported: $configuration");
return;
}
var tmpDir;
for (var arg in args) {
if (arg.startsWith("--gen-precompiled-snapshot")) {
tmpDir = arg.substring("--gen-precompiled-snapshot".length + 1);
}
}
print("Using directory $tmpDir");
run(args[0], args.sublist(1));
run(cc, [shared, cc_flags, "-o", libname, "precompiled.S"], tmpDir);
}

View file

@ -74,6 +74,9 @@ abstract class CompilerConfiguration {
isHostChecked: isHostChecked, useCps: useCps, useSdk: useSdk,
isCsp: isCsp, extraDart2jsOptions:
TestUtils.getExtraOptions(configuration, 'dart2js_options'));
case 'precompiler':
return new PrecompilerCompilerConfiguration(
isDebug: isDebug, isChecked: isChecked);
case 'none':
return new NoneCompilerConfiguration(
isDebug: isDebug, isChecked: isChecked,
@ -119,6 +122,12 @@ abstract class CompilerConfiguration {
return new CommandArtifact([], null, null);
}
List<String> computeCompilerArguments(vmOptions, sharedOptions, args) {
return new List<String>()
..addAll(sharedOptions)
..addAll(args);
}
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
String buildDir,
@ -294,6 +303,92 @@ class Dart2jsCompilerConfiguration extends Dart2xCompilerConfiguration {
}
}
class PrecompilerCompilerConfiguration extends CompilerConfiguration {
PrecompilerCompilerConfiguration({
bool isDebug,
bool isChecked})
: super._subclass(isDebug: isDebug, isChecked: isChecked);
int computeTimeoutMultiplier() {
int multiplier = 2;
if (isDebug) multiplier *= 4;
if (isChecked) multiplier *= 2;
return multiplier;
}
CommandArtifact computeCompilationArtifact(
String buildDir,
String tempDir,
CommandBuilder commandBuilder,
List arguments,
Map<String, String> environmentOverrides) {
return new CommandArtifact(
<Command>[
this.computeCompilationCommand(
tempDir,
buildDir,
CommandBuilder.instance,
arguments,
environmentOverrides)],
'$tempDir',
'application/dart-precompiled');
}
CompilationCommand computeCompilationCommand(
String tempDir,
String buildDir,
CommandBuilder commandBuilder,
List arguments,
Map<String, String> environmentOverrides) {
var exec = "$buildDir/dart";
var args = new List();
args.add("tools/precompilation/precompiler.dart");
args.add("$buildDir/dart_no_snapshot");
args.add("--gen-precompiled-snapshot=$tempDir");
args.addAll(arguments);
return commandBuilder.getCompilationCommand(
'precompiler.dart', tempDir, !useSdk,
bootstrapDependencies(buildDir),
exec, args, environmentOverrides);
}
List<String> computeCompilerArguments(vmOptions,
sharedOptions,
originalArguments) {
List<String> args = [];
if (isChecked) {
args.add('--enable_asserts');
args.add('--enable_type_checks');
}
return args
..addAll(vmOptions)
..addAll(sharedOptions)
..addAll(originalArguments);
}
List<String> computeRuntimeArguments(
RuntimeConfiguration runtimeConfiguration,
String buildDir,
TestInformation info,
List<String> vmOptions,
List<String> sharedOptions,
List<String> originalArguments,
CommandArtifact artifact) {
List<String> args = [];
if (isChecked) {
args.add('--enable_asserts');
args.add('--enable_type_checks');
}
return args
..addAll(vmOptions)
..addAll(sharedOptions)
..addAll(originalArguments);
}
}
class AnalyzerCompilerConfiguration extends CompilerConfiguration {
AnalyzerCompilerConfiguration(
{bool isDebug,

View file

@ -52,6 +52,9 @@ class RuntimeConfiguration {
case 'vm':
return new StandaloneDartRuntimeConfiguration();
case 'dart_precompiled':
return new DartPrecompiledRuntimeConfiguration();
case 'drt':
return new DrtRuntimeConfiguration();
@ -218,6 +221,32 @@ class StandaloneDartRuntimeConfiguration extends DartVmRuntimeConfiguration {
}
}
class DartPrecompiledRuntimeConfiguration extends DartVmRuntimeConfiguration {
List<Command> computeRuntimeCommands(
TestSuite suite,
CommandBuilder commandBuilder,
CommandArtifact artifact,
List<String> arguments,
Map<String, String> environmentOverrides) {
String script = artifact.filename;
String type = artifact.mimeType;
if (script != null && type != 'application/dart-precompiled') {
throw "dart_precompiled cannot run files of type '$type'.";
}
var augmentedArgs = new List();
augmentedArgs.add("--run-precompiled-snapshot=${artifact.filename}");
augmentedArgs.addAll(arguments);
var augmentedEnv = new Map.from(environmentOverrides);
augmentedEnv['LD_LIBRARY_PATH'] = artifact.filename;
return <Command>[commandBuilder.getVmCommand(
suite.dartPrecompiledBinaryFileName, augmentedArgs, augmentedEnv)];
}
}
/// Temporary runtime configuration for browser runtimes that haven't been
/// migrated yet.
// TODO(ahe): Remove this class.

View file

@ -67,7 +67,7 @@ class TestOptionsParser {
dart2analyzer: Perform static analysis on Dart code by running the analyzer
(only valid with the following runtimes: none)''',
['-c', '--compiler'],
['none', 'dart2js', 'dart2analyzer'],
['none', 'precompiler', 'dart2js', 'dart2analyzer'],
'none'),
// TODO(antonm): fix the option drt.
new _TestOptionSpecification(
@ -75,6 +75,9 @@ class TestOptionsParser {
'''Where the tests should be run.
vm: Run Dart code on the standalone dart vm.
dart_precompiled: Run a precompiled snapshot on a variant of the standalone
dart vm lacking a JIT.
d8: Run JavaScript from the command line using v8.
jsshell: Run JavaScript from the command line using firefox js-shell.
@ -95,7 +98,8 @@ class TestOptionsParser {
none: No runtime, compile only (for example, used for dart2analyzer static
analysis tests).''',
['-r', '--runtime'],
['vm', 'd8', 'jsshell', 'drt', 'dartium', 'ff', 'firefox',
['vm', 'dart_precompiled', 'd8', 'jsshell', 'drt', 'dartium',
'ff', 'firefox',
'chrome', 'safari', 'ie9', 'ie10', 'ie11', 'opera',
'chromeOnAndroid', 'safarimobilesim',
'ContentShellOnAndroid', 'DartiumOnAndroid', 'none'],
@ -644,6 +648,9 @@ Note: currently only implemented for dart2js.''',
case 'dart2analyzer':
validRuntimes = const ['none'];
break;
case 'precompiler':
validRuntimes = const ['dart_precompiled'];
break;
case 'none':
validRuntimes = const ['vm', 'drt', 'dartium',
'ContentShellOnAndroid', 'DartiumOnAndroid'];

View file

@ -1679,6 +1679,10 @@ CommandOutput createCommandOutput(Command command,
return new VmCommandOutputImpl(
command, exitCode, timedOut, stdout, stderr, time, pid);
} else if (command is CompilationCommand) {
if (command.displayName == 'precompiler.dart') {
return new VmCommandOutputImpl(
command, exitCode, timedOut, stdout, stderr, time, pid);
}
return new CompilationCommandOutputImpl(
command, exitCode, timedOut, stdout, stderr, time, compilationSkipped);
} else if (command is JSCommandlineCommand) {

View file

@ -212,6 +212,19 @@ abstract class TestSuite {
return dartExecutable;
}
String get dartPrecompiledBinaryFileName {
// Controlled by user with the option "--dart_precompiled".
String dartExecutable = configuration['dart_precompiled'];
if (dartExecutable == null || dartExecutable == '') {
String suffix = executableBinarySuffix;
dartExecutable = '$buildDir/dart_precompiled$suffix';
}
TestUtils.ensureExists(dartExecutable, configuration);
return dartExecutable;
}
String get d8FileName {
var suffix = getExecutableSuffix('d8');
var d8Dir = TestUtils.dartDir.append('third_party/d8');
@ -1009,9 +1022,10 @@ class StandardTestSuite extends TestSuite {
List<String> compileTimeArguments = <String>[];
String tempDir;
if (compilerConfiguration.hasCompiler) {
compileTimeArguments
..addAll(sharedOptions)
..addAll(args);
compileTimeArguments =
compilerConfiguration.computeCompilerArguments(vmOptions,
sharedOptions,
args);
// Avoid doing this for analyzer.
tempDir = createCompilationOutputDirectory(info.filePath);
}
@ -1772,8 +1786,8 @@ class StandardTestSuite extends TestSuite {
}
List<List<String>> getVmOptions(Map optionsFromFile) {
var COMPILERS = const ['none'];
var RUNTIMES = const ['none', 'vm', 'drt', 'dartium',
var COMPILERS = const ['none', 'precompiler'];
var RUNTIMES = const ['none', 'dart_precompiled', 'vm', 'drt', 'dartium',
'ContentShellOnAndroid', 'DartiumOnAndroid'];
var needsVmOptions = COMPILERS.contains(configuration['compiler']) &&
RUNTIMES.contains(configuration['runtime']);