Version 2.12.0-268.0.dev
Merge commit '77353dc380967dc011ac343f7753b53031e2305a' into 'dev'
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index 3daa83f..c6e4271 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -296,7 +296,7 @@
"name": "html",
"rootUri": "../third_party/pkg/html",
"packageUri": "lib/",
- "languageVersion": "2.8"
+ "languageVersion": "2.12"
},
{
"name": "http",
diff --git a/DEPS b/DEPS
index 5761840..8ddc6b3 100644
--- a/DEPS
+++ b/DEPS
@@ -106,7 +106,7 @@
"fixnum_rev": "16d3890c6dc82ca629659da1934e412292508bba",
"file_rev": "0e09370f581ab6388d46fda4cdab66638c0171a1",
"glob_rev": "7c0ef8d4fa086f6b185c4dd724b700e7d7ad8f79",
- "html_rev": "7f31979303f916f2aabb9e2091950798abdd9ca1",
+ "html_rev": "00cd3c22dac0e68e6ed9e7e4945101aedb1b3109",
"http_io_rev": "2fa188caf7937e313026557713f7feffedd4978b",
"http_multi_server_rev" : "e8c8be7f15b4fb50757ff5bf29766721fbe24fe4",
"http_parser_rev": "5dd4d16693242049dfb43b5efa429fedbf932e98",
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart
index aacaaeed..b8c3793 100644
--- a/pkg/analysis_server/lib/src/context_manager.dart
+++ b/pkg/analysis_server/lib/src/context_manager.dart
@@ -1316,7 +1316,8 @@
// maybe excluded globally
if (_isExcluded(path) ||
- _isContainedInDotFolder(info.folder.path, path) ||
+ _isContainedInDotFolder(info.folder.path, path,
+ exclude: {'.dart_tool'}) ||
_isInTopLevelDocDir(info.folder.path, path)) {
return;
}
@@ -1430,14 +1431,17 @@
}
/// Determine whether the given [path], when interpreted relative to the
- /// context root [root], contains a folder whose name starts with '.'.
- bool _isContainedInDotFolder(String root, String path) {
+ /// context root [root], contains a folder whose name starts with '.' but is
+ /// not included in [exclude].
+ bool _isContainedInDotFolder(String root, String path,
+ {Set<String> exclude}) {
var pathDir = pathContext.dirname(path);
var rootPrefix = root + pathContext.separator;
if (pathDir.startsWith(rootPrefix)) {
var suffixPath = pathDir.substring(rootPrefix.length);
for (var pathComponent in pathContext.split(suffixPath)) {
- if (pathComponent.startsWith('.')) {
+ if (pathComponent.startsWith('.') &&
+ !(exclude?.contains(pathComponent) ?? false)) {
return true;
}
}
diff --git a/pkg/analysis_server/test/analysis/notification_errors_test.dart b/pkg/analysis_server/test/analysis/notification_errors_test.dart
index 865288d..4bbe367 100644
--- a/pkg/analysis_server/test/analysis/notification_errors_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_errors_test.dart
@@ -8,6 +8,7 @@
import 'package:analysis_server/src/domain_analysis.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/lint/linter.dart';
+import 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:linter/src/rules.dart';
import 'package:test/test.dart';
@@ -164,6 +165,40 @@
expect(errors, isNull);
}
+ Future<void> test_dartToolGeneratedProject_referencedByUserProject() async {
+ // Although errors are not generated for dotfolders, their contents should
+ // still be analyzed so that code that references them (for example
+ // flutter_gen) should still be updated.
+ final configPath = join(projectPath, '.dart_tool/package_config.json');
+ final generatedProject = join(projectPath, '.dart_tool/foo');
+ final generatedFile = join(generatedProject, 'lib', 'foo.dart');
+
+ // Add the generated project into package_config.json.
+ final config = PackageConfigFileBuilder();
+ config.add(name: 'foo', rootPath: generatedProject);
+ newFile(configPath, content: config.toContent(toUriStr: toUriStr));
+
+ // Set up project that references the class prior to initial analysis.
+ newFile(generatedFile, content: 'class A {}');
+ addTestFile('''
+import 'package:foo/foo.dart';
+A? a;
+ ''');
+
+ createProject();
+ await waitForTasksFinished();
+ await pumpEventQueue(times: 5000);
+ expect(filesErrors[testFile], isEmpty);
+
+ // Remove the class, which should cause the main project to have an analysis
+ // error.
+ modifyFile(generatedFile, '');
+
+ await waitForTasksFinished();
+ await pumpEventQueue(times: 5000);
+ expect(filesErrors[testFile], isNotEmpty);
+ }
+
Future<void> test_dataFile() async {
var filePath = join(projectPath, 'lib', 'fix_data.yaml');
var dataFile = newFile(filePath, content: '''
diff --git a/pkg/analysis_server/test/constants.dart b/pkg/analysis_server/test/constants.dart
index e6bae68..817f2a2 100644
--- a/pkg/analysis_server/test/constants.dart
+++ b/pkg/analysis_server/test/constants.dart
@@ -4,6 +4,7 @@
const String CODE = 'code';
const String COMPLETION_RESULTS = 'completion.results';
+const String CONTEXT_MESSAGES = 'contextMessages';
const String CORRECTION = 'correction';
const String EDITS = 'edits';
const String FILE = 'file';
diff --git a/pkg/analysis_server/test/protocol_server_test.dart b/pkg/analysis_server/test/protocol_server_test.dart
index b355d68..8378710 100644
--- a/pkg/analysis_server/test/protocol_server_test.dart
+++ b/pkg/analysis_server/test/protocol_server_test.dart
@@ -64,30 +64,31 @@
engine.LineInfo([0, 5, 9, 20]), false, null, [engineError]),
engineError);
expect(error.toJson(), {
- 'severity': 'ERROR',
- 'type': 'COMPILE_TIME_ERROR',
- 'location': {
- 'file': 'foo.dart',
- 'offset': 10,
- 'length': 20,
- 'startLine': 3,
- 'startColumn': 2
+ SEVERITY: 'ERROR',
+ TYPE: 'COMPILE_TIME_ERROR',
+ LOCATION: {
+ FILE: 'foo.dart',
+ OFFSET: 10,
+ LENGTH: 20,
+ START_LINE: 3,
+ START_COLUMN: 2
},
- 'message': 'my message',
- 'code': 'ambiguous_export',
- 'contextMessages': [
+ MESSAGE: 'my message',
+ CODE: 'ambiguous_export',
+ URL: 'https://dart.dev/tools/diagnostic-messages#ambiguous_export',
+ CONTEXT_MESSAGES: [
{
- 'message': 'context',
- 'location': {
- 'file': 'bar.dart',
- 'offset': 30,
- 'length': 5,
- 'startLine': 4,
- 'startColumn': 11
+ MESSAGE: 'context',
+ LOCATION: {
+ FILE: 'bar.dart',
+ OFFSET: 30,
+ LENGTH: 5,
+ START_LINE: 4,
+ START_COLUMN: 11
}
}
],
- 'hasFix': false
+ HAS_FIX: false
});
}
@@ -107,6 +108,7 @@
MESSAGE: 'my message',
CORRECTION: 'my correction',
CODE: 'ambiguous_export',
+ URL: 'https://dart.dev/tools/diagnostic-messages#ambiguous_export',
HAS_FIX: false
});
}
@@ -176,6 +178,7 @@
},
MESSAGE: 'my message',
CODE: 'ambiguous_export',
+ URL: 'https://dart.dev/tools/diagnostic-messages#ambiguous_export',
HAS_FIX: false
});
}
@@ -198,6 +201,7 @@
},
MESSAGE: 'my message',
CODE: 'ambiguous_export',
+ URL: 'https://dart.dev/tools/diagnostic-messages#ambiguous_export',
HAS_FIX: false
});
}
diff --git a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
index e6b02e7..f85b873 100644
--- a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
@@ -4545,6 +4545,53 @@
assertNoSuggestions();
}
+ Future<void> test_typeAlias_aliasedType() async {
+ addTestSource(r'''
+var a = 0;
+typedef F = ^;
+''');
+
+ await computeSuggestions();
+ assertCoreTypeSuggestions();
+ assertNotSuggested('a');
+ }
+
+ Future<void> test_typeAlias_functionType_parameterType() async {
+ addTestSource(r'''
+typedef F = void Function(^);
+''');
+
+ await computeSuggestions();
+ assertCoreTypeSuggestions();
+ }
+
+ Future<void> test_typeAlias_functionType_returnType() async {
+ addTestSource(r'''
+typedef F = ^ Function();
+''');
+
+ await computeSuggestions();
+ assertCoreTypeSuggestions();
+ }
+
+ Future<void> test_typeAlias_interfaceType_argumentType() async {
+ addTestSource(r'''
+typedef F = List<^>;
+''');
+
+ await computeSuggestions();
+ assertCoreTypeSuggestions();
+ }
+
+ Future<void> test_typeAlias_legacy_parameterType() async {
+ addTestSource(r'''
+typedef void F(^);
+''');
+
+ await computeSuggestions();
+ assertCoreTypeSuggestions();
+ }
+
Future<void> test_TypeArgumentList() async {
// SimpleIdentifier BinaryExpression ExpressionStatement
resolveSource('/home/test/lib/a.dart', '''
diff --git a/pkg/analysis_server/tool/spec/to_html.dart b/pkg/analysis_server/tool/spec/to_html.dart
index db50d44..7246acd 100644
--- a/pkg/analysis_server/tool/spec/to_html.dart
+++ b/pkg/analysis_server/tool/spec/to_html.dart
@@ -169,7 +169,7 @@
void dl(void Function() callback) => element('dl', {}, callback);
void dt(String cls, void Function() callback) =>
element('dt', {'class': cls}, callback);
- void element(String name, Map<dynamic, String> attributes,
+ void element(String name, Map<Object, String> attributes,
[void Function() callback]);
void gray(void Function() callback) =>
element('span', {'style': 'color:#999999'}, callback);
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index c427645..696fc45 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -372,7 +372,8 @@
static const HintCode DUPLICATE_HIDDEN_NAME =
HintCode('DUPLICATE_HIDDEN_NAME', "Duplicate hidden name.",
correction: "Try removing the repeated name from the list of hidden "
- "members.");
+ "members.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -426,7 +427,8 @@
"already being ignored.",
correction:
"Try removing the name from the list, or removing the whole comment "
- "if this is the only name in the list.");
+ "if this is the only name in the list.",
+ hasPublishedDocs: true);
/**
* Duplicate imports.
@@ -505,7 +507,8 @@
static const HintCode DUPLICATE_SHOWN_NAME =
HintCode('DUPLICATE_SHOWN_NAME', "Duplicate shown name.",
correction: "Try removing the repeated name from the list of shown "
- "members.");
+ "members.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -2222,7 +2225,8 @@
'SDK_VERSION_NEVER',
"The type 'Never' wasn't supported until version 2.X.0, but this code is "
"required to be able to run on earlier versions.",
- correction: "Try updating the SDK constraints.");
+ correction: "Try updating the SDK constraints.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -2681,6 +2685,7 @@
'UNNECESSARY_TYPE_CHECK',
"Unnecessary type check; the result is always 'false'.",
correction: "Try correcting the type check, or removing the type check.",
+ hasPublishedDocs: true,
uniqueName: 'UNNECESSARY_TYPE_CHECK_FALSE',
);
@@ -2691,6 +2696,7 @@
'UNNECESSARY_TYPE_CHECK',
"Unnecessary type check; the result is always 'true'.",
correction: "Try correcting the type check, or removing the type check.",
+ hasPublishedDocs: true,
uniqueName: 'UNNECESSARY_TYPE_CHECK_TRUE',
);
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 8d51b49..38ef844 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -75,6 +75,7 @@
"Abstract fields can't have initializers.",
correction: "Try removing the field initializer or the 'abstract' keyword "
"from the field declaration.",
+ hasPublishedDocs: true,
uniqueName: 'ABSTRACT_FIELD_CONSTRUCTOR_INITIALIZER',
);
@@ -84,8 +85,8 @@
static const CompileTimeErrorCode ABSTRACT_FIELD_INITIALIZER =
CompileTimeErrorCode('ABSTRACT_FIELD_INITIALIZER',
"Abstract fields can't have initializers.",
- correction:
- "Try removing the initializer or the 'abstract' keyword.");
+ correction: "Try removing the initializer or the 'abstract' keyword.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -178,7 +179,8 @@
'AMBIGUOUS_EXPORT',
"The name '{0}' is defined in the libraries '{1}' and '{2}'.",
correction: "Try removing the export of one of the libraries, or "
- "explicitly hiding the name in one of the export directives.");
+ "explicitly hiding the name in one of the export directives.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -584,7 +586,8 @@
// ```
static const CompileTimeErrorCode ASSERT_IN_REDIRECTING_CONSTRUCTOR =
CompileTimeErrorCode('ASSERT_IN_REDIRECTING_CONSTRUCTOR',
- "A redirecting constructor can't have an 'assert' initializer.");
+ "A redirecting constructor can't have an 'assert' initializer.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -637,7 +640,8 @@
static const CompileTimeErrorCode ASSIGNMENT_TO_CONST = CompileTimeErrorCode(
'ASSIGNMENT_TO_CONST', "Constant variables can't be assigned a value.",
correction: "Try removing the assignment, or "
- "remove the modifier 'const' from the variable.");
+ "remove the modifier 'const' from the variable.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -830,7 +834,8 @@
// ```
static const CompileTimeErrorCode ASSIGNMENT_TO_FUNCTION =
CompileTimeErrorCode(
- 'ASSIGNMENT_TO_FUNCTION', "Functions can't be assigned a value.");
+ 'ASSIGNMENT_TO_FUNCTION', "Functions can't be assigned a value.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -897,7 +902,8 @@
// }
// ```
static const CompileTimeErrorCode ASSIGNMENT_TO_TYPE = CompileTimeErrorCode(
- 'ASSIGNMENT_TO_TYPE', "Types can't be assigned a value.");
+ 'ASSIGNMENT_TO_TYPE', "Types can't be assigned a value.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -960,7 +966,8 @@
"The async for-in loop can only be used in an async function.",
correction:
"Try marking the function body with either 'async' or 'async*', "
- "or removing the 'await' before the for-in loop.");
+ "or removing the 'await' before the for-in loop.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -1158,7 +1165,8 @@
// ```
static const CompileTimeErrorCode BREAK_LABEL_ON_SWITCH_MEMBER =
CompileTimeErrorCode('BREAK_LABEL_ON_SWITCH_MEMBER',
- "A break label resolves to the 'case' or 'default' statement.");
+ "A break label resolves to the 'case' or 'default' statement.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -1424,7 +1432,8 @@
CompileTimeErrorCode(
'CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS',
"The switch case expression type '{0}' can't override the '==' "
- "operator.");
+ "operator.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -2463,8 +2472,8 @@
static const CompileTimeErrorCode CONST_WITH_TYPE_PARAMETERS =
CompileTimeErrorCode('CONST_WITH_TYPE_PARAMETERS',
"A constant creation can't use a type parameter as a type argument.",
- correction:
- "Try replacing the type parameter with a different type.");
+ correction: "Try replacing the type parameter with a different type.",
+ hasPublishedDocs: true);
/**
* 16.12.2 Const: It is a compile-time error if <i>T.id</i> is not the name of
@@ -2599,7 +2608,8 @@
'DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR',
"Default values aren't allowed in factory constructors that redirect "
"to another constructor.",
- correction: "Try removing the default value.");
+ correction: "Try removing the default value.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -2929,7 +2939,8 @@
'DUPLICATE_PART',
"The library already contains a part with the URI '{0}'.",
correction:
- "Try removing all except one of the duplicated part directives.");
+ "Try removing all except one of the duplicated part directives.",
+ hasPublishedDocs: true);
static const CompileTimeErrorCode ENUM_CONSTANT_SAME_NAME_AS_ENCLOSING =
CompileTimeErrorCode('ENUM_CONSTANT_SAME_NAME_AS_ENCLOSING',
@@ -3043,7 +3054,8 @@
static const CompileTimeErrorCode EXPECTED_ONE_LIST_TYPE_ARGUMENTS =
CompileTimeErrorCode('EXPECTED_ONE_LIST_TYPE_ARGUMENTS',
"List literals require one type argument or none, but {0} found.",
- correction: "Try adjusting the number of type arguments.");
+ correction: "Try adjusting the number of type arguments.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -3073,7 +3085,8 @@
static const CompileTimeErrorCode EXPECTED_ONE_SET_TYPE_ARGUMENTS =
CompileTimeErrorCode('EXPECTED_ONE_SET_TYPE_ARGUMENTS',
"Set literals require one type argument or none, but {0} were found.",
- correction: "Try adjusting the number of type arguments.");
+ correction: "Try adjusting the number of type arguments.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -3103,7 +3116,8 @@
static const CompileTimeErrorCode EXPECTED_TWO_MAP_TYPE_ARGUMENTS =
CompileTimeErrorCode('EXPECTED_TWO_MAP_TYPE_ARGUMENTS',
"Map literals require two type arguments or none, but {0} found.",
- correction: "Try adjusting the number of type arguments.");
+ correction: "Try adjusting the number of type arguments.",
+ hasPublishedDocs: true);
/**
* SDK implementation libraries can be exported only by other SDK libraries.
@@ -3205,7 +3219,8 @@
static const CompileTimeErrorCode EXPORT_OF_NON_LIBRARY =
CompileTimeErrorCode('EXPORT_OF_NON_LIBRARY',
"The exported library '{0}' can't have a part-of directive.",
- correction: "Try exporting the library that the part is a part of.");
+ correction: "Try exporting the library that the part is a part of.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -3842,7 +3857,8 @@
static const CompileTimeErrorCode FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS =
CompileTimeErrorCode('FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS',
"The field '{0}' can't be initialized twice in the same constructor.",
- correction: "Try removing one of the initializations.");
+ correction: "Try removing one of the initializations.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -3956,7 +3972,8 @@
'FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER',
"Fields can't be initialized in both the parameter list and the "
"initializers.",
- correction: "Try removing one of the initializations.");
+ correction: "Try removing one of the initializations.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -3996,7 +4013,8 @@
'FIELD_INITIALIZER_FACTORY_CONSTRUCTOR',
"Initializing formal parameters can't be used in factory "
"constructors.",
- correction: "Try using a normal parameter.");
+ correction: "Try using a normal parameter.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -4134,7 +4152,8 @@
"The redirecting constructor can't have a field initializer.",
correction:
"Try initializing the field in the constructor being redirected "
- "to.");
+ "to.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -4200,7 +4219,8 @@
CompileTimeErrorCode('FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE',
"The parameter type '{0}' is incompatible with the field type '{1}'.",
correction: "Try changing or removing the parameter's type, or "
- "changing the field's type.");
+ "changing the field's type.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -4252,7 +4272,8 @@
'FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR',
"'{0}' is final and was given a value when it was declared, "
"so it can't be set to a new value.",
- correction: "Try removing one of the initializations.");
+ correction: "Try removing one of the initializations.",
+ hasPublishedDocs: true);
/**
* 5 Variables: It is a compile-time error if a final instance variable that
@@ -4652,7 +4673,8 @@
"Functions marked 'async*' must have a return type that is a "
"supertype of 'Stream<T>' for some type 'T'.",
correction: "Try fixing the return type of the function, or "
- "removing the modifier 'async*' from the function body.");
+ "removing the modifier 'async*' from the function body.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -4740,7 +4762,8 @@
"Functions marked 'sync*' must have a return type that is a "
"supertype of 'Iterable<T>' for some type 'T'.",
correction: "Try fixing the return type of the function, or "
- "removing the modifier 'sync*' from the function body.");
+ "removing the modifier 'sync*' from the function body.",
+ hasPublishedDocs: true);
/**
* 7.10 Superinterfaces: It is a compile-time error if the implements clause
@@ -4886,7 +4909,8 @@
static const CompileTimeErrorCode IMPLEMENTS_SUPER_CLASS =
CompileTimeErrorCode('IMPLEMENTS_SUPER_CLASS',
"'{0}' can't be used in both the 'extends' and 'implements' clauses.",
- correction: "Try removing one of the occurrences.");
+ correction: "Try removing one of the occurrences.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -5518,7 +5542,8 @@
correction:
"Try using the 'BigInt' class if you need an integer larger than "
"9,223,372,036,854,775,807 or less than "
- "-9,223,372,036,854,775,808.");
+ "-9,223,372,036,854,775,808.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -5939,7 +5964,8 @@
"Inline function types can't be used for parameters in a generic "
"function type.",
correction: "Try using a generic function type "
- "(returnType 'Function(' parameters ')').");
+ "(returnType 'Function(' parameters ')').",
+ hasPublishedDocs: true);
/**
* 9. Functions: It is a compile-time error if an async, async* or sync*
@@ -6104,7 +6130,8 @@
// ```
static const CompileTimeErrorCode INVALID_SUPER_INVOCATION =
CompileTimeErrorCode('INVALID_SUPER_INVOCATION',
- "The superclass call must be last in an initializer list: '{0}'.");
+ "The superclass call must be last in an initializer list: '{0}'.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -6161,6 +6188,7 @@
"Constant list literals can't include a type parameter as a type "
"argument, such as '{0}'.",
correction: "Try replacing the type parameter with a different type.",
+ hasPublishedDocs: true,
uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_LIST',
);
@@ -6174,6 +6202,7 @@
"Constant map literals can't include a type parameter as a type "
"argument, such as '{0}'.",
correction: "Try replacing the type parameter with a different type.",
+ hasPublishedDocs: true,
uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_MAP',
);
@@ -6187,6 +6216,7 @@
"Constant set literals can't include a type parameter as a type "
"argument, such as '{0}'.",
correction: "Try replacing the type parameter with a different type.",
+ hasPublishedDocs: true,
uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_SET',
);
@@ -6460,7 +6490,8 @@
// ```
static const CompileTimeErrorCode LABEL_IN_OUTER_SCOPE = CompileTimeErrorCode(
'LABEL_IN_OUTER_SCOPE',
- "Can't reference label '{0}' declared in an outer method.");
+ "Can't reference label '{0}' declared in an outer method.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -6516,7 +6547,8 @@
static const CompileTimeErrorCode LABEL_UNDEFINED = CompileTimeErrorCode(
'LABEL_UNDEFINED', "Can't reference an undefined label '{0}'.",
correction: "Try defining the label, or "
- "correcting the name to match an existing label.");
+ "correcting the name to match an existing label.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -6708,6 +6740,7 @@
"The type of the first positional parameter of the 'main' function must be "
"a supertype of 'List<String>'.",
correction: "Try changing the type of the parameter.",
+ hasPublishedDocs: true,
);
/**
@@ -6741,12 +6774,12 @@
// void f({required int x}) {}
// ```
static const CompileTimeErrorCode MAIN_HAS_REQUIRED_NAMED_PARAMETERS =
- CompileTimeErrorCode(
- 'MAIN_HAS_REQUIRED_NAMED_PARAMETERS',
- "The function 'main' can't have any required named parameters.",
- correction: "Try using a different name for the function, or removing the "
- "'required' modifier.",
- );
+ CompileTimeErrorCode('MAIN_HAS_REQUIRED_NAMED_PARAMETERS',
+ "The function 'main' can't have any required named parameters.",
+ correction:
+ "Try using a different name for the function, or removing the "
+ "'required' modifier.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -6789,13 +6822,13 @@
// ```
static const CompileTimeErrorCode
MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS = CompileTimeErrorCode(
- 'MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS',
- "The function 'main' can't have more than two required positional "
- "parameters.",
- correction:
- "Try using a different name for the function, or removing extra "
- "parameters.",
- );
+ 'MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS',
+ "The function 'main' can't have more than two required positional "
+ "parameters.",
+ correction:
+ "Try using a different name for the function, or removing extra "
+ "parameters.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -6822,10 +6855,10 @@
// var mainIndex = 3;
// ```
static const CompileTimeErrorCode MAIN_IS_NOT_FUNCTION = CompileTimeErrorCode(
- 'MAIN_IS_NOT_FUNCTION',
- "The declaration named 'main' must be a function.",
- correction: "Try using a different name for this declaration.",
- );
+ 'MAIN_IS_NOT_FUNCTION',
+ "The declaration named 'main' must be a function.",
+ correction: "Try using a different name for this declaration.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -8432,7 +8465,8 @@
// ```
static const CompileTimeErrorCode NON_SYNC_FACTORY = CompileTimeErrorCode(
'NON_SYNC_FACTORY',
- "Factory bodies can't use 'async', 'async*', or 'sync*'.");
+ "Factory bodies can't use 'async', 'async*', or 'sync*'.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -9176,7 +9210,8 @@
static const CompileTimeErrorCode ON_REPEATED = CompileTimeErrorCode(
'ON_REPEATED',
"The type '{0}' can be included in the superclass constraints only once.",
- correction: "Try removing all except one occurrence of the type name.");
+ correction: "Try removing all except one occurrence of the type name.",
+ hasPublishedDocs: true);
/**
* 7.1.1 Operators: It is a compile-time error to declare an optional
@@ -9450,7 +9485,8 @@
// ```
static const CompileTimeErrorCode PRIVATE_OPTIONAL_PARAMETER =
CompileTimeErrorCode('PRIVATE_OPTIONAL_PARAMETER',
- "Named parameters can't start with an underscore.");
+ "Named parameters can't start with an underscore.",
+ hasPublishedDocs: true);
static const CompileTimeErrorCode PRIVATE_SETTER = CompileTimeErrorCode(
'PRIVATE_SETTER',
@@ -9496,7 +9532,8 @@
// ```
static const CompileTimeErrorCode RECURSIVE_COMPILE_TIME_CONSTANT =
CompileTimeErrorCode('RECURSIVE_COMPILE_TIME_CONSTANT',
- "The compile-time constant expression depends on itself.");
+ "The compile-time constant expression depends on itself.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -9596,7 +9633,8 @@
"Constructors can't redirect to themselves either directly or "
"indirectly.",
correction: 'Try changing one of the constructors in the loop to not '
- 'redirect.');
+ 'redirect.',
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -9606,9 +9644,10 @@
'RECURSIVE_CONSTRUCTOR_REDIRECT',
"Constructors can't redirect to themselves either directly or "
"indirectly.",
- uniqueName: 'RECURSIVE_FACTORY_REDIRECT',
correction: 'Try changing one of the constructors in the loop to not '
- 'redirect.');
+ 'redirect.',
+ hasPublishedDocs: true,
+ uniqueName: 'RECURSIVE_FACTORY_REDIRECT');
/**
* 7.10 Superinterfaces: It is a compile-time error if the interface of a
@@ -9729,7 +9768,8 @@
CompileTimeErrorCode('REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR',
"The constructor '{0}' couldn't be found in '{1}'.",
correction: "Try redirecting to a different constructor, or "
- "defining the constructor named '{0}'.");
+ "defining the constructor named '{0}'.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -9776,7 +9816,8 @@
REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR = CompileTimeErrorCode(
'REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR',
"Generative constructors can't redirect to a factory constructor.",
- correction: "Try redirecting to a different constructor.");
+ correction: "Try redirecting to a different constructor.",
+ hasPublishedDocs: true);
/**
* A factory constructor can't redirect to a non-generative constructor of an
@@ -10036,7 +10077,8 @@
'REDIRECT_TO_NON_CONST_CONSTRUCTOR',
"A constant redirecting constructor can't redirect to a non-constant "
"constructor.",
- correction: "Try redirecting to a different constructor.");
+ correction: "Try redirecting to a different constructor.",
+ hasPublishedDocs: true);
/**
* It is a compile-time error for a redirecting factory constructor to have
@@ -10159,7 +10201,8 @@
"A rethrow must be inside of a catch clause.",
correction:
"Try moving the expression into a catch clause, or using a "
- "'throw' expression.");
+ "'throw' expression.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -10430,7 +10473,8 @@
'SHARED_DEFERRED_PREFIX',
"The prefix of a deferred import can't be used in other import "
"directives.",
- correction: "Try renaming one of the prefixes.");
+ correction: "Try renaming one of the prefixes.",
+ hasPublishedDocs: true);
static const CompileTimeErrorCode SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY =
CompileTimeErrorCode(
@@ -10595,7 +10639,8 @@
// ```
static const CompileTimeErrorCode SUPER_IN_REDIRECTING_CONSTRUCTOR =
CompileTimeErrorCode('SUPER_IN_REDIRECTING_CONSTRUCTOR',
- "The redirecting constructor can't have a 'super' initializer.");
+ "The redirecting constructor can't have a 'super' initializer.",
+ hasPublishedDocs: true);
/**
* 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It
@@ -10833,7 +10878,8 @@
CompileTimeErrorCode('TYPE_PARAMETER_REFERENCED_BY_STATIC',
"Static members can't reference type parameters of the class.",
correction: "Try removing the reference to the type parameter, or "
- "making the member an instance member.");
+ "making the member an instance member.",
+ hasPublishedDocs: true);
/**
* 10 Generics: It is a static type warning if a type parameter is a supertype
@@ -12138,7 +12184,8 @@
'UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER',
"Static members from supertypes must be qualified by the name of the "
"defining type.",
- correction: "Try adding '{0}.' before the name.");
+ correction: "Try adding '{0}.' before the name.",
+ hasPublishedDocs: true);
/**
* Parameters:
@@ -12311,7 +12358,8 @@
// ```
static const CompileTimeErrorCode URI_WITH_INTERPOLATION =
CompileTimeErrorCode(
- 'URI_WITH_INTERPOLATION', "URIs can't use string interpolation.");
+ 'URI_WITH_INTERPOLATION', "URIs can't use string interpolation.",
+ hasPublishedDocs: true);
/**
* No parameters.
@@ -12776,7 +12824,8 @@
CompileTimeErrorCode(
'YIELD_OF_INVALID_TYPE',
"The type '{0}' implied by the 'yield' expression must be assignable "
- "to '{1}'.");
+ "to '{1}'.",
+ hasPublishedDocs: true);
/**
* Initialize a newly created error code to have the given [name]. The message
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
index 0ec115b..7a6aec5 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
@@ -813,6 +813,10 @@
@override
void visitGenericTypeAlias(GenericTypeAlias node) {
+ if (entity == node.type) {
+ optype.includeTypeNameSuggestions = true;
+ }
+ // TODO(scheglov) Use `node.type`, rename the location.
if (entity == node.functionType) {
optype.completionLocation = 'GenericTypeAlias_functionType';
}
diff --git a/pkg/analyzer_plugin/tool/spec/to_html.dart b/pkg/analyzer_plugin/tool/spec/to_html.dart
index 923e34b..8c9ea33 100644
--- a/pkg/analyzer_plugin/tool/spec/to_html.dart
+++ b/pkg/analyzer_plugin/tool/spec/to_html.dart
@@ -169,7 +169,7 @@
void dl(void Function() callback) => element('dl', {}, callback);
void dt(String cls, void Function() callback) =>
element('dt', {'class': cls}, callback);
- void element(String name, Map<dynamic, String> attributes,
+ void element(String name, Map<Object, String> attributes,
[void Function() callback]);
void gray(void Function() callback) =>
element('span', {'style': 'color:#999999'}, callback);
diff --git a/pkg/analyzer_utilities/lib/html.dart b/pkg/analyzer_utilities/lib/html.dart
index 859740f..06d19807 100644
--- a/pkg/analyzer_utilities/lib/html.dart
+++ b/pkg/analyzer_utilities/lib/html.dart
@@ -51,7 +51,7 @@
/// Create an HTML element with the given name, attributes, and child nodes.
dom.Element makeElement(
- String name, Map<dynamic, String> attributes, List<dom.Node> children) {
+ String name, Map<Object, String> attributes, List<dom.Node> children) {
var result = dom.Element.tag(name);
result.attributes.addAll(attributes);
for (var child in children) {
@@ -94,7 +94,7 @@
/// Execute [callback], wrapping its output in an element with the given
/// [name] and [attributes].
- void element(String name, Map<dynamic, String> attributes,
+ void element(String name, Map<Object, String> attributes,
[void Function()? callback]) {
add(makeElement(name, attributes, collectHtml(callback)));
}
diff --git a/pkg/analyzer_utilities/lib/tools.dart b/pkg/analyzer_utilities/lib/tools.dart
index 3ea8a6b..12210c8 100644
--- a/pkg/analyzer_utilities/lib/tools.dart
+++ b/pkg/analyzer_utilities/lib/tools.dart
@@ -482,7 +482,7 @@
/// Execute [callback], wrapping its output in an element with the given
/// [name] and [attributes].
- void element(String name, Map<dynamic, String> attributes,
+ void element(String name, Map<Object, String> attributes,
[void Function()? callback]) {
add(makeElement(name, attributes, collectHtml(callback)));
}
diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart
index db638dc..3e1f89c 100644
--- a/pkg/dev_compiler/lib/src/kernel/compiler.dart
+++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart
@@ -3099,6 +3099,7 @@
// Set module item containers to incremental mode.
setSymbolContainerIncrementalMode(true);
_typeTable.typeContainer.incrementalMode = true;
+ _constTableCache.incrementalMode = true;
// Emit function with additional information, such as types that are used
// in the expression.
@@ -3316,10 +3317,15 @@
// In the body of an `async`, `await` is generated simply as `yield`.
var gen = emitGeneratorFn((_) => []);
// Return type of an async body is `Future<flatten(T)>`, where T is the
- // declared return type.
- var returnType = _types.flatten(function
+ // declared return type, unless T is Object. In that case the Object refers
+ // to a return type of `Future<Object?>`.
+ // TODO(nshahan) Use the Future type value when available on a FunctionNode.
+ var declaredReturnType = function
.computeThisFunctionType(_currentLibrary.nonNullable)
- .returnType);
+ .returnType;
+ var returnType = _coreTypes.isObject(declaredReturnType)
+ ? _coreTypes.objectNullableRawType
+ : _types.flatten(declaredReturnType);
return js.call('#.async(#, #)',
[emitLibraryName(_coreTypes.asyncLibrary), _emitType(returnType), gen]);
}
@@ -6062,6 +6068,13 @@
if (isSdkInternalRuntime(_currentLibrary) || node is PrimitiveConstant) {
return super.visitConstant(node);
}
+
+ // Avoid caching constants during evaluation while scoping issues remain.
+ // See: #44713
+ if (_constTableCache.incrementalMode) {
+ return super.visitConstant(node);
+ }
+
var constAlias = constAliasCache[node];
if (constAlias != null) {
return constAlias;
diff --git a/pkg/dev_compiler/test/expression_compiler/expression_compiler_test.dart b/pkg/dev_compiler/test/expression_compiler/expression_compiler_test.dart
index 108bc1e..221b698 100644
--- a/pkg/dev_compiler/test/expression_compiler/expression_compiler_test.dart
+++ b/pkg/dev_compiler/test/expression_compiler/expression_compiler_test.dart
@@ -574,12 +574,7 @@
expectedResult: '''
(function(x, y, z) {
T\$Eval.VoidTodynamic = () => (T\$Eval.VoidTodynamic = dart.constFn(dart.fnType(dart.dynamic, [])))();
- dart.defineLazy(CT, {
- get C0() {
- return C[0] = dart.fn(foo.main, T\$Eval.VoidTodynamic());
- }
- }, false);
- return C[0] || CT.C0;
+ return dart.fn(foo.main, T\$Eval.VoidTodynamic());
}(
1,
2,
@@ -1476,15 +1471,10 @@
expression: 'const MyClass(1)',
expectedResult: '''
(function(p) {
- dart.defineLazy(CT, {
- get C0() {
- return C[0] = dart.const({
- __proto__: foo.MyClass.prototype,
- [_t]: 1
- });
- }
- }, false);
- return C[0] || CT.C0;
+ return dart.const({
+ __proto__: foo.MyClass.prototype,
+ [_t]: 1
+ });
}(
1
))
@@ -1524,15 +1514,10 @@
expression: "const Key('t')",
expectedResult: '''
(function(p) {
- dart.defineLazy(CT, {
- get C0() {
- return C[0] = dart.const({
- __proto__: foo.ValueKey.prototype,
- [value]: "t"
- });
- }
- }, false);
- return C[0] || CT.C0;
+ return dart.const({
+ __proto__: foo.ValueKey.prototype,
+ [value]: "t"
+ });
}(
1
))
@@ -2113,14 +2098,9 @@
expression: 'const B()',
expectedResult: '''
(function(a, check) {
- dart.defineLazy(CT, {
- get C1() {
- return C[1] = dart.const({
- __proto__: foo.B.prototype
- });
- }
- }, false);
- return C[1] || CT.C1;
+ return dart.const({
+ __proto__: foo.B.prototype
+ });
}(
null,
null
@@ -2128,13 +2108,17 @@
''');
});
- test('evaluation that reuses the constant container', () async {
+ test(
+ 'evaluation that reuses the constant container and canonicalizes properly',
+ () async {
await driver.check(
scope: <String, String>{'a': 'null', 'check': 'null'},
- expression: 'const A()',
+ expression: 'a == const A()',
expectedResult: '''
(function(a, check) {
- return C[0] || CT.C0;
+ return dart.equals(a, dart.const({
+ __proto__: foo.A.prototype
+ }));
}(
null,
null
@@ -2429,12 +2413,7 @@
expectedResult: '''
(function(x, y, z) {
T\$Eval.VoidTodynamic = () => (T\$Eval.VoidTodynamic = dart.constFn(dart.fnType(dart.dynamic, [])))();
- dart.defineLazy(CT, {
- get C0() {
- return C[0] = dart.fn(foo.main, T\$Eval.VoidTodynamic());
- }
- }, false);
- return C[0] || CT.C0;
+ return dart.fn(foo.main, T\$Eval.VoidTodynamic());
}(
1,
2,
@@ -3330,15 +3309,10 @@
expression: 'const MyClass(1)',
expectedResult: '''
(function(p) {
- dart.defineLazy(CT, {
- get C0() {
- return C[0] = dart.const({
- __proto__: foo.MyClass.prototype,
- [_t]: 1
- });
- }
- }, false);
- return C[0] || CT.C0;
+ return dart.const({
+ __proto__: foo.MyClass.prototype,
+ [_t]: 1
+ });
}(
1
))
@@ -3378,15 +3352,10 @@
expression: "const Key('t')",
expectedResult: '''
(function(p) {
- dart.defineLazy(CT, {
- get C0() {
- return C[0] = dart.const({
- __proto__: foo.ValueKey.prototype,
- [value]: "t"
- });
- }
- }, false);
- return C[0] || CT.C0;
+ return dart.const({
+ __proto__: foo.ValueKey.prototype,
+ [value]: "t"
+ });
}(
1
))
diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart
index e6a4456..bc9cb92 100644
--- a/pkg/kernel/lib/binary/ast_from_binary.dart
+++ b/pkg/kernel/lib/binary/ast_from_binary.dart
@@ -314,88 +314,124 @@
final int constantTag = readByte();
switch (constantTag) {
case ConstantTag.NullConstant:
- return new NullConstant();
+ return _readNullConstant();
case ConstantTag.BoolConstant:
- return new BoolConstant(readByte() == 1);
+ return _readBoolConstant();
case ConstantTag.IntConstant:
- return new IntConstant((readExpression() as IntLiteral).value);
+ return _readIntConstant();
case ConstantTag.DoubleConstant:
- return new DoubleConstant(readDouble());
+ return _readDoubleConstant();
case ConstantTag.StringConstant:
- return new StringConstant(readStringReference());
+ return _readStringConstant();
case ConstantTag.SymbolConstant:
- Reference libraryReference = readLibraryReference(allowNull: true);
- return new SymbolConstant(readStringReference(), libraryReference);
+ return _readSymbolConstant();
case ConstantTag.MapConstant:
- final DartType keyType = readDartType();
- final DartType valueType = readDartType();
- final int length = readUInt30();
- final List<ConstantMapEntry> entries =
- new List<ConstantMapEntry>.filled(length, null, growable: true);
- for (int i = 0; i < length; i++) {
- final Constant key = readConstantReference();
- final Constant value = readConstantReference();
- entries[i] = new ConstantMapEntry(key, value);
- }
- return new MapConstant(keyType, valueType, entries);
+ return _readMapConstant();
case ConstantTag.ListConstant:
- final DartType typeArgument = readDartType();
- final int length = readUInt30();
- final List<Constant> entries =
- new List<Constant>.filled(length, null, growable: true);
- for (int i = 0; i < length; i++) {
- entries[i] = readConstantReference();
- }
- return new ListConstant(typeArgument, entries);
+ return _readListConstant();
case ConstantTag.SetConstant:
- final DartType typeArgument = readDartType();
- final int length = readUInt30();
- final List<Constant> entries =
- new List<Constant>.filled(length, null, growable: true);
- for (int i = 0; i < length; i++) {
- entries[i] = readConstantReference();
- }
- return new SetConstant(typeArgument, entries);
+ return _readSetConstant();
case ConstantTag.InstanceConstant:
- final Reference classReference = readClassReference();
- final int typeArgumentCount = readUInt30();
- final List<DartType> typeArguments =
- new List<DartType>.filled(typeArgumentCount, null, growable: true);
- for (int i = 0; i < typeArgumentCount; i++) {
- typeArguments[i] = readDartType();
- }
- final int fieldValueCount = readUInt30();
- final Map<Reference, Constant> fieldValues = <Reference, Constant>{};
- for (int i = 0; i < fieldValueCount; i++) {
- final Reference fieldRef =
- readCanonicalNameReference().getReference();
- final Constant constant = readConstantReference();
- fieldValues[fieldRef] = constant;
- }
- return new InstanceConstant(classReference, typeArguments, fieldValues);
+ return _readInstanceConstant();
case ConstantTag.PartialInstantiationConstant:
- final TearOffConstant tearOffConstant =
- readConstantReference() as TearOffConstant;
- final int length = readUInt30();
- final List<DartType> types = new List<DartType>.filled(length, null);
- for (int i = 0; i < length; i++) {
- types[i] = readDartType();
- }
- return new PartialInstantiationConstant(tearOffConstant, types);
+ return _readPartialInstantiationConstant();
case ConstantTag.TearOffConstant:
- final Reference reference = readCanonicalNameReference().getReference();
- return new TearOffConstant.byReference(reference);
+ return _readTearOffConstant();
case ConstantTag.TypeLiteralConstant:
- final DartType type = readDartType();
- return new TypeLiteralConstant(type);
+ return _readTypeLiteralConstant();
case ConstantTag.UnevaluatedConstant:
- final Expression expression = readExpression();
- return new UnevaluatedConstant(expression);
+ return _readUnevaluatedConstant();
}
throw fail('unexpected constant tag: $constantTag');
}
+ Constant _readNullConstant() {
+ return new NullConstant();
+ }
+
+ Constant _readBoolConstant() {
+ return new BoolConstant(readByte() == 1);
+ }
+
+ Constant _readIntConstant() {
+ return new IntConstant((readExpression() as IntLiteral).value);
+ }
+
+ Constant _readDoubleConstant() {
+ return new DoubleConstant(readDouble());
+ }
+
+ Constant _readStringConstant() {
+ return new StringConstant(readStringReference());
+ }
+
+ Constant _readSymbolConstant() {
+ Reference libraryReference = readLibraryReference(allowNull: true);
+ return new SymbolConstant(readStringReference(), libraryReference);
+ }
+
+ Constant _readMapConstant() {
+ final DartType keyType = readDartType();
+ final DartType valueType = readDartType();
+ final int length = readUInt30();
+ final List<ConstantMapEntry> entries =
+ new List<ConstantMapEntry>.filled(length, null, growable: true);
+ for (int i = 0; i < length; i++) {
+ final Constant key = readConstantReference();
+ final Constant value = readConstantReference();
+ entries[i] = new ConstantMapEntry(key, value);
+ }
+ return new MapConstant(keyType, valueType, entries);
+ }
+
+ Constant _readListConstant() {
+ final DartType typeArgument = readDartType();
+ List<Constant> entries = _readConstantReferenceList();
+ return new ListConstant(typeArgument, entries);
+ }
+
+ Constant _readSetConstant() {
+ final DartType typeArgument = readDartType();
+ List<Constant> entries = _readConstantReferenceList();
+ return new SetConstant(typeArgument, entries);
+ }
+
+ Constant _readInstanceConstant() {
+ final Reference classReference = readClassReference();
+ final List<DartType> typeArguments = readDartTypeList();
+ final int fieldValueCount = readUInt30();
+ final Map<Reference, Constant> fieldValues = <Reference, Constant>{};
+ for (int i = 0; i < fieldValueCount; i++) {
+ final Reference fieldRef = readCanonicalNameReference().getReference();
+ final Constant constant = readConstantReference();
+ fieldValues[fieldRef] = constant;
+ }
+ return new InstanceConstant(classReference, typeArguments, fieldValues);
+ }
+
+ Constant _readPartialInstantiationConstant() {
+ final TearOffConstant tearOffConstant =
+ readConstantReference() as TearOffConstant;
+ final List<DartType> types = readDartTypeList();
+ return new PartialInstantiationConstant(tearOffConstant, types);
+ }
+
+ Constant _readTearOffConstant() {
+ final Reference reference = readCanonicalNameReference().getReference();
+ return new TearOffConstant.byReference(reference);
+ }
+
+ Constant _readTypeLiteralConstant() {
+ final DartType type = readDartType();
+ return new TypeLiteralConstant(type);
+ }
+
+ Constant _readUnevaluatedConstant() {
+ final Expression expression = readExpression();
+ return new UnevaluatedConstant(expression);
+ }
+
Constant readConstantReference() {
final int offset = readUInt30();
Constant constant = _constantTable[offset];
@@ -403,6 +439,16 @@
return constant;
}
+ List<Constant> _readConstantReferenceList() {
+ final int length = readUInt30();
+ final List<Constant> list =
+ new List<Constant>.filled(length, null, growable: true);
+ for (int i = 0; i < length; i++) {
+ list[i] = readConstantReference();
+ }
+ return list;
+ }
+
Uri readUriReference() {
return _sourceUriTable[readUInt30()];
}
@@ -1566,33 +1612,57 @@
bool isSynthetic = readByte() == 1;
switch (tag) {
case Tag.InvalidInitializer:
- return new InvalidInitializer();
+ return _readInvalidInitializer();
case Tag.FieldInitializer:
- Reference reference = readMemberReference();
- Expression value = readExpression();
- return new FieldInitializer.byReference(reference, value)
- ..isSynthetic = isSynthetic;
+ return _readFieldInitializer(isSynthetic);
case Tag.SuperInitializer:
- int offset = readOffset();
- Reference reference = readMemberReference();
- Arguments arguments = readArguments();
- return new SuperInitializer.byReference(reference, arguments)
- ..isSynthetic = isSynthetic
- ..fileOffset = offset;
+ return _readSuperInitializer(isSynthetic);
case Tag.RedirectingInitializer:
- int offset = readOffset();
- return new RedirectingInitializer.byReference(
- readMemberReference(), readArguments())
- ..fileOffset = offset;
+ return _readRedirectingInitializer();
case Tag.LocalInitializer:
- return new LocalInitializer(readAndPushVariableDeclaration());
+ return _readLocalInitializer();
case Tag.AssertInitializer:
- return new AssertInitializer(readStatement());
+ return _readAssertInitializer();
default:
throw fail('unexpected initializer tag: $tag');
}
}
+ Initializer _readInvalidInitializer() {
+ return new InvalidInitializer();
+ }
+
+ Initializer _readFieldInitializer(bool isSynthetic) {
+ Reference reference = readMemberReference();
+ Expression value = readExpression();
+ return new FieldInitializer.byReference(reference, value)
+ ..isSynthetic = isSynthetic;
+ }
+
+ Initializer _readSuperInitializer(bool isSynthetic) {
+ int offset = readOffset();
+ Reference reference = readMemberReference();
+ Arguments arguments = readArguments();
+ return new SuperInitializer.byReference(reference, arguments)
+ ..isSynthetic = isSynthetic
+ ..fileOffset = offset;
+ }
+
+ Initializer _readRedirectingInitializer() {
+ int offset = readOffset();
+ return new RedirectingInitializer.byReference(
+ readMemberReference(), readArguments())
+ ..fileOffset = offset;
+ }
+
+ Initializer _readLocalInitializer() {
+ return new LocalInitializer(readAndPushVariableDeclaration());
+ }
+
+ Initializer _readAssertInitializer() {
+ return new AssertInitializer(readStatement());
+ }
+
FunctionNode readFunctionNodeOption(bool lazyLoadBody, int outerEndOffset) {
return readAndCheckOptionTag()
? readFunctionNode(
@@ -1733,362 +1803,636 @@
: (tagByte & Tag.SpecializedTagMask);
switch (tag) {
case Tag.LoadLibrary:
- return new LoadLibrary(readLibraryDependencyReference());
+ return _readLoadLibrary();
case Tag.CheckLibraryIsLoaded:
- return new CheckLibraryIsLoaded(readLibraryDependencyReference());
+ return _readCheckLibraryIsLoaded();
case Tag.InvalidExpression:
- int offset = readOffset();
- return new InvalidExpression(readStringOrNullIfEmpty())
- ..fileOffset = offset;
+ return _readInvalidExpression();
case Tag.VariableGet:
- int offset = readOffset();
- readUInt30(); // offset of the variable declaration in the binary.
- return new VariableGet(readVariableReference(), readDartTypeOption())
- ..fileOffset = offset;
+ return _readVariableGet();
case Tag.SpecializedVariableGet:
- int index = tagByte & Tag.SpecializedPayloadMask;
- int offset = readOffset();
- readUInt30(); // offset of the variable declaration in the binary.
- return new VariableGet(variableStack[index])..fileOffset = offset;
+ return _readSpecializedVariableGet(tagByte);
case Tag.VariableSet:
- int offset = readOffset();
- readUInt30(); // offset of the variable declaration in the binary.
- return new VariableSet(readVariableReference(), readExpression())
- ..fileOffset = offset;
+ return _readVariableSet();
case Tag.SpecializedVariableSet:
- int index = tagByte & Tag.SpecializedPayloadMask;
- int offset = readOffset();
- readUInt30(); // offset of the variable declaration in the binary.
- return new VariableSet(variableStack[index], readExpression())
- ..fileOffset = offset;
+ return _readSpecializedVariableSet(tagByte);
case Tag.PropertyGet:
- int offset = readOffset();
- return new PropertyGet.byReference(readExpression(), readName(),
- readInstanceMemberReference(allowNull: true))
- ..fileOffset = offset;
+ return _readPropertyGet();
case Tag.InstanceGet:
- InstanceAccessKind kind = InstanceAccessKind.values[readByte()];
- int offset = readOffset();
- return new InstanceGet.byReference(kind, readExpression(), readName(),
- resultType: readDartType(),
- interfaceTargetReference: readInstanceMemberReference())
- ..fileOffset = offset;
+ return _readInstanceGet();
case Tag.InstanceTearOff:
- InstanceAccessKind kind = InstanceAccessKind.values[readByte()];
- int offset = readOffset();
- return new InstanceTearOff.byReference(
- kind, readExpression(), readName(),
- resultType: readDartType(),
- interfaceTargetReference: readInstanceMemberReference())
- ..fileOffset = offset;
+ return _readInstanceTearOff();
case Tag.DynamicGet:
- DynamicAccessKind kind = DynamicAccessKind.values[readByte()];
- int offset = readOffset();
- return new DynamicGet(kind, readExpression(), readName())
- ..fileOffset = offset;
+ return _readDynamicGet();
case Tag.PropertySet:
- int offset = readOffset();
- return new PropertySet.byReference(readExpression(), readName(),
- readExpression(), readInstanceMemberReference(allowNull: true))
- ..fileOffset = offset;
+ return _readPropertySet();
case Tag.InstanceSet:
- InstanceAccessKind kind = InstanceAccessKind.values[readByte()];
- int offset = readOffset();
- return new InstanceSet.byReference(
- kind, readExpression(), readName(), readExpression(),
- interfaceTargetReference: readInstanceMemberReference())
- ..fileOffset = offset;
+ return _readInstanceSet();
case Tag.DynamicSet:
- DynamicAccessKind kind = DynamicAccessKind.values[readByte()];
- int offset = readOffset();
- return new DynamicSet(
- kind, readExpression(), readName(), readExpression())
- ..fileOffset = offset;
+ return _readDynamicSet();
case Tag.SuperPropertyGet:
- int offset = readOffset();
- addTransformerFlag(TransformerFlag.superCalls);
- return new SuperPropertyGet.byReference(
- readName(), readInstanceMemberReference(allowNull: true))
- ..fileOffset = offset;
+ return _readSuperPropertyGet();
case Tag.SuperPropertySet:
- int offset = readOffset();
- addTransformerFlag(TransformerFlag.superCalls);
- return new SuperPropertySet.byReference(readName(), readExpression(),
- readInstanceMemberReference(allowNull: true))
- ..fileOffset = offset;
+ return _readSuperPropertySet();
case Tag.StaticGet:
- int offset = readOffset();
- return new StaticGet.byReference(readMemberReference())
- ..fileOffset = offset;
+ return _readStaticGet();
case Tag.StaticTearOff:
- int offset = readOffset();
- return new StaticTearOff.byReference(readMemberReference())
- ..fileOffset = offset;
+ return _readStaticTearOff();
case Tag.StaticSet:
- int offset = readOffset();
- return new StaticSet.byReference(
- readMemberReference(), readExpression())
- ..fileOffset = offset;
+ return _readStaticSet();
case Tag.MethodInvocation:
- int flags = readByte();
- int offset = readOffset();
- return new MethodInvocation.byReference(readExpression(), readName(),
- readArguments(), readInstanceMemberReference(allowNull: true))
- ..fileOffset = offset
- ..flags = flags;
+ return _readMethodInvocation();
case Tag.InstanceInvocation:
- InstanceAccessKind kind = InstanceAccessKind.values[readByte()];
- int flags = readByte();
- int offset = readOffset();
- return new InstanceInvocation.byReference(
- kind, readExpression(), readName(), readArguments(),
- functionType: readDartType(),
- interfaceTargetReference: readInstanceMemberReference())
- ..fileOffset = offset
- ..flags = flags;
+ return _readInstanceInvocation();
case Tag.DynamicInvocation:
- DynamicAccessKind kind = DynamicAccessKind.values[readByte()];
- int offset = readOffset();
- return new DynamicInvocation(
- kind, readExpression(), readName(), readArguments())
- ..fileOffset = offset;
+ return _readDynamicInvocation();
case Tag.FunctionInvocation:
- FunctionAccessKind kind = FunctionAccessKind.values[readByte()];
- int offset = readOffset();
- Expression receiver = readExpression();
- Arguments arguments = readArguments();
- DartType functionType = readDartType();
- // `const DynamicType()` is used to encode a missing function type.
- assert(functionType is FunctionType || functionType is DynamicType,
- "Unexpected function type $functionType for FunctionInvocation");
- return new FunctionInvocation(kind, receiver, arguments,
- functionType: functionType is FunctionType ? functionType : null)
- ..fileOffset = offset;
+ return _readFunctionInvocation();
case Tag.FunctionTearOff:
- int offset = readOffset();
- return new FunctionTearOff(readExpression())..fileOffset = offset;
+ return _readFunctionTearOff();
case Tag.LocalFunctionInvocation:
- int offset = readOffset();
- readUInt30(); // offset of the variable declaration in the binary.
- return new LocalFunctionInvocation(
- readVariableReference(), readArguments(),
- functionType: readDartType())
- ..fileOffset = offset;
+ return _readLocalFunctionInvocation();
case Tag.EqualsNull:
- int offset = readOffset();
- return new EqualsNull(readExpression(), isNot: readByte() == 1)
- ..fileOffset = offset;
+ return _readEqualsNull();
case Tag.EqualsCall:
- int offset = readOffset();
- return new EqualsCall.byReference(readExpression(), readExpression(),
- isNot: readByte() == 1,
- functionType: readDartType(),
- interfaceTargetReference: readInstanceMemberReference())
- ..fileOffset = offset;
+ return _readEqualsCall();
case Tag.SuperMethodInvocation:
- int offset = readOffset();
- addTransformerFlag(TransformerFlag.superCalls);
- return new SuperMethodInvocation.byReference(readName(),
- readArguments(), readInstanceMemberReference(allowNull: true))
- ..fileOffset = offset;
+ return _readSuperMethodInvocation();
case Tag.StaticInvocation:
- int offset = readOffset();
- return new StaticInvocation.byReference(
- readMemberReference(), readArguments(),
- isConst: false)
- ..fileOffset = offset;
+ return _readStaticInvocation();
case Tag.ConstStaticInvocation:
- int offset = readOffset();
- return new StaticInvocation.byReference(
- readMemberReference(), readArguments(),
- isConst: true)
- ..fileOffset = offset;
+ return _readConstStaticInvocation();
case Tag.ConstructorInvocation:
- int offset = readOffset();
- return new ConstructorInvocation.byReference(
- readMemberReference(), readArguments(),
- isConst: false)
- ..fileOffset = offset;
+ return _readConstructorInvocation();
case Tag.ConstConstructorInvocation:
- int offset = readOffset();
- return new ConstructorInvocation.byReference(
- readMemberReference(), readArguments(),
- isConst: true)
- ..fileOffset = offset;
+ return _readConstConstructorInvocation();
case Tag.Not:
- return new Not(readExpression());
+ return _readNot();
case Tag.NullCheck:
- int offset = readOffset();
- return new NullCheck(readExpression())..fileOffset = offset;
+ return _readNullCheck();
case Tag.LogicalExpression:
- return new LogicalExpression(readExpression(),
- logicalOperatorToEnum(readByte()), readExpression());
+ return _readLogicalExpression();
case Tag.ConditionalExpression:
- return new ConditionalExpression(readExpression(), readExpression(),
- readExpression(), readDartTypeOption());
+ return _readConditionalExpression();
case Tag.StringConcatenation:
- int offset = readOffset();
- return new StringConcatenation(readExpressionList())
- ..fileOffset = offset;
+ return _readStringConcatenation();
case Tag.ListConcatenation:
- int offset = readOffset();
- DartType typeArgument = readDartType();
- return new ListConcatenation(readExpressionList(),
- typeArgument: typeArgument)
- ..fileOffset = offset;
+ return _readListConcatenation();
case Tag.SetConcatenation:
- int offset = readOffset();
- DartType typeArgument = readDartType();
- return new SetConcatenation(readExpressionList(),
- typeArgument: typeArgument)
- ..fileOffset = offset;
+ return _readSetConcatenation();
case Tag.MapConcatenation:
- int offset = readOffset();
- DartType keyType = readDartType();
- DartType valueType = readDartType();
- return new MapConcatenation(readExpressionList(),
- keyType: keyType, valueType: valueType)
- ..fileOffset = offset;
+ return _readMapConcatenation();
case Tag.InstanceCreation:
- int offset = readOffset();
- Reference classReference = readClassReference();
- List<DartType> typeArguments = readDartTypeList();
- int fieldValueCount = readUInt30();
- Map<Reference, Expression> fieldValues = <Reference, Expression>{};
- for (int i = 0; i < fieldValueCount; i++) {
- final Reference fieldRef =
- readCanonicalNameReference().getReference();
- final Expression value = readExpression();
- fieldValues[fieldRef] = value;
- }
- int assertCount = readUInt30();
- List<AssertStatement> asserts =
- new List<AssertStatement>.filled(assertCount, null);
- for (int i = 0; i < assertCount; i++) {
- asserts[i] = readStatement();
- }
- List<Expression> unusedArguments = readExpressionList();
- return new InstanceCreation(classReference, typeArguments, fieldValues,
- asserts, unusedArguments)
- ..fileOffset = offset;
+ return _readInstanceCreation();
case Tag.FileUriExpression:
- Uri fileUri = readUriReference();
- int offset = readOffset();
- return new FileUriExpression(readExpression(), fileUri)
- ..fileOffset = offset;
+ return _readFileUriExpression();
case Tag.IsExpression:
- int offset = readOffset();
- int flags = readByte();
- return new IsExpression(readExpression(), readDartType())
- ..fileOffset = offset
- ..flags = flags;
+ return _readIsExpression();
case Tag.AsExpression:
- int offset = readOffset();
- int flags = readByte();
- return new AsExpression(readExpression(), readDartType())
- ..fileOffset = offset
- ..flags = flags;
+ return _readAsExpression();
case Tag.StringLiteral:
- return new StringLiteral(readStringReference());
+ return _readStringLiteral();
case Tag.SpecializedIntLiteral:
- int biasedValue = tagByte & Tag.SpecializedPayloadMask;
- return new IntLiteral(biasedValue - Tag.SpecializedIntLiteralBias);
+ return _readSpecializedIntLiteral(tagByte);
case Tag.PositiveIntLiteral:
- return new IntLiteral(readUInt30());
+ return _readPositiveIntLiteral();
case Tag.NegativeIntLiteral:
- return new IntLiteral(-readUInt30());
+ return _readNegativeIntLiteral();
case Tag.BigIntLiteral:
- return new IntLiteral(int.parse(readStringReference()));
+ return _readBigIntLiteral();
case Tag.DoubleLiteral:
- return new DoubleLiteral(readDouble());
+ return _readDoubleLiteral();
case Tag.TrueLiteral:
- return new BoolLiteral(true);
+ return _readTrueLiteral();
case Tag.FalseLiteral:
- return new BoolLiteral(false);
+ return _readFalseLiteral();
case Tag.NullLiteral:
- return new NullLiteral();
+ return _readNullLiteral();
case Tag.SymbolLiteral:
- return new SymbolLiteral(readStringReference());
+ return _readSymbolLiteral();
case Tag.TypeLiteral:
- return new TypeLiteral(readDartType());
+ return _readTypeLiteral();
case Tag.ThisExpression:
- return new ThisExpression();
+ return _readThisLiteral();
case Tag.Rethrow:
- int offset = readOffset();
- return new Rethrow()..fileOffset = offset;
+ return _readRethrow();
case Tag.Throw:
- int offset = readOffset();
- return new Throw(readExpression())..fileOffset = offset;
+ return _readThrow();
case Tag.ListLiteral:
- int offset = readOffset();
- DartType typeArgument = readDartType();
- return new ListLiteral(readExpressionList(),
- typeArgument: typeArgument, isConst: false)
- ..fileOffset = offset;
+ return _readListLiteral();
case Tag.ConstListLiteral:
- int offset = readOffset();
- DartType typeArgument = readDartType();
- return new ListLiteral(readExpressionList(),
- typeArgument: typeArgument, isConst: true)
- ..fileOffset = offset;
+ return _readConstListLiteral();
case Tag.SetLiteral:
- int offset = readOffset();
- DartType typeArgument = readDartType();
- return new SetLiteral(readExpressionList(),
- typeArgument: typeArgument, isConst: false)
- ..fileOffset = offset;
+ return _readSetLiteral();
case Tag.ConstSetLiteral:
- int offset = readOffset();
- DartType typeArgument = readDartType();
- return new SetLiteral(readExpressionList(),
- typeArgument: typeArgument, isConst: true)
- ..fileOffset = offset;
+ return _readConstSetLiteral();
case Tag.MapLiteral:
- int offset = readOffset();
- DartType keyType = readDartType();
- DartType valueType = readDartType();
- return new MapLiteral(readMapEntryList(),
- keyType: keyType, valueType: valueType, isConst: false)
- ..fileOffset = offset;
+ return _readMapLiteral();
case Tag.ConstMapLiteral:
- int offset = readOffset();
- DartType keyType = readDartType();
- DartType valueType = readDartType();
- return new MapLiteral(readMapEntryList(),
- keyType: keyType, valueType: valueType, isConst: true)
- ..fileOffset = offset;
+ return _readConstMapLiteral();
case Tag.AwaitExpression:
- return new AwaitExpression(readExpression());
+ return _readAwaitExpression();
case Tag.FunctionExpression:
- int offset = readOffset();
- return new FunctionExpression(readFunctionNode())..fileOffset = offset;
+ return _readFunctionExpression();
case Tag.Let:
- VariableDeclaration variable = readVariableDeclaration();
- int stackHeight = variableStack.length;
- pushVariableDeclaration(variable);
- Expression body = readExpression();
- variableStack.length = stackHeight;
- return new Let(variable, body);
+ return _readLet();
case Tag.BlockExpression:
- int stackHeight = variableStack.length;
- List<Statement> statements = readStatementList();
- Expression value = readExpression();
- variableStack.length = stackHeight;
- return new BlockExpression(new Block(statements), value);
+ return _readBlockExpression();
case Tag.Instantiation:
- Expression expression = readExpression();
- List<DartType> typeArguments = readDartTypeList();
- return new Instantiation(expression, typeArguments);
+ return _readInstantiation();
case Tag.ConstantExpression:
- int offset = readOffset();
- DartType type = readDartType();
- Constant constant = readConstantReference();
- return new ConstantExpression(constant, type)..fileOffset = offset;
+ return _readConstantExpression();
default:
throw fail('unexpected expression tag: $tag');
}
}
+ Expression _readLoadLibrary() {
+ return new LoadLibrary(readLibraryDependencyReference());
+ }
+
+ Expression _readCheckLibraryIsLoaded() {
+ return new CheckLibraryIsLoaded(readLibraryDependencyReference());
+ }
+
+ Expression _readInvalidExpression() {
+ int offset = readOffset();
+ return new InvalidExpression(readStringOrNullIfEmpty())
+ ..fileOffset = offset;
+ }
+
+ Expression _readVariableGet() {
+ int offset = readOffset();
+ readUInt30(); // offset of the variable declaration in the binary.
+ return new VariableGet(readVariableReference(), readDartTypeOption())
+ ..fileOffset = offset;
+ }
+
+ Expression _readSpecializedVariableGet(int tagByte) {
+ int index = tagByte & Tag.SpecializedPayloadMask;
+ int offset = readOffset();
+ readUInt30(); // offset of the variable declaration in the binary.
+ return new VariableGet(variableStack[index])..fileOffset = offset;
+ }
+
+ Expression _readVariableSet() {
+ int offset = readOffset();
+ readUInt30(); // offset of the variable declaration in the binary.
+ return new VariableSet(readVariableReference(), readExpression())
+ ..fileOffset = offset;
+ }
+
+ Expression _readSpecializedVariableSet(int tagByte) {
+ int index = tagByte & Tag.SpecializedPayloadMask;
+ int offset = readOffset();
+ readUInt30(); // offset of the variable declaration in the binary.
+ return new VariableSet(variableStack[index], readExpression())
+ ..fileOffset = offset;
+ }
+
+ Expression _readPropertyGet() {
+ int offset = readOffset();
+ return new PropertyGet.byReference(readExpression(), readName(),
+ readInstanceMemberReference(allowNull: true))
+ ..fileOffset = offset;
+ }
+
+ Expression _readInstanceGet() {
+ InstanceAccessKind kind = InstanceAccessKind.values[readByte()];
+ int offset = readOffset();
+ return new InstanceGet.byReference(kind, readExpression(), readName(),
+ resultType: readDartType(),
+ interfaceTargetReference: readInstanceMemberReference())
+ ..fileOffset = offset;
+ }
+
+ Expression _readInstanceTearOff() {
+ InstanceAccessKind kind = InstanceAccessKind.values[readByte()];
+ int offset = readOffset();
+ return new InstanceTearOff.byReference(kind, readExpression(), readName(),
+ resultType: readDartType(),
+ interfaceTargetReference: readInstanceMemberReference())
+ ..fileOffset = offset;
+ }
+
+ Expression _readDynamicGet() {
+ DynamicAccessKind kind = DynamicAccessKind.values[readByte()];
+ int offset = readOffset();
+ return new DynamicGet(kind, readExpression(), readName())
+ ..fileOffset = offset;
+ }
+
+ Expression _readPropertySet() {
+ int offset = readOffset();
+ return new PropertySet.byReference(readExpression(), readName(),
+ readExpression(), readInstanceMemberReference(allowNull: true))
+ ..fileOffset = offset;
+ }
+
+ Expression _readInstanceSet() {
+ InstanceAccessKind kind = InstanceAccessKind.values[readByte()];
+ int offset = readOffset();
+ return new InstanceSet.byReference(
+ kind, readExpression(), readName(), readExpression(),
+ interfaceTargetReference: readInstanceMemberReference())
+ ..fileOffset = offset;
+ }
+
+ Expression _readDynamicSet() {
+ DynamicAccessKind kind = DynamicAccessKind.values[readByte()];
+ int offset = readOffset();
+ return new DynamicSet(kind, readExpression(), readName(), readExpression())
+ ..fileOffset = offset;
+ }
+
+ Expression _readSuperPropertyGet() {
+ int offset = readOffset();
+ addTransformerFlag(TransformerFlag.superCalls);
+ return new SuperPropertyGet.byReference(
+ readName(), readInstanceMemberReference(allowNull: true))
+ ..fileOffset = offset;
+ }
+
+ Expression _readSuperPropertySet() {
+ int offset = readOffset();
+ addTransformerFlag(TransformerFlag.superCalls);
+ return new SuperPropertySet.byReference(readName(), readExpression(),
+ readInstanceMemberReference(allowNull: true))
+ ..fileOffset = offset;
+ }
+
+ Expression _readStaticGet() {
+ int offset = readOffset();
+ return new StaticGet.byReference(readMemberReference())
+ ..fileOffset = offset;
+ }
+
+ Expression _readStaticTearOff() {
+ int offset = readOffset();
+ return new StaticTearOff.byReference(readMemberReference())
+ ..fileOffset = offset;
+ }
+
+ Expression _readStaticSet() {
+ int offset = readOffset();
+ return new StaticSet.byReference(readMemberReference(), readExpression())
+ ..fileOffset = offset;
+ }
+
+ Expression _readMethodInvocation() {
+ int flags = readByte();
+ int offset = readOffset();
+ return new MethodInvocation.byReference(readExpression(), readName(),
+ readArguments(), readInstanceMemberReference(allowNull: true))
+ ..fileOffset = offset
+ ..flags = flags;
+ }
+
+ Expression _readInstanceInvocation() {
+ InstanceAccessKind kind = InstanceAccessKind.values[readByte()];
+ int flags = readByte();
+ int offset = readOffset();
+ return new InstanceInvocation.byReference(
+ kind, readExpression(), readName(), readArguments(),
+ functionType: readDartType(),
+ interfaceTargetReference: readInstanceMemberReference())
+ ..fileOffset = offset
+ ..flags = flags;
+ }
+
+ Expression _readDynamicInvocation() {
+ DynamicAccessKind kind = DynamicAccessKind.values[readByte()];
+ int offset = readOffset();
+ return new DynamicInvocation(
+ kind, readExpression(), readName(), readArguments())
+ ..fileOffset = offset;
+ }
+
+ Expression _readFunctionInvocation() {
+ FunctionAccessKind kind = FunctionAccessKind.values[readByte()];
+ int offset = readOffset();
+ Expression receiver = readExpression();
+ Arguments arguments = readArguments();
+ DartType functionType = readDartType();
+ // `const DynamicType()` is used to encode a missing function type.
+ assert(functionType is FunctionType || functionType is DynamicType,
+ "Unexpected function type $functionType for FunctionInvocation");
+ return new FunctionInvocation(kind, receiver, arguments,
+ functionType: functionType is FunctionType ? functionType : null)
+ ..fileOffset = offset;
+ }
+
+ Expression _readFunctionTearOff() {
+ int offset = readOffset();
+ return new FunctionTearOff(readExpression())..fileOffset = offset;
+ }
+
+ Expression _readLocalFunctionInvocation() {
+ int offset = readOffset();
+ readUInt30(); // offset of the variable declaration in the binary.
+ return new LocalFunctionInvocation(readVariableReference(), readArguments(),
+ functionType: readDartType())
+ ..fileOffset = offset;
+ }
+
+ Expression _readEqualsNull() {
+ int offset = readOffset();
+ return new EqualsNull(readExpression(), isNot: readByte() == 1)
+ ..fileOffset = offset;
+ }
+
+ Expression _readEqualsCall() {
+ int offset = readOffset();
+ return new EqualsCall.byReference(readExpression(), readExpression(),
+ isNot: readByte() == 1,
+ functionType: readDartType(),
+ interfaceTargetReference: readInstanceMemberReference())
+ ..fileOffset = offset;
+ }
+
+ Expression _readSuperMethodInvocation() {
+ int offset = readOffset();
+ addTransformerFlag(TransformerFlag.superCalls);
+ return new SuperMethodInvocation.byReference(readName(), readArguments(),
+ readInstanceMemberReference(allowNull: true))
+ ..fileOffset = offset;
+ }
+
+ Expression _readStaticInvocation() {
+ int offset = readOffset();
+ return new StaticInvocation.byReference(
+ readMemberReference(), readArguments(),
+ isConst: false)
+ ..fileOffset = offset;
+ }
+
+ Expression _readConstStaticInvocation() {
+ int offset = readOffset();
+ return new StaticInvocation.byReference(
+ readMemberReference(), readArguments(),
+ isConst: true)
+ ..fileOffset = offset;
+ }
+
+ Expression _readConstructorInvocation() {
+ int offset = readOffset();
+ return new ConstructorInvocation.byReference(
+ readMemberReference(), readArguments(),
+ isConst: false)
+ ..fileOffset = offset;
+ }
+
+ Expression _readConstConstructorInvocation() {
+ int offset = readOffset();
+ return new ConstructorInvocation.byReference(
+ readMemberReference(), readArguments(),
+ isConst: true)
+ ..fileOffset = offset;
+ }
+
+ Expression _readNot() {
+ return new Not(readExpression());
+ }
+
+ Expression _readNullCheck() {
+ int offset = readOffset();
+ return new NullCheck(readExpression())..fileOffset = offset;
+ }
+
+ Expression _readLogicalExpression() {
+ return new LogicalExpression(
+ readExpression(), logicalOperatorToEnum(readByte()), readExpression());
+ }
+
+ Expression _readConditionalExpression() {
+ return new ConditionalExpression(readExpression(), readExpression(),
+ readExpression(), readDartTypeOption());
+ }
+
+ Expression _readStringConcatenation() {
+ int offset = readOffset();
+ return new StringConcatenation(readExpressionList())..fileOffset = offset;
+ }
+
+ Expression _readListConcatenation() {
+ int offset = readOffset();
+ DartType typeArgument = readDartType();
+ return new ListConcatenation(readExpressionList(),
+ typeArgument: typeArgument)
+ ..fileOffset = offset;
+ }
+
+ Expression _readSetConcatenation() {
+ int offset = readOffset();
+ DartType typeArgument = readDartType();
+ return new SetConcatenation(readExpressionList(),
+ typeArgument: typeArgument)
+ ..fileOffset = offset;
+ }
+
+ Expression _readMapConcatenation() {
+ int offset = readOffset();
+ DartType keyType = readDartType();
+ DartType valueType = readDartType();
+ return new MapConcatenation(readExpressionList(),
+ keyType: keyType, valueType: valueType)
+ ..fileOffset = offset;
+ }
+
+ Expression _readInstanceCreation() {
+ int offset = readOffset();
+ Reference classReference = readClassReference();
+ List<DartType> typeArguments = readDartTypeList();
+ int fieldValueCount = readUInt30();
+ Map<Reference, Expression> fieldValues = <Reference, Expression>{};
+ for (int i = 0; i < fieldValueCount; i++) {
+ final Reference fieldRef = readCanonicalNameReference().getReference();
+ final Expression value = readExpression();
+ fieldValues[fieldRef] = value;
+ }
+ int assertCount = readUInt30();
+ List<AssertStatement> asserts =
+ new List<AssertStatement>.filled(assertCount, null);
+ for (int i = 0; i < assertCount; i++) {
+ asserts[i] = readStatement();
+ }
+ List<Expression> unusedArguments = readExpressionList();
+ return new InstanceCreation(
+ classReference, typeArguments, fieldValues, asserts, unusedArguments)
+ ..fileOffset = offset;
+ }
+
+ Expression _readFileUriExpression() {
+ Uri fileUri = readUriReference();
+ int offset = readOffset();
+ return new FileUriExpression(readExpression(), fileUri)
+ ..fileOffset = offset;
+ }
+
+ Expression _readIsExpression() {
+ int offset = readOffset();
+ int flags = readByte();
+ return new IsExpression(readExpression(), readDartType())
+ ..fileOffset = offset
+ ..flags = flags;
+ }
+
+ Expression _readAsExpression() {
+ int offset = readOffset();
+ int flags = readByte();
+ return new AsExpression(readExpression(), readDartType())
+ ..fileOffset = offset
+ ..flags = flags;
+ }
+
+ Expression _readStringLiteral() {
+ return new StringLiteral(readStringReference());
+ }
+
+ Expression _readSpecializedIntLiteral(int tagByte) {
+ int biasedValue = tagByte & Tag.SpecializedPayloadMask;
+ return new IntLiteral(biasedValue - Tag.SpecializedIntLiteralBias);
+ }
+
+ Expression _readPositiveIntLiteral() {
+ return new IntLiteral(readUInt30());
+ }
+
+ Expression _readNegativeIntLiteral() {
+ return new IntLiteral(-readUInt30());
+ }
+
+ Expression _readBigIntLiteral() {
+ return new IntLiteral(int.parse(readStringReference()));
+ }
+
+ Expression _readDoubleLiteral() {
+ return new DoubleLiteral(readDouble());
+ }
+
+ Expression _readTrueLiteral() {
+ return new BoolLiteral(true);
+ }
+
+ Expression _readFalseLiteral() {
+ return new BoolLiteral(false);
+ }
+
+ Expression _readNullLiteral() {
+ return new NullLiteral();
+ }
+
+ Expression _readSymbolLiteral() {
+ return new SymbolLiteral(readStringReference());
+ }
+
+ Expression _readTypeLiteral() {
+ return new TypeLiteral(readDartType());
+ }
+
+ Expression _readThisLiteral() {
+ return new ThisExpression();
+ }
+
+ Expression _readRethrow() {
+ int offset = readOffset();
+ return new Rethrow()..fileOffset = offset;
+ }
+
+ Expression _readThrow() {
+ int offset = readOffset();
+ return new Throw(readExpression())..fileOffset = offset;
+ }
+
+ Expression _readListLiteral() {
+ int offset = readOffset();
+ DartType typeArgument = readDartType();
+ return new ListLiteral(readExpressionList(),
+ typeArgument: typeArgument, isConst: false)
+ ..fileOffset = offset;
+ }
+
+ Expression _readConstListLiteral() {
+ int offset = readOffset();
+ DartType typeArgument = readDartType();
+ return new ListLiteral(readExpressionList(),
+ typeArgument: typeArgument, isConst: true)
+ ..fileOffset = offset;
+ }
+
+ Expression _readSetLiteral() {
+ int offset = readOffset();
+ DartType typeArgument = readDartType();
+ return new SetLiteral(readExpressionList(),
+ typeArgument: typeArgument, isConst: false)
+ ..fileOffset = offset;
+ }
+
+ Expression _readConstSetLiteral() {
+ int offset = readOffset();
+ DartType typeArgument = readDartType();
+ return new SetLiteral(readExpressionList(),
+ typeArgument: typeArgument, isConst: true)
+ ..fileOffset = offset;
+ }
+
+ Expression _readMapLiteral() {
+ int offset = readOffset();
+ DartType keyType = readDartType();
+ DartType valueType = readDartType();
+ return new MapLiteral(readMapEntryList(),
+ keyType: keyType, valueType: valueType, isConst: false)
+ ..fileOffset = offset;
+ }
+
+ Expression _readConstMapLiteral() {
+ int offset = readOffset();
+ DartType keyType = readDartType();
+ DartType valueType = readDartType();
+ return new MapLiteral(readMapEntryList(),
+ keyType: keyType, valueType: valueType, isConst: true)
+ ..fileOffset = offset;
+ }
+
+ Expression _readAwaitExpression() {
+ return new AwaitExpression(readExpression());
+ }
+
+ Expression _readFunctionExpression() {
+ int offset = readOffset();
+ return new FunctionExpression(readFunctionNode())..fileOffset = offset;
+ }
+
+ Expression _readLet() {
+ VariableDeclaration variable = readVariableDeclaration();
+ int stackHeight = variableStack.length;
+ pushVariableDeclaration(variable);
+ Expression body = readExpression();
+ variableStack.length = stackHeight;
+ return new Let(variable, body);
+ }
+
+ Expression _readBlockExpression() {
+ int stackHeight = variableStack.length;
+ List<Statement> statements = readStatementList();
+ Expression value = readExpression();
+ variableStack.length = stackHeight;
+ return new BlockExpression(new Block(statements), value);
+ }
+
+ Expression _readInstantiation() {
+ Expression expression = readExpression();
+ List<DartType> typeArguments = readDartTypeList();
+ return new Instantiation(expression, typeArguments);
+ }
+
+ Expression _readConstantExpression() {
+ int offset = readOffset();
+ DartType type = readDartType();
+ Constant constant = readConstantReference();
+ return new ConstantExpression(constant, type)..fileOffset = offset;
+ }
+
List<MapEntry> readMapEntryList() {
int length = readUInt30();
List<MapEntry> result =
@@ -2130,118 +2474,189 @@
int tag = readByte();
switch (tag) {
case Tag.ExpressionStatement:
- return new ExpressionStatement(readExpression());
+ return _readExpressionStatement();
case Tag.Block:
- return readBlock();
+ return _readBlock();
case Tag.AssertBlock:
- return readAssertBlock();
+ return _readAssertBlock();
case Tag.EmptyStatement:
- return new EmptyStatement();
+ return _readEmptyStatement();
case Tag.AssertStatement:
- return new AssertStatement(readExpression(),
- conditionStartOffset: readOffset(),
- conditionEndOffset: readOffset(),
- message: readExpressionOption());
+ return _readAssertStatement();
case Tag.LabeledStatement:
- LabeledStatement label = new LabeledStatement(null);
- labelStack.add(label);
- label.body = readStatement()..parent = label;
- labelStack.removeLast();
- return label;
+ return _readLabeledStatement();
case Tag.BreakStatement:
- int offset = readOffset();
- int index = readUInt30();
- return new BreakStatement(labelStack[labelStackBase + index])
- ..fileOffset = offset;
+ return _readBreakStatement();
case Tag.WhileStatement:
- int offset = readOffset();
- return new WhileStatement(readExpression(), readStatement())
- ..fileOffset = offset;
+ return _readWhileStatement();
case Tag.DoStatement:
- int offset = readOffset();
- return new DoStatement(readStatement(), readExpression())
- ..fileOffset = offset;
+ return _readDoStatement();
case Tag.ForStatement:
- int variableStackHeight = variableStack.length;
- int offset = readOffset();
- List<VariableDeclaration> variables =
- readAndPushVariableDeclarationList();
- Expression condition = readExpressionOption();
- List<Expression> updates = readExpressionList();
- Statement body = readStatement();
- variableStack.length = variableStackHeight;
- return new ForStatement(variables, condition, updates, body)
- ..fileOffset = offset;
+ return _readForStatement();
case Tag.ForInStatement:
case Tag.AsyncForInStatement:
- bool isAsync = tag == Tag.AsyncForInStatement;
- int variableStackHeight = variableStack.length;
- int offset = readOffset();
- int bodyOffset = readOffset();
- VariableDeclaration variable = readAndPushVariableDeclaration();
- Expression iterable = readExpression();
- Statement body = readStatement();
- variableStack.length = variableStackHeight;
- return new ForInStatement(variable, iterable, body, isAsync: isAsync)
- ..fileOffset = offset
- ..bodyOffset = bodyOffset;
+ return _readForInStatement(tag);
case Tag.SwitchStatement:
- int offset = readOffset();
- Expression expression = readExpression();
- int count = readUInt30();
- List<SwitchCase> cases =
- new List<SwitchCase>.filled(count, null, growable: true);
- for (int i = 0; i < count; ++i) {
- cases[i] = new SwitchCase.empty();
- }
- switchCaseStack.addAll(cases);
- for (int i = 0; i < cases.length; ++i) {
- readSwitchCaseInto(cases[i]);
- }
- switchCaseStack.length -= count;
- return new SwitchStatement(expression, cases)..fileOffset = offset;
+ return _readSwitchStatement();
case Tag.ContinueSwitchStatement:
- int offset = readOffset();
- int index = readUInt30();
- return new ContinueSwitchStatement(
- switchCaseStack[switchCaseStackBase + index])
- ..fileOffset = offset;
+ return _readContinueSwitchStatement();
case Tag.IfStatement:
- int offset = readOffset();
- return new IfStatement(
- readExpression(), readStatement(), readStatementOrNullIfEmpty())
- ..fileOffset = offset;
+ return _readIfStatement();
case Tag.ReturnStatement:
- int offset = readOffset();
- return new ReturnStatement(readExpressionOption())..fileOffset = offset;
+ return _readReturnStatement();
case Tag.TryCatch:
- Statement body = readStatement();
- int flags = readByte();
- return new TryCatch(body, readCatchList(), isSynthetic: flags & 2 == 2);
+ return _readTryCatch();
case Tag.TryFinally:
- return new TryFinally(readStatement(), readStatement());
+ return _readTryFinally();
case Tag.YieldStatement:
- int offset = readOffset();
- int flags = readByte();
- return new YieldStatement(readExpression(),
- isYieldStar: flags & YieldStatement.FlagYieldStar != 0,
- isNative: flags & YieldStatement.FlagNative != 0)
- ..fileOffset = offset;
+ return _readYieldStatement();
case Tag.VariableDeclaration:
- VariableDeclaration variable = readVariableDeclaration();
- variableStack.add(variable); // Will be popped by the enclosing scope.
- return variable;
+ return _readVariableDeclaration();
case Tag.FunctionDeclaration:
- int offset = readOffset();
- VariableDeclaration variable = readVariableDeclaration();
- variableStack.add(variable); // Will be popped by the enclosing scope.
- FunctionNode function = readFunctionNode();
- return new FunctionDeclaration(variable, function)..fileOffset = offset;
+ return _readFunctionDeclaration();
default:
throw fail('unexpected statement tag: $tag');
}
}
+ Statement _readExpressionStatement() {
+ return new ExpressionStatement(readExpression());
+ }
+
+ Statement _readEmptyStatement() {
+ return new EmptyStatement();
+ }
+
+ Statement _readAssertStatement() {
+ return new AssertStatement(readExpression(),
+ conditionStartOffset: readOffset(),
+ conditionEndOffset: readOffset(),
+ message: readExpressionOption());
+ }
+
+ Statement _readLabeledStatement() {
+ LabeledStatement label = new LabeledStatement(null);
+ labelStack.add(label);
+ label.body = readStatement()..parent = label;
+ labelStack.removeLast();
+ return label;
+ }
+
+ Statement _readBreakStatement() {
+ int offset = readOffset();
+ int index = readUInt30();
+ return new BreakStatement(labelStack[labelStackBase + index])
+ ..fileOffset = offset;
+ }
+
+ Statement _readWhileStatement() {
+ int offset = readOffset();
+ return new WhileStatement(readExpression(), readStatement())
+ ..fileOffset = offset;
+ }
+
+ Statement _readDoStatement() {
+ int offset = readOffset();
+ return new DoStatement(readStatement(), readExpression())
+ ..fileOffset = offset;
+ }
+
+ Statement _readForStatement() {
+ int variableStackHeight = variableStack.length;
+ int offset = readOffset();
+ List<VariableDeclaration> variables = readAndPushVariableDeclarationList();
+ Expression condition = readExpressionOption();
+ List<Expression> updates = readExpressionList();
+ Statement body = readStatement();
+ variableStack.length = variableStackHeight;
+ return new ForStatement(variables, condition, updates, body)
+ ..fileOffset = offset;
+ }
+
+ Statement _readForInStatement(int tag) {
+ bool isAsync = tag == Tag.AsyncForInStatement;
+ int variableStackHeight = variableStack.length;
+ int offset = readOffset();
+ int bodyOffset = readOffset();
+ VariableDeclaration variable = readAndPushVariableDeclaration();
+ Expression iterable = readExpression();
+ Statement body = readStatement();
+ variableStack.length = variableStackHeight;
+ return new ForInStatement(variable, iterable, body, isAsync: isAsync)
+ ..fileOffset = offset
+ ..bodyOffset = bodyOffset;
+ }
+
+ Statement _readSwitchStatement() {
+ int offset = readOffset();
+ Expression expression = readExpression();
+ int count = readUInt30();
+ List<SwitchCase> cases =
+ new List<SwitchCase>.filled(count, null, growable: true);
+ for (int i = 0; i < count; ++i) {
+ cases[i] = new SwitchCase.empty();
+ }
+ switchCaseStack.addAll(cases);
+ for (int i = 0; i < cases.length; ++i) {
+ readSwitchCaseInto(cases[i]);
+ }
+ switchCaseStack.length -= count;
+ return new SwitchStatement(expression, cases)..fileOffset = offset;
+ }
+
+ Statement _readContinueSwitchStatement() {
+ int offset = readOffset();
+ int index = readUInt30();
+ return new ContinueSwitchStatement(
+ switchCaseStack[switchCaseStackBase + index])
+ ..fileOffset = offset;
+ }
+
+ Statement _readIfStatement() {
+ int offset = readOffset();
+ return new IfStatement(
+ readExpression(), readStatement(), readStatementOrNullIfEmpty())
+ ..fileOffset = offset;
+ }
+
+ Statement _readReturnStatement() {
+ int offset = readOffset();
+ return new ReturnStatement(readExpressionOption())..fileOffset = offset;
+ }
+
+ Statement _readTryCatch() {
+ Statement body = readStatement();
+ int flags = readByte();
+ return new TryCatch(body, readCatchList(), isSynthetic: flags & 2 == 2);
+ }
+
+ Statement _readTryFinally() {
+ return new TryFinally(readStatement(), readStatement());
+ }
+
+ Statement _readYieldStatement() {
+ int offset = readOffset();
+ int flags = readByte();
+ return new YieldStatement(readExpression(),
+ isYieldStar: flags & YieldStatement.FlagYieldStar != 0,
+ isNative: flags & YieldStatement.FlagNative != 0)
+ ..fileOffset = offset;
+ }
+
+ Statement _readVariableDeclaration() {
+ VariableDeclaration variable = readVariableDeclaration();
+ variableStack.add(variable); // Will be popped by the enclosing scope.
+ return variable;
+ }
+
+ Statement _readFunctionDeclaration() {
+ int offset = readOffset();
+ VariableDeclaration variable = readVariableDeclaration();
+ variableStack.add(variable); // Will be popped by the enclosing scope.
+ FunctionNode function = readFunctionNode();
+ return new FunctionDeclaration(variable, function)..fileOffset = offset;
+ }
+
void readSwitchCaseInto(SwitchCase caseNode) {
int length = readUInt30();
caseNode.expressions.length = length;
@@ -2275,7 +2690,7 @@
..fileOffset = offset;
}
- Block readBlock() {
+ Block _readBlock() {
int stackHeight = variableStack.length;
int offset = readOffset();
int endOffset = readOffset();
@@ -2286,7 +2701,7 @@
..fileEndOffset = endOffset;
}
- AssertBlock readAssertBlock() {
+ AssertBlock _readAssertBlock() {
int stackHeight = variableStack.length;
List<Statement> body = readStatementList();
variableStack.length = stackHeight;
@@ -2353,87 +2768,127 @@
int tag = readByte();
switch (tag) {
case Tag.TypedefType:
- int nullabilityIndex = readByte();
- return new TypedefType.byReference(readTypedefReference(),
- Nullability.values[nullabilityIndex], readDartTypeList());
+ return _readTypedefType();
case Tag.BottomType:
- return const BottomType();
+ return _readBottomType();
case Tag.InvalidType:
- return const InvalidType();
+ return _readInvalidType();
case Tag.DynamicType:
- return const DynamicType();
+ return _readDynamicType();
case Tag.VoidType:
- return const VoidType();
+ return _readVoidType();
case Tag.NeverType:
- int nullabilityIndex = readByte();
- return new NeverType(Nullability.values[nullabilityIndex]);
+ return _readNeverType();
case Tag.InterfaceType:
- int nullabilityIndex = readByte();
- Reference reference = readClassReference();
- List<DartType> typeArguments = readDartTypeList();
- {
- CanonicalName canonicalName = reference.canonicalName;
- if (canonicalName.name == "FutureOr" &&
- canonicalName.parent != null &&
- canonicalName.parent.name == "dart:async" &&
- canonicalName.parent.parent != null &&
- canonicalName.parent.parent.isRoot) {
- return new FutureOrType(
- typeArguments.single, Nullability.values[nullabilityIndex]);
- }
- }
- return new InterfaceType.byReference(
- reference, Nullability.values[nullabilityIndex], typeArguments);
+ return _readInterfaceType();
case Tag.SimpleInterfaceType:
- int nullabilityIndex = readByte();
- Reference classReference = readClassReference();
- {
- CanonicalName canonicalName = classReference.canonicalName;
- if (canonicalName != null &&
- !forSupertype &&
- canonicalName.name == "Null" &&
- canonicalName.parent?.name == "dart:core" &&
- (canonicalName.parent?.parent?.isRoot ?? false)) {
- return const NullType();
- }
- }
- return new InterfaceType.byReference(classReference,
- Nullability.values[nullabilityIndex], const <DartType>[]);
+ return _readSimpleInterfaceType(forSupertype);
case Tag.FunctionType:
- int typeParameterStackHeight = typeParameterStack.length;
- int nullabilityIndex = readByte();
- List<TypeParameter> typeParameters = readAndPushTypeParameterList();
- int requiredParameterCount = readUInt30();
- int totalParameterCount = readUInt30();
- List<DartType> positional = readDartTypeList();
- List<NamedType> named = readNamedTypeList();
- DartType typedefType = readDartTypeOption();
- assert(positional.length + named.length == totalParameterCount);
- DartType returnType = readDartType();
- typeParameterStack.length = typeParameterStackHeight;
- return new FunctionType(
- positional, returnType, Nullability.values[nullabilityIndex],
- typeParameters: typeParameters,
- requiredParameterCount: requiredParameterCount,
- namedParameters: named,
- typedefType: typedefType);
+ return _readFunctionType();
case Tag.SimpleFunctionType:
- int nullabilityIndex = readByte();
- List<DartType> positional = readDartTypeList();
- DartType returnType = readDartType();
- return new FunctionType(
- positional, returnType, Nullability.values[nullabilityIndex]);
+ return _readSimpleFunctionType();
case Tag.TypeParameterType:
- int declaredNullabilityIndex = readByte();
- int index = readUInt30();
- DartType bound = readDartTypeOption();
- return new TypeParameterType(typeParameterStack[index],
- Nullability.values[declaredNullabilityIndex], bound);
+ return _readTypeParameterType();
default:
throw fail('unexpected dart type tag: $tag');
}
}
+ DartType _readTypedefType() {
+ int nullabilityIndex = readByte();
+ return new TypedefType.byReference(readTypedefReference(),
+ Nullability.values[nullabilityIndex], readDartTypeList());
+ }
+
+ DartType _readBottomType() {
+ return const BottomType();
+ }
+
+ DartType _readInvalidType() {
+ return const InvalidType();
+ }
+
+ DartType _readDynamicType() {
+ return const DynamicType();
+ }
+
+ DartType _readVoidType() {
+ return const VoidType();
+ }
+
+ DartType _readNeverType() {
+ int nullabilityIndex = readByte();
+ return new NeverType(Nullability.values[nullabilityIndex]);
+ }
+
+ DartType _readInterfaceType() {
+ int nullabilityIndex = readByte();
+ Reference reference = readClassReference();
+ List<DartType> typeArguments = readDartTypeList();
+ CanonicalName canonicalName = reference.canonicalName;
+ if (canonicalName.name == "FutureOr" &&
+ canonicalName.parent != null &&
+ canonicalName.parent.name == "dart:async" &&
+ canonicalName.parent.parent != null &&
+ canonicalName.parent.parent.isRoot) {
+ return new FutureOrType(
+ typeArguments.single, Nullability.values[nullabilityIndex]);
+ }
+ return new InterfaceType.byReference(
+ reference, Nullability.values[nullabilityIndex], typeArguments);
+ }
+
+ DartType _readSimpleInterfaceType(bool forSupertype) {
+ int nullabilityIndex = readByte();
+ Reference classReference = readClassReference();
+ CanonicalName canonicalName = classReference.canonicalName;
+ if (canonicalName != null &&
+ !forSupertype &&
+ canonicalName.name == "Null" &&
+ canonicalName.parent?.name == "dart:core" &&
+ (canonicalName.parent?.parent?.isRoot ?? false)) {
+ return const NullType();
+ }
+ return new InterfaceType.byReference(classReference,
+ Nullability.values[nullabilityIndex], const <DartType>[]);
+ }
+
+ DartType _readFunctionType() {
+ int typeParameterStackHeight = typeParameterStack.length;
+ int nullabilityIndex = readByte();
+ List<TypeParameter> typeParameters = readAndPushTypeParameterList();
+ int requiredParameterCount = readUInt30();
+ int totalParameterCount = readUInt30();
+ List<DartType> positional = readDartTypeList();
+ List<NamedType> named = readNamedTypeList();
+ DartType typedefType = readDartTypeOption();
+ assert(positional.length + named.length == totalParameterCount);
+ DartType returnType = readDartType();
+ typeParameterStack.length = typeParameterStackHeight;
+ return new FunctionType(
+ positional, returnType, Nullability.values[nullabilityIndex],
+ typeParameters: typeParameters,
+ requiredParameterCount: requiredParameterCount,
+ namedParameters: named,
+ typedefType: typedefType);
+ }
+
+ DartType _readSimpleFunctionType() {
+ int nullabilityIndex = readByte();
+ List<DartType> positional = readDartTypeList();
+ DartType returnType = readDartType();
+ return new FunctionType(
+ positional, returnType, Nullability.values[nullabilityIndex]);
+ }
+
+ DartType _readTypeParameterType() {
+ int declaredNullabilityIndex = readByte();
+ int index = readUInt30();
+ DartType bound = readDartTypeOption();
+ return new TypeParameterType(typeParameterStack[index],
+ Nullability.values[declaredNullabilityIndex], bound);
+ }
+
List<TypeParameter> readAndPushTypeParameterList(
[List<TypeParameter> list, TreeNode parent]) {
int length = readUInt30();
diff --git a/runtime/lib/isolate.cc b/runtime/lib/isolate.cc
index b5d898e..aa9a2c4 100644
--- a/runtime/lib/isolate.cc
+++ b/runtime/lib/isolate.cc
@@ -586,7 +586,7 @@
ASSERT(name != nullptr);
auto group = state_->isolate_group();
- if (!FLAG_enable_isolate_groups || group == nullptr) {
+ if (!IsolateGroup::AreIsolateGroupsEnabled() || group == nullptr) {
RunHeavyweight(name);
} else {
RunLightweight(name);
diff --git a/runtime/tests/vm/dart/isolates/dart_api_create_lightweight_isolate_test.dart b/runtime/tests/vm/dart/isolates/dart_api_create_lightweight_isolate_test.dart
index ecc33a1..34c3f23 100644
--- a/runtime/tests/vm/dart/isolates/dart_api_create_lightweight_isolate_test.dart
+++ b/runtime/tests/vm/dart/isolates/dart_api_create_lightweight_isolate_test.dart
@@ -4,7 +4,7 @@
// SharedObjects=ffi_test_functions
// VMOptions=
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:async';
import 'dart:ffi';
@@ -18,8 +18,10 @@
import '../../../../../tests/ffi/dylib_utils.dart';
final bool isAOT = Platform.executable.contains('dart_precompiled_runtime');
-final bool isolateGropusEnabled =
+final bool isolateGroupsEnabled =
Platform.executableArguments.contains('--enable-isolate-groups');
+final bool isolateGroupsEnabledInJIT = Platform.executableArguments
+ .contains('--experimental-enable-isolate-groups-jit');
final sdkRoot = Platform.script.resolve('../../../../../');
class Isolate extends Opaque {}
@@ -242,13 +244,17 @@
}
Future main(args) async {
- if (!isolateGropusEnabled) {
+ if (!isolateGroupsEnabled) {
await testNotSupported();
return;
}
if (isAOT) {
await testAot();
} else {
- await testJit();
+ if (isolateGroupsEnabledInJIT) {
+ await testJit();
+ } else {
+ await testNotSupported();
+ }
}
}
diff --git a/runtime/tests/vm/dart/isolates/fibonacci_call_ig_test.dart b/runtime/tests/vm/dart/isolates/fibonacci_call_ig_test.dart
index 9a2938b..61acb3f 100644
--- a/runtime/tests/vm/dart/isolates/fibonacci_call_ig_test.dart
+++ b/runtime/tests/vm/dart/isolates/fibonacci_call_ig_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart/isolates/fibonacci_call_test.dart b/runtime/tests/vm/dart/isolates/fibonacci_call_test.dart
index b6b32ef..a8ba640 100644
--- a/runtime/tests/vm/dart/isolates/fibonacci_call_test.dart
+++ b/runtime/tests/vm/dart/isolates/fibonacci_call_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart/isolates/limited_active_mutator_test.dart b/runtime/tests/vm/dart/isolates/limited_active_mutator_test.dart
index 71ca959..147dfdc 100644
--- a/runtime/tests/vm/dart/isolates/limited_active_mutator_test.dart
+++ b/runtime/tests/vm/dart/isolates/limited_active_mutator_test.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
// SharedObjects=ffi_test_functions
-// VMOptions=--enable-isolate-groups --disable-heap-verification --disable-thread-pool-limit
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification --disable-thread-pool-limit
import 'dart:async';
import 'dart:math' as math;
diff --git a/runtime/tests/vm/dart/isolates/ring_gc_sendAndExit_test.dart b/runtime/tests/vm/dart/isolates/ring_gc_sendAndExit_test.dart
index 10f5f19..e461273 100644
--- a/runtime/tests/vm/dart/isolates/ring_gc_sendAndExit_test.dart
+++ b/runtime/tests/vm/dart/isolates/ring_gc_sendAndExit_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:math' as math;
diff --git a/runtime/tests/vm/dart/isolates/ring_gc_test.dart b/runtime/tests/vm/dart/isolates/ring_gc_test.dart
index a126755..f0ecbc1 100644
--- a/runtime/tests/vm/dart/isolates/ring_gc_test.dart
+++ b/runtime/tests/vm/dart/isolates/ring_gc_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:async';
import 'dart:math' as math;
diff --git a/runtime/tests/vm/dart/isolates/spawn_function_test.dart b/runtime/tests/vm/dart/isolates/spawn_function_test.dart
index f2a85ea..bbbb2f5 100644
--- a/runtime/tests/vm/dart/isolates/spawn_function_test.dart
+++ b/runtime/tests/vm/dart/isolates/spawn_function_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart/isolates/sum_recursive_call_ig_test.dart b/runtime/tests/vm/dart/isolates/sum_recursive_call_ig_test.dart
index 915c102..6b7eecb 100644
--- a/runtime/tests/vm/dart/isolates/sum_recursive_call_ig_test.dart
+++ b/runtime/tests/vm/dart/isolates/sum_recursive_call_ig_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart/isolates/sum_recursive_call_test.dart b/runtime/tests/vm/dart/isolates/sum_recursive_call_test.dart
index 89bcc58..3b18008 100644
--- a/runtime/tests/vm/dart/isolates/sum_recursive_call_test.dart
+++ b/runtime/tests/vm/dart/isolates/sum_recursive_call_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_ig_test.dart b/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_ig_test.dart
index a3fb967..bf1d165 100644
--- a/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_ig_test.dart
+++ b/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_ig_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_test.dart b/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_test.dart
index 866b8f3..a98cc91 100644
--- a/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_test.dart
+++ b/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart/isolates/thread_pool_test.dart b/runtime/tests/vm/dart/isolates/thread_pool_test.dart
index 3d689ca..aadf1f6 100644
--- a/runtime/tests/vm/dart/isolates/thread_pool_test.dart
+++ b/runtime/tests/vm/dart/isolates/thread_pool_test.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
// SharedObjects=ffi_test_functions
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:async';
import 'dart:ffi';
diff --git a/runtime/tests/vm/dart/issue_31959_31960_test.dart b/runtime/tests/vm/dart/issue_31959_31960_test.dart
index 3ca1be2..5cb830f 100644
--- a/runtime/tests/vm/dart/issue_31959_31960_test.dart
+++ b/runtime/tests/vm/dart/issue_31959_31960_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/runtime/tests/vm/dart/sendandexit_test.dart b/runtime/tests/vm/dart/sendandexit_test.dart
index 58e02c6..91d2bac 100644
--- a/runtime/tests/vm/dart/sendandexit_test.dart
+++ b/runtime/tests/vm/dart/sendandexit_test.dart
@@ -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.
//
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
//
// Validates functionality of sendAndExit.
diff --git a/runtime/tests/vm/dart/snapshot_test_helper.dart b/runtime/tests/vm/dart/snapshot_test_helper.dart
index 80dcb77..1f61650 100644
--- a/runtime/tests/vm/dart/snapshot_test_helper.dart
+++ b/runtime/tests/vm/dart/snapshot_test_helper.dart
@@ -61,6 +61,7 @@
Future<Result> runDart(String prefix, List<String> arguments) {
final augmentedArguments = <String>[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll(arguments);
return runBinary(prefix, Platform.executable, augmentedArguments);
}
diff --git a/runtime/tests/vm/dart/spawn_infinite_loop_test.dart b/runtime/tests/vm/dart/spawn_infinite_loop_test.dart
index 3a89e80..79409e0 100644
--- a/runtime/tests/vm/dart/spawn_infinite_loop_test.dart
+++ b/runtime/tests/vm/dart/spawn_infinite_loop_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart/transferable_test.dart b/runtime/tests/vm/dart/transferable_test.dart
index 2f5155a..6a9c4f0 100644
--- a/runtime/tests/vm/dart/transferable_test.dart
+++ b/runtime/tests/vm/dart/transferable_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test that validates that transferables are faster than regular typed data.
diff --git a/runtime/tests/vm/dart/transferable_throws_test.dart b/runtime/tests/vm/dart/transferable_throws_test.dart
index 2ad3605..e649a86 100644
--- a/runtime/tests/vm/dart/transferable_throws_test.dart
+++ b/runtime/tests/vm/dart/transferable_throws_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test that ensures correct exceptions are thrown when misusing
diff --git a/runtime/tests/vm/dart_2/isolates/dart_api_create_lightweight_isolate_test.dart b/runtime/tests/vm/dart_2/isolates/dart_api_create_lightweight_isolate_test.dart
index bcd6270..9c1a5c2 100644
--- a/runtime/tests/vm/dart_2/isolates/dart_api_create_lightweight_isolate_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/dart_api_create_lightweight_isolate_test.dart
@@ -4,7 +4,7 @@
// SharedObjects=ffi_test_functions
// VMOptions=
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:async';
import 'dart:ffi';
@@ -18,8 +18,10 @@
import '../../../../../tests/ffi/dylib_utils.dart';
final bool isAOT = Platform.executable.contains('dart_precompiled_runtime');
-final bool isolateGropusEnabled =
+final bool isolateGroupsEnabled =
Platform.executableArguments.contains('--enable-isolate-groups');
+final bool isolateGroupsEnabledInJIT = Platform.executableArguments
+ .contains('--experimental-enable-isolate-groups-jit');
final sdkRoot = Platform.script.resolve('../../../../../');
class Isolate extends Opaque {}
@@ -242,13 +244,17 @@
}
Future main(args) async {
- if (!isolateGropusEnabled) {
+ if (!isolateGroupsEnabled) {
await testNotSupported();
return;
}
if (isAOT) {
await testAot();
} else {
- await testJit();
+ if (isolateGroupsEnabledInJIT) {
+ await testJit();
+ } else {
+ await testNotSupported();
+ }
}
}
diff --git a/runtime/tests/vm/dart_2/isolates/fibonacci_call_ig_test.dart b/runtime/tests/vm/dart_2/isolates/fibonacci_call_ig_test.dart
index 9a2938b..61acb3f 100644
--- a/runtime/tests/vm/dart_2/isolates/fibonacci_call_ig_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/fibonacci_call_ig_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart_2/isolates/fibonacci_call_test.dart b/runtime/tests/vm/dart_2/isolates/fibonacci_call_test.dart
index b6b32ef..a8ba640 100644
--- a/runtime/tests/vm/dart_2/isolates/fibonacci_call_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/fibonacci_call_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart_2/isolates/limited_active_mutator_test.dart b/runtime/tests/vm/dart_2/isolates/limited_active_mutator_test.dart
index 71ca959..147dfdc 100644
--- a/runtime/tests/vm/dart_2/isolates/limited_active_mutator_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/limited_active_mutator_test.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
// SharedObjects=ffi_test_functions
-// VMOptions=--enable-isolate-groups --disable-heap-verification --disable-thread-pool-limit
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification --disable-thread-pool-limit
import 'dart:async';
import 'dart:math' as math;
diff --git a/runtime/tests/vm/dart_2/isolates/ring_gc_sendAndExit_test.dart b/runtime/tests/vm/dart_2/isolates/ring_gc_sendAndExit_test.dart
index 10f5f19..e461273 100644
--- a/runtime/tests/vm/dart_2/isolates/ring_gc_sendAndExit_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/ring_gc_sendAndExit_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:math' as math;
diff --git a/runtime/tests/vm/dart_2/isolates/ring_gc_test.dart b/runtime/tests/vm/dart_2/isolates/ring_gc_test.dart
index a126755..f0ecbc1 100644
--- a/runtime/tests/vm/dart_2/isolates/ring_gc_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/ring_gc_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:async';
import 'dart:math' as math;
diff --git a/runtime/tests/vm/dart_2/isolates/spawn_function_test.dart b/runtime/tests/vm/dart_2/isolates/spawn_function_test.dart
index f2a85ea..bbbb2f5 100644
--- a/runtime/tests/vm/dart_2/isolates/spawn_function_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/spawn_function_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart_2/isolates/sum_recursive_call_ig_test.dart b/runtime/tests/vm/dart_2/isolates/sum_recursive_call_ig_test.dart
index 915c102..6b7eecb 100644
--- a/runtime/tests/vm/dart_2/isolates/sum_recursive_call_ig_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/sum_recursive_call_ig_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart_2/isolates/sum_recursive_call_test.dart b/runtime/tests/vm/dart_2/isolates/sum_recursive_call_test.dart
index 89bcc58..3b18008 100644
--- a/runtime/tests/vm/dart_2/isolates/sum_recursive_call_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/sum_recursive_call_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart_2/isolates/sum_recursive_tail_call_ig_test.dart b/runtime/tests/vm/dart_2/isolates/sum_recursive_tail_call_ig_test.dart
index a3fb967..bf1d165 100644
--- a/runtime/tests/vm/dart_2/isolates/sum_recursive_tail_call_ig_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/sum_recursive_tail_call_ig_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart_2/isolates/sum_recursive_tail_call_test.dart b/runtime/tests/vm/dart_2/isolates/sum_recursive_tail_call_test.dart
index 866b8f3..a98cc91 100644
--- a/runtime/tests/vm/dart_2/isolates/sum_recursive_tail_call_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/sum_recursive_tail_call_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart_2/isolates/thread_pool_test.dart b/runtime/tests/vm/dart_2/isolates/thread_pool_test.dart
index 695fda2..b0de784 100644
--- a/runtime/tests/vm/dart_2/isolates/thread_pool_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/thread_pool_test.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
// SharedObjects=ffi_test_functions
-// VMOptions=--enable-isolate-groups --disable-heap-verification
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit --disable-heap-verification
import 'dart:async';
import 'dart:ffi';
diff --git a/runtime/tests/vm/dart_2/issue_31959_31960_test.dart b/runtime/tests/vm/dart_2/issue_31959_31960_test.dart
index d63a16f..b70bb0d 100644
--- a/runtime/tests/vm/dart_2/issue_31959_31960_test.dart
+++ b/runtime/tests/vm/dart_2/issue_31959_31960_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/runtime/tests/vm/dart_2/sendandexit_test.dart b/runtime/tests/vm/dart_2/sendandexit_test.dart
index 58e02c6..91d2bac 100644
--- a/runtime/tests/vm/dart_2/sendandexit_test.dart
+++ b/runtime/tests/vm/dart_2/sendandexit_test.dart
@@ -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.
//
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
//
// Validates functionality of sendAndExit.
diff --git a/runtime/tests/vm/dart_2/snapshot_test_helper.dart b/runtime/tests/vm/dart_2/snapshot_test_helper.dart
index de92dad..476b205 100644
--- a/runtime/tests/vm/dart_2/snapshot_test_helper.dart
+++ b/runtime/tests/vm/dart_2/snapshot_test_helper.dart
@@ -61,6 +61,7 @@
Future<Result> runDart(String prefix, List<String> arguments) {
final augmentedArguments = <String>[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll(arguments);
return runBinary(prefix, Platform.executable, augmentedArguments);
}
diff --git a/runtime/tests/vm/dart_2/spawn_infinite_loop_test.dart b/runtime/tests/vm/dart_2/spawn_infinite_loop_test.dart
index 3a89e80..79409e0 100644
--- a/runtime/tests/vm/dart_2/spawn_infinite_loop_test.dart
+++ b/runtime/tests/vm/dart_2/spawn_infinite_loop_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/runtime/tests/vm/dart_2/transferable_test.dart b/runtime/tests/vm/dart_2/transferable_test.dart
index 8daf5a0..48ea0ec 100644
--- a/runtime/tests/vm/dart_2/transferable_test.dart
+++ b/runtime/tests/vm/dart_2/transferable_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test that validates that transferables are faster than regular typed data.
diff --git a/runtime/tests/vm/dart_2/transferable_throws_test.dart b/runtime/tests/vm/dart_2/transferable_throws_test.dart
index 6f4d55b..7052072 100644
--- a/runtime/tests/vm/dart_2/transferable_throws_test.dart
+++ b/runtime/tests/vm/dart_2/transferable_throws_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test that ensures correct exceptions are thrown when misusing
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index 9bd27a4..92f23a4 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -209,7 +209,7 @@
ASSERT(!field.is_non_nullable_integer() || FLAG_precompiled_mode);
// Unboxed fields in JIT lightweight isolates mode are not supported yet.
const bool valid_class =
- (FLAG_precompiled_mode || !FLAG_enable_isolate_groups) &&
+ (FLAG_precompiled_mode || !IsolateGroup::AreIsolateGroupsEnabled()) &&
((SupportsUnboxedDoubles() && (field.guarded_cid() == kDoubleCid)) ||
(SupportsUnboxedSimd128() && (field.guarded_cid() == kFloat32x4Cid)) ||
(SupportsUnboxedSimd128() && (field.guarded_cid() == kFloat64x2Cid)) ||
@@ -225,7 +225,8 @@
return IsUnboxedField(field);
}
// Unboxed fields in JIT lightweight isolates mode are not supported yet.
- return !FLAG_enable_isolate_groups && field.is_unboxing_candidate() &&
+ return !IsolateGroup::AreIsolateGroupsEnabled() &&
+ field.is_unboxing_candidate() &&
(FlowGraphCompiler::IsUnboxedField(field) ||
(field.guarded_cid() == kIllegalCid));
}
diff --git a/runtime/vm/compiler/jit/compiler.cc b/runtime/vm/compiler/jit/compiler.cc
index 06056b5..e83ce88 100644
--- a/runtime/vm/compiler/jit/compiler.cc
+++ b/runtime/vm/compiler/jit/compiler.cc
@@ -212,7 +212,7 @@
ASSERT(thread->IsMutatorThread());
const Function& function = Function::CheckedHandle(zone, arguments.ArgAt(0));
- if (FLAG_enable_isolate_groups) {
+ if (IsolateGroup::AreIsolateGroupsEnabled()) {
// Another isolate's mutator thread may have created [function] and
// published it via an ICData, MegamorphicCache etc. Entering the lock below
// is an acquire operation that pairs with the release operation when the
@@ -225,7 +225,7 @@
// there's no existing code. In multi-isolate scenarios with shared JITed code
// we can end up in the lazy compile runtime entry here with code being
// installed.
- ASSERT(!function.HasCode() || FLAG_enable_isolate_groups);
+ ASSERT(!function.HasCode() || IsolateGroup::AreIsolateGroupsEnabled());
// Will throw if compilation failed (e.g. with compile-time error).
function.EnsureHasCode();
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 1cc6888..e5860d4b 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -1408,7 +1408,7 @@
*error = nullptr;
- if (!FLAG_enable_isolate_groups) {
+ if (!IsolateGroup::AreIsolateGroupsEnabled()) {
*error = Utils::StrDup(
"Lightweight isolates are only implemented in AOT "
"mode and need to be explicitly enabled by passing "
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index 087b781..2f15546 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -189,7 +189,12 @@
P(retain_function_objects, bool, true, \
"Serialize function objects for all code objects even if not otherwise " \
"needed in the precompiled runtime.") \
- P(enable_isolate_groups, bool, false, "Enable isolate group support.") \
+ P(enable_isolate_groups, bool, false, \
+ "Enable isolate group support in AOT.") \
+ P(experimental_enable_isolate_groups_jit, bool, false, \
+ "As an experimental feature enable isolate group support in JIT" \
+ "(goes into effect only when enable_isolate_groups is turned on as " \
+ "well).") \
P(show_invisible_frames, bool, false, \
"Show invisible frames in stack traces.") \
R(support_il_printer, false, bool, true, "Support the IL printer.") \
diff --git a/runtime/vm/flags.cc b/runtime/vm/flags.cc
index 8b5ba1b..3d78c39 100644
--- a/runtime/vm/flags.cc
+++ b/runtime/vm/flags.cc
@@ -5,6 +5,7 @@
#include "vm/flags.h"
#include "platform/assert.h"
+#include "vm/isolate.h"
#include "vm/json_stream.h"
#include "vm/os.h"
@@ -472,7 +473,7 @@
// graudally remove those restrictions.
#if !defined(DART_PRCOMPILED_RUNTIME)
- if (!FLAG_precompiled_mode && FLAG_enable_isolate_groups) {
+ if (!FLAG_precompiled_mode && IsolateGroup::AreIsolateGroupsEnabled()) {
// Our compiler should not make rely on a global field being initialized at
// compile-time, since that compiled code might be re-used in another
// isolate that has not yet initialized the global field.
diff --git a/runtime/vm/heap/heap_test.cc b/runtime/vm/heap/heap_test.cc
index fc85962..3c174a1 100644
--- a/runtime/vm/heap/heap_test.cc
+++ b/runtime/vm/heap/heap_test.cc
@@ -576,7 +576,7 @@
VM_UNIT_TEST_CASE(CleanupBequestNeverReceived) {
// This test uses features from isolate groups
- FLAG_enable_isolate_groups = true;
+ IsolateGroup::ForceEnableIsolateGroupsForTesting();
const char* TEST_MESSAGE = "hello, world";
Dart_Isolate parent = TestCase::CreateTestIsolate("parent");
@@ -611,7 +611,7 @@
VM_UNIT_TEST_CASE(ReceivesSendAndExitMessage) {
// This test uses features from isolate groups
- FLAG_enable_isolate_groups = true;
+ IsolateGroup::ForceEnableIsolateGroupsForTesting();
const char* TEST_MESSAGE = "hello, world";
Dart_Isolate parent = TestCase::CreateTestIsolate("parent");
diff --git a/runtime/vm/heap/verifier.cc b/runtime/vm/heap/verifier.cc
index 34a6593..b0e0d70 100644
--- a/runtime/vm/heap/verifier.cc
+++ b/runtime/vm/heap/verifier.cc
@@ -104,7 +104,7 @@
// other isolates. We should either scan live objects from the roots of each
// individual isolate, or wait until we are ready to share constants across
// isolates.
- if (!FLAG_enable_isolate_groups || FLAG_precompiled_mode) {
+ if (!IsolateGroup::AreIsolateGroupsEnabled() || FLAG_precompiled_mode) {
if ((obj->GetClassId() >= kInstanceCid) &&
(obj->GetClassId() != kTypeArgumentsCid)) {
if (obj->untag()->IsCanonical()) {
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index a837201..9a98248 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -1984,7 +1984,7 @@
ASSERT(!IsReloading());
// TODO(dartbug.com/36097): Support multiple isolates within an isolate group.
- RELEASE_ASSERT(!FLAG_enable_isolate_groups);
+ RELEASE_ASSERT(!IsolateGroup::AreIsolateGroupsEnabled());
RELEASE_ASSERT(isolates_.First() == isolates_.Last());
RELEASE_ASSERT(isolates_.First() == Isolate::Current());
@@ -2017,7 +2017,7 @@
ASSERT(!IsReloading());
// TODO(dartbug.com/36097): Support multiple isolates within an isolate group.
- RELEASE_ASSERT(!FLAG_enable_isolate_groups);
+ RELEASE_ASSERT(!IsolateGroup::AreIsolateGroupsEnabled());
RELEASE_ASSERT(isolates_.First() == isolates_.Last());
RELEASE_ASSERT(isolates_.First() == Isolate::Current());
@@ -2534,7 +2534,7 @@
Dart::thread_pool()->Run<ShutdownGroupTask>(isolate_group);
}
} else {
- if (FLAG_enable_isolate_groups) {
+ if (IsolateGroup::AreIsolateGroupsEnabled()) {
// TODO(dartbug.com/36097): An isolate just died. A significant amount of
// memory might have become unreachable. We should evaluate how to best
// inform the GC about this situation.
@@ -2696,7 +2696,7 @@
bool use_force_growth_in_otherwise) {
auto thread = Thread::Current();
- if (thread->IsMutatorThread() && !FLAG_enable_isolate_groups) {
+ if (thread->IsMutatorThread() && !IsolateGroup::AreIsolateGroupsEnabled()) {
single_current_mutator->Call();
return;
}
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 0b8dd2c..b1ef148 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -708,6 +708,20 @@
void RegisterStaticField(const Field& field, const Instance& initial_value);
+ static bool AreIsolateGroupsEnabled() {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ return FLAG_enable_isolate_groups;
+#else
+ return FLAG_enable_isolate_groups &&
+ FLAG_experimental_enable_isolate_groups_jit;
+#endif
+ }
+
+ static void ForceEnableIsolateGroupsForTesting() {
+ FLAG_enable_isolate_groups = true;
+ FLAG_experimental_enable_isolate_groups_jit = true;
+ }
+
private:
friend class Dart; // For `object_store_ = ` in Dart::Init
friend class Heap;
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index 433af1e..6e20c6e 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -565,7 +565,7 @@
// All isolates within an isolate group need to share one heap.
// TODO(dartbug.com/36097): Remove this assert once the shared heap CL has
// landed.
- RELEASE_ASSERT(!FLAG_enable_isolate_groups);
+ RELEASE_ASSERT(!IsolateGroup::AreIsolateGroupsEnabled());
Heap* heap = IG->heap();
num_old_libs_ =
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index c888a56..adce2b7 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -685,7 +685,7 @@
new_cache.WriteEntryToBuffer(zone, &buffer, colliding_index, " ");
OS::PrintErr("%s\n", buffer.buffer());
}
- if (!FLAG_enable_isolate_groups) {
+ if (!IsolateGroup::AreIsolateGroupsEnabled()) {
FATAL("Duplicate subtype test cache entry");
}
if (old_result.ptr() != result.ptr()) {
@@ -1048,7 +1048,7 @@
const Code& target_code = Code::Handle(zone, target_function.EnsureHasCode());
// Before patching verify that we are not repeatedly patching to the same
// target.
- ASSERT(FLAG_enable_isolate_groups ||
+ ASSERT(IsolateGroup::AreIsolateGroupsEnabled() ||
target_code.ptr() != CodePatcher::GetStaticCallTargetAt(
caller_frame->pc(), caller_code));
if (target_code.ptr() !=
diff --git a/runtime/vm/symbols.cc b/runtime/vm/symbols.cc
index 5da457a..23dd381 100644
--- a/runtime/vm/symbols.cc
+++ b/runtime/vm/symbols.cc
@@ -366,7 +366,7 @@
// TODO(https://dartbug.com/41943): Get rid of the symbol table accesses
// within safepoint operation scope.
RELEASE_ASSERT(group->safepoint_handler()->IsOwnedByTheThread(thread));
- RELEASE_ASSERT(FLAG_enable_isolate_groups || !USING_PRODUCT);
+ RELEASE_ASSERT(IsolateGroup::AreIsolateGroupsEnabled() || !USING_PRODUCT);
// Uncommon case: We are at a safepoint, all mutators are stopped and we
// have therefore exclusive access to the symbol table.
@@ -395,7 +395,7 @@
};
SafepointWriteRwLocker sl(thread, group->symbols_lock());
- if (FLAG_enable_isolate_groups || !USING_PRODUCT) {
+ if (IsolateGroup::AreIsolateGroupsEnabled() || !USING_PRODUCT) {
// NOTE: Strictly speaking we should use a safepoint operation scope
// here to ensure the lock-free usage inside safepoint operations (see
// above) is safe. Though this would really kill the performance.
@@ -440,7 +440,7 @@
// In DEBUG mode the snapshot writer also calls this method inside a
// safepoint.
#if !defined(DEBUG)
- RELEASE_ASSERT(FLAG_enable_isolate_groups || !USING_PRODUCT);
+ RELEASE_ASSERT(IsolateGroup::AreIsolateGroupsEnabled() || !USING_PRODUCT);
#endif
data = object_store->symbol_table();
CanonicalStringSet table(&key, &value, &data);
diff --git a/tests/ffi/snapshot_test.dart b/tests/ffi/snapshot_test.dart
index b27b88b..5bb0b10 100644
--- a/tests/ffi/snapshot_test.dart
+++ b/tests/ffi/snapshot_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Checks that the VM throws an appropriate exception when FFI objects are
diff --git a/tests/ffi/vmspecific_function_callbacks_test.dart b/tests/ffi/vmspecific_function_callbacks_test.dart
index 99a036b..510193c 100644
--- a/tests/ffi/vmspecific_function_callbacks_test.dart
+++ b/tests/ffi/vmspecific_function_callbacks_test.dart
@@ -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.
-// VMOptions=--enable-testing-pragmas --enable-isolate-groups
+// VMOptions=--enable-testing-pragmas --enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--enable-testing-pragmas --no-enable-isolate-groups
//
// Dart test program for testing dart:ffi function pointers with callbacks.
diff --git a/tests/ffi_2/snapshot_test.dart b/tests/ffi_2/snapshot_test.dart
index b27b88b..5bb0b10 100644
--- a/tests/ffi_2/snapshot_test.dart
+++ b/tests/ffi_2/snapshot_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Checks that the VM throws an appropriate exception when FFI objects are
diff --git a/tests/ffi_2/vmspecific_function_callbacks_test.dart b/tests/ffi_2/vmspecific_function_callbacks_test.dart
index 99a036b..510193c 100644
--- a/tests/ffi_2/vmspecific_function_callbacks_test.dart
+++ b/tests/ffi_2/vmspecific_function_callbacks_test.dart
@@ -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.
-// VMOptions=--enable-testing-pragmas --enable-isolate-groups
+// VMOptions=--enable-testing-pragmas --enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--enable-testing-pragmas --no-enable-isolate-groups
//
// Dart test program for testing dart:ffi function pointers with callbacks.
diff --git a/tests/language/regress/regress23244_test.dart b/tests/language/regress/regress23244_test.dart
index 6a25b57..c955874 100644
--- a/tests/language/regress/regress23244_test.dart
+++ b/tests/language/regress/regress23244_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Regression test case for http://dartbug.com/23244
diff --git a/tests/language/vm/optimized_guarded_field_isolates_test.dart b/tests/language/vm/optimized_guarded_field_isolates_test.dart
index 9278ea9..428fd8d 100644
--- a/tests/language/vm/optimized_guarded_field_isolates_test.dart
+++ b/tests/language/vm/optimized_guarded_field_isolates_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// VMOptions=--optimization_counter_threshold=100 --no-background_compilation
diff --git a/tests/language_2/regress/regress23244_test.dart b/tests/language_2/regress/regress23244_test.dart
index 6a25b57..c955874 100644
--- a/tests/language_2/regress/regress23244_test.dart
+++ b/tests/language_2/regress/regress23244_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Regression test case for http://dartbug.com/23244
diff --git a/tests/language_2/vm/optimized_guarded_field_isolates_test.dart b/tests/language_2/vm/optimized_guarded_field_isolates_test.dart
index 2f5ac9a..742a7eb 100644
--- a/tests/language_2/vm/optimized_guarded_field_isolates_test.dart
+++ b/tests/language_2/vm/optimized_guarded_field_isolates_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// VMOptions=--optimization_counter_threshold=100 --no-background_compilation
diff --git a/tests/lib/isolate/bool_from_environment_default_value_test.dart b/tests/lib/isolate/bool_from_environment_default_value_test.dart
index fb9d49b..65992ab 100644
--- a/tests/lib/isolate/bool_from_environment_default_value_test.dart
+++ b/tests/lib/isolate/bool_from_environment_default_value_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/capability_test.dart b/tests/lib/isolate/capability_test.dart
index fd6c4d3..4c09118 100644
--- a/tests/lib/isolate/capability_test.dart
+++ b/tests/lib/isolate/capability_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/compile_time_error_test.dart b/tests/lib/isolate/compile_time_error_test.dart
index 21197fa..866cb3b 100644
--- a/tests/lib/isolate/compile_time_error_test.dart
+++ b/tests/lib/isolate/compile_time_error_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that errors thrown from isolates are
diff --git a/tests/lib/isolate/count_test.dart b/tests/lib/isolate/count_test.dart
index 6a7de3b..2315e12 100644
--- a/tests/lib/isolate/count_test.dart
+++ b/tests/lib/isolate/count_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library CountTest;
diff --git a/tests/lib/isolate/cross_isolate_message_test.dart b/tests/lib/isolate/cross_isolate_message_test.dart
index ede3792..3b406cc 100644
--- a/tests/lib/isolate/cross_isolate_message_test.dart
+++ b/tests/lib/isolate/cross_isolate_message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that isolates can communicate to isolates
diff --git a/tests/lib/isolate/deferred_in_isolate2_test.dart b/tests/lib/isolate/deferred_in_isolate2_test.dart
index 52e5428..9eddc1c 100644
--- a/tests/lib/isolate/deferred_in_isolate2_test.dart
+++ b/tests/lib/isolate/deferred_in_isolate2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library deferred_in_isolate2_test;
diff --git a/tests/lib/isolate/deferred_in_isolate_test.dart b/tests/lib/isolate/deferred_in_isolate_test.dart
index d44f075..167815b 100644
--- a/tests/lib/isolate/deferred_in_isolate_test.dart
+++ b/tests/lib/isolate/deferred_in_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test that deferred libraries are supported from isolates other than the root
diff --git a/tests/lib/isolate/enum_const_test.dart b/tests/lib/isolate/enum_const_test.dart
index 0a57f13..3766cb5 100644
--- a/tests/lib/isolate/enum_const_test.dart
+++ b/tests/lib/isolate/enum_const_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/error_at_spawn_test.dart b/tests/lib/isolate/error_at_spawn_test.dart
index c22f41e..dcb033b 100644
--- a/tests/lib/isolate/error_at_spawn_test.dart
+++ b/tests/lib/isolate/error_at_spawn_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library error_at_spawn;
diff --git a/tests/lib/isolate/error_at_spawnuri_test.dart b/tests/lib/isolate/error_at_spawnuri_test.dart
index 6d0e073..2c33f11 100644
--- a/tests/lib/isolate/error_at_spawnuri_test.dart
+++ b/tests/lib/isolate/error_at_spawnuri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library error_at_spawnuri;
diff --git a/tests/lib/isolate/error_exit_at_spawn_test.dart b/tests/lib/isolate/error_exit_at_spawn_test.dart
index 9543025..7033c1f 100644
--- a/tests/lib/isolate/error_exit_at_spawn_test.dart
+++ b/tests/lib/isolate/error_exit_at_spawn_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library error_exit_at_spawn;
diff --git a/tests/lib/isolate/error_exit_at_spawnuri_test.dart b/tests/lib/isolate/error_exit_at_spawnuri_test.dart
index cf32b98..7f4f4d6 100644
--- a/tests/lib/isolate/error_exit_at_spawnuri_test.dart
+++ b/tests/lib/isolate/error_exit_at_spawnuri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library error_exit_at_spawnuri;
diff --git a/tests/lib/isolate/exit_at_spawn_test.dart b/tests/lib/isolate/exit_at_spawn_test.dart
index 4a2574e..3feb840 100644
--- a/tests/lib/isolate/exit_at_spawn_test.dart
+++ b/tests/lib/isolate/exit_at_spawn_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library exit_at_spawn;
diff --git a/tests/lib/isolate/exit_at_spawnuri_test.dart b/tests/lib/isolate/exit_at_spawnuri_test.dart
index 5bb9ed8..e77fe04 100644
--- a/tests/lib/isolate/exit_at_spawnuri_test.dart
+++ b/tests/lib/isolate/exit_at_spawnuri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library exit_at_spawn;
diff --git a/tests/lib/isolate/function_send1_test.dart b/tests/lib/isolate/function_send1_test.dart
index 1955c96..4390735 100644
--- a/tests/lib/isolate/function_send1_test.dart
+++ b/tests/lib/isolate/function_send1_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/function_send_test.dart b/tests/lib/isolate/function_send_test.dart
index 38b4698..ea75c63 100644
--- a/tests/lib/isolate/function_send_test.dart
+++ b/tests/lib/isolate/function_send_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/handle_error2_test.dart b/tests/lib/isolate/handle_error2_test.dart
index 8e36364..e3e3b66 100644
--- a/tests/lib/isolate/handle_error2_test.dart
+++ b/tests/lib/isolate/handle_error2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library handle_error_test;
diff --git a/tests/lib/isolate/handle_error3_test.dart b/tests/lib/isolate/handle_error3_test.dart
index 170f130..165e210 100644
--- a/tests/lib/isolate/handle_error3_test.dart
+++ b/tests/lib/isolate/handle_error3_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library handle_error_test;
diff --git a/tests/lib/isolate/handle_error_test.dart b/tests/lib/isolate/handle_error_test.dart
index a453072..fad1719 100644
--- a/tests/lib/isolate/handle_error_test.dart
+++ b/tests/lib/isolate/handle_error_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library handle_error_test;
diff --git a/tests/lib/isolate/illegal_msg_function_test.dart b/tests/lib/isolate/illegal_msg_function_test.dart
index 5b5aa45..5fcaf8a 100644
--- a/tests/lib/isolate/illegal_msg_function_test.dart
+++ b/tests/lib/isolate/illegal_msg_function_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library illegal_msg_function_test;
diff --git a/tests/lib/isolate/illegal_msg_mirror_test.dart b/tests/lib/isolate/illegal_msg_mirror_test.dart
index a15572d..7fd70ab 100644
--- a/tests/lib/isolate/illegal_msg_mirror_test.dart
+++ b/tests/lib/isolate/illegal_msg_mirror_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library illegal_msg_mirror_test;
diff --git a/tests/lib/isolate/int32_length_overflow_test.dart b/tests/lib/isolate/int32_length_overflow_test.dart
index 85e2bd7..b7f51cf 100644
--- a/tests/lib/isolate/int32_length_overflow_test.dart
+++ b/tests/lib/isolate/int32_length_overflow_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib/isolate/int_from_environment_default_value_test.dart b/tests/lib/isolate/int_from_environment_default_value_test.dart
index af7ccac..7bf0761 100644
--- a/tests/lib/isolate/int_from_environment_default_value_test.dart
+++ b/tests/lib/isolate/int_from_environment_default_value_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/isolate_complex_messages_test.dart b/tests/lib/isolate/isolate_complex_messages_test.dart
index 64992dc..606b3af 100644
--- a/tests/lib/isolate/isolate_complex_messages_test.dart
+++ b/tests/lib/isolate/isolate_complex_messages_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing isolate communication with
diff --git a/tests/lib/isolate/isolate_current_test.dart b/tests/lib/isolate/isolate_current_test.dart
index 908c42d..b4b0baea 100644
--- a/tests/lib/isolate/isolate_current_test.dart
+++ b/tests/lib/isolate/isolate_current_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library isolate_current_test;
diff --git a/tests/lib/isolate/isolate_import_test.dart b/tests/lib/isolate/isolate_import_test.dart
index 211cced..0438a4e 100644
--- a/tests/lib/isolate/isolate_import_test.dart
+++ b/tests/lib/isolate/isolate_import_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library IsolateImportNegativeTest;
diff --git a/tests/lib/isolate/issue_21398_parent_isolate1_test.dart b/tests/lib/isolate/issue_21398_parent_isolate1_test.dart
index 6a0b458..78f19d5 100644
--- a/tests/lib/isolate/issue_21398_parent_isolate1_test.dart
+++ b/tests/lib/isolate/issue_21398_parent_isolate1_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/tests/lib/isolate/issue_21398_parent_isolate2_test.dart b/tests/lib/isolate/issue_21398_parent_isolate2_test.dart
index feee51b..d092152 100644
--- a/tests/lib/isolate/issue_21398_parent_isolate2_test.dart
+++ b/tests/lib/isolate/issue_21398_parent_isolate2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/tests/lib/isolate/issue_21398_parent_isolate_test.dart b/tests/lib/isolate/issue_21398_parent_isolate_test.dart
index 5264827..2dcb5c1 100644
--- a/tests/lib/isolate/issue_21398_parent_isolate_test.dart
+++ b/tests/lib/isolate/issue_21398_parent_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/tests/lib/isolate/issue_22778_test.dart b/tests/lib/isolate/issue_22778_test.dart
index 28107cc..67d90a2 100644
--- a/tests/lib/isolate/issue_22778_test.dart
+++ b/tests/lib/isolate/issue_22778_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/issue_24243_parent_isolate_test.dart b/tests/lib/isolate/issue_24243_parent_isolate_test.dart
index c38e5e4..92a9549 100644
--- a/tests/lib/isolate/issue_24243_parent_isolate_test.dart
+++ b/tests/lib/isolate/issue_24243_parent_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:collection';
diff --git a/tests/lib/isolate/issue_35626_test.dart b/tests/lib/isolate/issue_35626_test.dart
index 1563a8392..26ee9c6 100644
--- a/tests/lib/isolate/issue_35626_test.dart
+++ b/tests/lib/isolate/issue_35626_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Tests that sets of enums can be set through ports.
diff --git a/tests/lib/isolate/issue_6610_test.dart b/tests/lib/isolate/issue_6610_test.dart
index 962955e..9a37e51 100644
--- a/tests/lib/isolate/issue_6610_test.dart
+++ b/tests/lib/isolate/issue_6610_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Testing that Isolate.spawn copies the source code of the parent isolate,
diff --git a/tests/lib/isolate/kill2_test.dart b/tests/lib/isolate/kill2_test.dart
index 9391fc8..0c946f0 100644
--- a/tests/lib/isolate/kill2_test.dart
+++ b/tests/lib/isolate/kill2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/kill_self_synchronously_test.dart b/tests/lib/isolate/kill_self_synchronously_test.dart
index 19f3a2e..1cfc4ff 100644
--- a/tests/lib/isolate/kill_self_synchronously_test.dart
+++ b/tests/lib/isolate/kill_self_synchronously_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/kill_self_test.dart b/tests/lib/isolate/kill_self_test.dart
index 157b30f..ace983f 100644
--- a/tests/lib/isolate/kill_self_test.dart
+++ b/tests/lib/isolate/kill_self_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/kill_test.dart b/tests/lib/isolate/kill_test.dart
index 07e0dfe8..7c97bfd 100644
--- a/tests/lib/isolate/kill_test.dart
+++ b/tests/lib/isolate/kill_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/large_byte_data_leak_test.dart b/tests/lib/isolate/large_byte_data_leak_test.dart
index 1313519..fe2fda1 100644
--- a/tests/lib/isolate/large_byte_data_leak_test.dart
+++ b/tests/lib/isolate/large_byte_data_leak_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib/isolate/large_byte_data_test.dart b/tests/lib/isolate/large_byte_data_test.dart
index 8a78238..3861e5c 100644
--- a/tests/lib/isolate/large_byte_data_test.dart
+++ b/tests/lib/isolate/large_byte_data_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib/isolate/mandel_isolate_test.dart b/tests/lib/isolate/mandel_isolate_test.dart
index 50d564a..22f7760 100644
--- a/tests/lib/isolate/mandel_isolate_test.dart
+++ b/tests/lib/isolate/mandel_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library MandelIsolateTest;
diff --git a/tests/lib/isolate/message2_test.dart b/tests/lib/isolate/message2_test.dart
index 7c2e691..422b499 100644
--- a/tests/lib/isolate/message2_test.dart
+++ b/tests/lib/isolate/message2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing serialization of messages.
diff --git a/tests/lib/isolate/message3_test.dart b/tests/lib/isolate/message3_test.dart
index f1f11bf..bb8a007fa 100644
--- a/tests/lib/isolate/message3_test.dart
+++ b/tests/lib/isolate/message3_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing serialization of messages.
diff --git a/tests/lib/isolate/message4_test.dart b/tests/lib/isolate/message4_test.dart
index 4644ddb..3cc4641 100644
--- a/tests/lib/isolate/message4_test.dart
+++ b/tests/lib/isolate/message4_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing serialization of messages with static
diff --git a/tests/lib/isolate/message_const_type_arguments_1_test.dart b/tests/lib/isolate/message_const_type_arguments_1_test.dart
index e5133aa..480cda5 100644
--- a/tests/lib/isolate/message_const_type_arguments_1_test.dart
+++ b/tests/lib/isolate/message_const_type_arguments_1_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// https://github.com/dart-lang/sdk/issues/35778
diff --git a/tests/lib/isolate/message_const_type_arguments_2_test.dart b/tests/lib/isolate/message_const_type_arguments_2_test.dart
index 002aa6e..8398d2b 100644
--- a/tests/lib/isolate/message_const_type_arguments_2_test.dart
+++ b/tests/lib/isolate/message_const_type_arguments_2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// https://github.com/dart-lang/sdk/issues/35778
diff --git a/tests/lib/isolate/message_enum_test.dart b/tests/lib/isolate/message_enum_test.dart
index 801afd4d..55eb38b 100644
--- a/tests/lib/isolate/message_enum_test.dart
+++ b/tests/lib/isolate/message_enum_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'package:expect/expect.dart';
diff --git a/tests/lib/isolate/message_test.dart b/tests/lib/isolate/message_test.dart
index 8a7ec69..5e6cd6b 100644
--- a/tests/lib/isolate/message_test.dart
+++ b/tests/lib/isolate/message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing serialization of messages.
diff --git a/tests/lib/isolate/mint_maker_test.dart b/tests/lib/isolate/mint_maker_test.dart
index c4b25ec..f82315e 100644
--- a/tests/lib/isolate/mint_maker_test.dart
+++ b/tests/lib/isolate/mint_maker_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library MintMakerTest;
diff --git a/tests/lib/isolate/native_wrapper_message_test.dart b/tests/lib/isolate/native_wrapper_message_test.dart
index 366a84b..27c294c 100644
--- a/tests/lib/isolate/native_wrapper_message_test.dart
+++ b/tests/lib/isolate/native_wrapper_message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/tests/lib/isolate/nested_spawn2_test.dart b/tests/lib/isolate/nested_spawn2_test.dart
index d335909..f8cf00a 100644
--- a/tests/lib/isolate/nested_spawn2_test.dart
+++ b/tests/lib/isolate/nested_spawn2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that isolates can spawn other isolates and
diff --git a/tests/lib/isolate/nested_spawn_test.dart b/tests/lib/isolate/nested_spawn_test.dart
index 0bc8c77..952c192 100644
--- a/tests/lib/isolate/nested_spawn_test.dart
+++ b/tests/lib/isolate/nested_spawn_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that isolates can spawn other isolates.
diff --git a/tests/lib/isolate/non_fatal_exception_in_timer_callback_test.dart b/tests/lib/isolate/non_fatal_exception_in_timer_callback_test.dart
index b361171..0d2e8cc 100644
--- a/tests/lib/isolate/non_fatal_exception_in_timer_callback_test.dart
+++ b/tests/lib/isolate/non_fatal_exception_in_timer_callback_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/tests/lib/isolate/object_leak_test.dart b/tests/lib/isolate/object_leak_test.dart
index b8b94b4..d563786 100644
--- a/tests/lib/isolate/object_leak_test.dart
+++ b/tests/lib/isolate/object_leak_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Regression test for http://dartbug.com/18942
diff --git a/tests/lib/isolate/ondone_test.dart b/tests/lib/isolate/ondone_test.dart
index f378855..0f11aaf 100644
--- a/tests/lib/isolate/ondone_test.dart
+++ b/tests/lib/isolate/ondone_test.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source is governed by a
// BSD-style license that can be found in the LICENSE file.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/package_config_test.dart b/tests/lib/isolate/package_config_test.dart
index a2cfece..c4119b2 100644
--- a/tests/lib/isolate/package_config_test.dart
+++ b/tests/lib/isolate/package_config_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// VMOptions=--trace_shutdown
import 'dart:io';
diff --git a/tests/lib/isolate/package_resolve_test.dart b/tests/lib/isolate/package_resolve_test.dart
index 50686a3..99cb6f1 100644
--- a/tests/lib/isolate/package_resolve_test.dart
+++ b/tests/lib/isolate/package_resolve_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:io';
diff --git a/tests/lib/isolate/package_root_test.dart b/tests/lib/isolate/package_root_test.dart
index 390df69..4b3d46b 100644
--- a/tests/lib/isolate/package_root_test.dart
+++ b/tests/lib/isolate/package_root_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:io';
diff --git a/tests/lib/isolate/pause_test.dart b/tests/lib/isolate/pause_test.dart
index 1e97f00a..31e091d 100644
--- a/tests/lib/isolate/pause_test.dart
+++ b/tests/lib/isolate/pause_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/ping_pause_test.dart b/tests/lib/isolate/ping_pause_test.dart
index 48ad135..d83d55f 100644
--- a/tests/lib/isolate/ping_pause_test.dart
+++ b/tests/lib/isolate/ping_pause_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/ping_test.dart b/tests/lib/isolate/ping_test.dart
index 4371a4c0..e9a0d05 100644
--- a/tests/lib/isolate/ping_test.dart
+++ b/tests/lib/isolate/ping_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/port_test.dart b/tests/lib/isolate/port_test.dart
index 937d75e..b66fc4f 100644
--- a/tests/lib/isolate/port_test.dart
+++ b/tests/lib/isolate/port_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test properties of ports.
diff --git a/tests/lib/isolate/raw_port_test.dart b/tests/lib/isolate/raw_port_test.dart
index 6f24212..d0b8695 100644
--- a/tests/lib/isolate/raw_port_test.dart
+++ b/tests/lib/isolate/raw_port_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test RawReceivePort.
diff --git a/tests/lib/isolate/regress_34752_test.dart b/tests/lib/isolate/regress_34752_test.dart
index dafff29..fc17139 100644
--- a/tests/lib/isolate/regress_34752_test.dart
+++ b/tests/lib/isolate/regress_34752_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Verifies that large BigInt can be passed through a message port and
diff --git a/tests/lib/isolate/regress_flutter_22796_test.dart b/tests/lib/isolate/regress_flutter_22796_test.dart
index 1cab5f1..f97ca05 100644
--- a/tests/lib/isolate/regress_flutter_22796_test.dart
+++ b/tests/lib/isolate/regress_flutter_22796_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Verifies that large typed data can be passed in a field through message port.
diff --git a/tests/lib/isolate/request_reply_test.dart b/tests/lib/isolate/request_reply_test.dart
index 54d4d7c..3dd9274 100644
--- a/tests/lib/isolate/request_reply_test.dart
+++ b/tests/lib/isolate/request_reply_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library RequestReplyTest;
diff --git a/tests/lib/isolate/resolve_package_uri_test.dart b/tests/lib/isolate/resolve_package_uri_test.dart
index 9ea1d03..b926ccd 100644
--- a/tests/lib/isolate/resolve_package_uri_test.dart
+++ b/tests/lib/isolate/resolve_package_uri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Regression test for faulty encoding of `Isolate.resolvePackageUri` by
diff --git a/tests/lib/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart b/tests/lib/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart
index 50686a3..99cb6f1 100644
--- a/tests/lib/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart
+++ b/tests/lib/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:io';
diff --git a/tests/lib/isolate/send_private_test.dart b/tests/lib/isolate/send_private_test.dart
index 8ed717f..46114c8 100644
--- a/tests/lib/isolate/send_private_test.dart
+++ b/tests/lib/isolate/send_private_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/simple_message_test.dart b/tests/lib/isolate/simple_message_test.dart
index f0310af..677998c 100644
--- a/tests/lib/isolate/simple_message_test.dart
+++ b/tests/lib/isolate/simple_message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that isolates are spawned.
diff --git a/tests/lib/isolate/spawn_function_custom_class_test.dart b/tests/lib/isolate/spawn_function_custom_class_test.dart
index 0046cef..5abcae6 100644
--- a/tests/lib/isolate/spawn_function_custom_class_test.dart
+++ b/tests/lib/isolate/spawn_function_custom_class_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Create a user-defined class in a new isolate.
diff --git a/tests/lib/isolate/spawn_function_test.dart b/tests/lib/isolate/spawn_function_test.dart
index bd8d1c1..22c5c8a 100644
--- a/tests/lib/isolate/spawn_function_test.dart
+++ b/tests/lib/isolate/spawn_function_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Example of spawning an isolate from a function.
diff --git a/tests/lib/isolate/spawn_generic_test.dart b/tests/lib/isolate/spawn_generic_test.dart
index 109f2a8..572f985 100644
--- a/tests/lib/isolate/spawn_generic_test.dart
+++ b/tests/lib/isolate/spawn_generic_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Check that Isolate.spawn is generic.
diff --git a/tests/lib/isolate/spawn_uri_exported_main_test.dart b/tests/lib/isolate/spawn_uri_exported_main_test.dart
index 837486e..20959cd 100644
--- a/tests/lib/isolate/spawn_uri_exported_main_test.dart
+++ b/tests/lib/isolate/spawn_uri_exported_main_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib/isolate/spawn_uri_fail_test.dart b/tests/lib/isolate/spawn_uri_fail_test.dart
index 6c9dc98..84d54b0 100644
--- a/tests/lib/isolate/spawn_uri_fail_test.dart
+++ b/tests/lib/isolate/spawn_uri_fail_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:io";
diff --git a/tests/lib/isolate/spawn_uri_missing_from_isolate_test.dart b/tests/lib/isolate/spawn_uri_missing_from_isolate_test.dart
index 02521b6..915ffa4 100644
--- a/tests/lib/isolate/spawn_uri_missing_from_isolate_test.dart
+++ b/tests/lib/isolate/spawn_uri_missing_from_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
/// Tests that Isolate.spawnUri completes with an error when the given URI
diff --git a/tests/lib/isolate/spawn_uri_missing_test.dart b/tests/lib/isolate/spawn_uri_missing_test.dart
index 19344ba..86eaf9d 100644
--- a/tests/lib/isolate/spawn_uri_missing_test.dart
+++ b/tests/lib/isolate/spawn_uri_missing_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
/// Tests that Isolate.spanUri completes with an error when the given URI
diff --git a/tests/lib/isolate/spawn_uri_multi_test.dart b/tests/lib/isolate/spawn_uri_multi_test.dart
index d5fdc46..38a22ee 100644
--- a/tests/lib/isolate/spawn_uri_multi_test.dart
+++ b/tests/lib/isolate/spawn_uri_multi_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Negative test to make sure that we are reaching all assertions.
diff --git a/tests/lib/isolate/spawn_uri_nested_vm_test.dart b/tests/lib/isolate/spawn_uri_nested_vm_test.dart
index 087b5fc..5da7fa9 100644
--- a/tests/lib/isolate/spawn_uri_nested_vm_test.dart
+++ b/tests/lib/isolate/spawn_uri_nested_vm_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Example of nested spawning of isolates from a URI
diff --git a/tests/lib/isolate/spawn_uri_test.dart b/tests/lib/isolate/spawn_uri_test.dart
index 28d7bce..543b627 100644
--- a/tests/lib/isolate/spawn_uri_test.dart
+++ b/tests/lib/isolate/spawn_uri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Example of spawning an isolate from a URI
diff --git a/tests/lib/isolate/spawn_uri_vm_test.dart b/tests/lib/isolate/spawn_uri_vm_test.dart
index 3832b42..48d30a2 100644
--- a/tests/lib/isolate/spawn_uri_vm_test.dart
+++ b/tests/lib/isolate/spawn_uri_vm_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Example of spawning an isolate from a URI
diff --git a/tests/lib/isolate/start_paused_test.dart b/tests/lib/isolate/start_paused_test.dart
index c9b2b57..5ca7fef 100644
--- a/tests/lib/isolate/start_paused_test.dart
+++ b/tests/lib/isolate/start_paused_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library start_paused_test;
diff --git a/tests/lib/isolate/static_function_test.dart b/tests/lib/isolate/static_function_test.dart
index e1ece06..92151ac 100644
--- a/tests/lib/isolate/static_function_test.dart
+++ b/tests/lib/isolate/static_function_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test starting isolate with static functions (and toplevel ones, for sanity).
diff --git a/tests/lib/isolate/string_from_environment_default_value_test.dart b/tests/lib/isolate/string_from_environment_default_value_test.dart
index 78b2feb..6c2adfb 100644
--- a/tests/lib/isolate/string_from_environment_default_value_test.dart
+++ b/tests/lib/isolate/string_from_environment_default_value_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib/isolate/timer_isolate_test.dart b/tests/lib/isolate/timer_isolate_test.dart
index 58e93c5..b2c98d9 100644
--- a/tests/lib/isolate/timer_isolate_test.dart
+++ b/tests/lib/isolate/timer_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library multiple_timer_test;
diff --git a/tests/lib/isolate/timer_multiple_isolates_test.dart b/tests/lib/isolate/timer_multiple_isolates_test.dart
index 3f7d8f3..a2f5611 100644
--- a/tests/lib/isolate/timer_multiple_isolates_test.dart
+++ b/tests/lib/isolate/timer_multiple_isolates_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library timer_multiple_isolates_test;
diff --git a/tests/lib/isolate/transferable_failed_to_send_test.dart b/tests/lib/isolate/transferable_failed_to_send_test.dart
index ac6f80e..a8d3bcd 100644
--- a/tests/lib/isolate/transferable_failed_to_send_test.dart
+++ b/tests/lib/isolate/transferable_failed_to_send_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:io" show ServerSocket;
diff --git a/tests/lib/isolate/transferable_test.dart b/tests/lib/isolate/transferable_test.dart
index 8680828..f8888e7 100644
--- a/tests/lib/isolate/transferable_test.dart
+++ b/tests/lib/isolate/transferable_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib/isolate/typed_message_test.dart b/tests/lib/isolate/typed_message_test.dart
index 38e24d0..955204d 100644
--- a/tests/lib/isolate/typed_message_test.dart
+++ b/tests/lib/isolate/typed_message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing isolate communication with
// typed objects.
diff --git a/tests/lib/isolate/unresolved_ports_test.dart b/tests/lib/isolate/unresolved_ports_test.dart
index 7707fab..fa41bb4 100644
--- a/tests/lib/isolate/unresolved_ports_test.dart
+++ b/tests/lib/isolate/unresolved_ports_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// spawns multiple isolates and sends unresolved ports between them.
diff --git a/tests/lib/isolate/vm_rehash_test.dart b/tests/lib/isolate/vm_rehash_test.dart
index f5a0a73..6c1065c 100644
--- a/tests/lib/isolate/vm_rehash_test.dart
+++ b/tests/lib/isolate/vm_rehash_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/tests/lib_2/isolate/bool_from_environment_default_value_test.dart b/tests/lib_2/isolate/bool_from_environment_default_value_test.dart
index 42582fa..a1a2d9b 100644
--- a/tests/lib_2/isolate/bool_from_environment_default_value_test.dart
+++ b/tests/lib_2/isolate/bool_from_environment_default_value_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/capability_test.dart b/tests/lib_2/isolate/capability_test.dart
index fd6c4d3..4c09118 100644
--- a/tests/lib_2/isolate/capability_test.dart
+++ b/tests/lib_2/isolate/capability_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/compile_time_error_test.dart b/tests/lib_2/isolate/compile_time_error_test.dart
index 578bb8c..74744c3 100644
--- a/tests/lib_2/isolate/compile_time_error_test.dart
+++ b/tests/lib_2/isolate/compile_time_error_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that errors thrown from isolates are
diff --git a/tests/lib_2/isolate/count_test.dart b/tests/lib_2/isolate/count_test.dart
index 0095e60..276862c 100644
--- a/tests/lib_2/isolate/count_test.dart
+++ b/tests/lib_2/isolate/count_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library CountTest;
diff --git a/tests/lib_2/isolate/cross_isolate_message_test.dart b/tests/lib_2/isolate/cross_isolate_message_test.dart
index ede3792..3b406cc 100644
--- a/tests/lib_2/isolate/cross_isolate_message_test.dart
+++ b/tests/lib_2/isolate/cross_isolate_message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that isolates can communicate to isolates
diff --git a/tests/lib_2/isolate/deferred_in_isolate2_test.dart b/tests/lib_2/isolate/deferred_in_isolate2_test.dart
index 52e5428..9eddc1c 100644
--- a/tests/lib_2/isolate/deferred_in_isolate2_test.dart
+++ b/tests/lib_2/isolate/deferred_in_isolate2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library deferred_in_isolate2_test;
diff --git a/tests/lib_2/isolate/deferred_in_isolate_test.dart b/tests/lib_2/isolate/deferred_in_isolate_test.dart
index d44f075..167815b 100644
--- a/tests/lib_2/isolate/deferred_in_isolate_test.dart
+++ b/tests/lib_2/isolate/deferred_in_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test that deferred libraries are supported from isolates other than the root
diff --git a/tests/lib_2/isolate/enum_const_test.dart b/tests/lib_2/isolate/enum_const_test.dart
index 0a57f13..3766cb5 100644
--- a/tests/lib_2/isolate/enum_const_test.dart
+++ b/tests/lib_2/isolate/enum_const_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/error_at_spawn_test.dart b/tests/lib_2/isolate/error_at_spawn_test.dart
index c22f41e..dcb033b 100644
--- a/tests/lib_2/isolate/error_at_spawn_test.dart
+++ b/tests/lib_2/isolate/error_at_spawn_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library error_at_spawn;
diff --git a/tests/lib_2/isolate/error_at_spawnuri_test.dart b/tests/lib_2/isolate/error_at_spawnuri_test.dart
index 6d0e073..2c33f11 100644
--- a/tests/lib_2/isolate/error_at_spawnuri_test.dart
+++ b/tests/lib_2/isolate/error_at_spawnuri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library error_at_spawnuri;
diff --git a/tests/lib_2/isolate/error_exit_at_spawn_test.dart b/tests/lib_2/isolate/error_exit_at_spawn_test.dart
index 9543025..7033c1f 100644
--- a/tests/lib_2/isolate/error_exit_at_spawn_test.dart
+++ b/tests/lib_2/isolate/error_exit_at_spawn_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library error_exit_at_spawn;
diff --git a/tests/lib_2/isolate/error_exit_at_spawnuri_test.dart b/tests/lib_2/isolate/error_exit_at_spawnuri_test.dart
index cf32b98..7f4f4d6 100644
--- a/tests/lib_2/isolate/error_exit_at_spawnuri_test.dart
+++ b/tests/lib_2/isolate/error_exit_at_spawnuri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library error_exit_at_spawnuri;
diff --git a/tests/lib_2/isolate/exit_at_spawn_test.dart b/tests/lib_2/isolate/exit_at_spawn_test.dart
index 4a2574e..3feb840 100644
--- a/tests/lib_2/isolate/exit_at_spawn_test.dart
+++ b/tests/lib_2/isolate/exit_at_spawn_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library exit_at_spawn;
diff --git a/tests/lib_2/isolate/exit_at_spawnuri_test.dart b/tests/lib_2/isolate/exit_at_spawnuri_test.dart
index 5bb9ed8..e77fe04 100644
--- a/tests/lib_2/isolate/exit_at_spawnuri_test.dart
+++ b/tests/lib_2/isolate/exit_at_spawnuri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library exit_at_spawn;
diff --git a/tests/lib_2/isolate/function_send1_test.dart b/tests/lib_2/isolate/function_send1_test.dart
index 9b97739..95e6195 100644
--- a/tests/lib_2/isolate/function_send1_test.dart
+++ b/tests/lib_2/isolate/function_send1_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/function_send_test.dart b/tests/lib_2/isolate/function_send_test.dart
index 001d857..93c5f83 100644
--- a/tests/lib_2/isolate/function_send_test.dart
+++ b/tests/lib_2/isolate/function_send_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/handle_error2_test.dart b/tests/lib_2/isolate/handle_error2_test.dart
index 435a3ae..ec7f11c 100644
--- a/tests/lib_2/isolate/handle_error2_test.dart
+++ b/tests/lib_2/isolate/handle_error2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library handle_error_test;
diff --git a/tests/lib_2/isolate/handle_error3_test.dart b/tests/lib_2/isolate/handle_error3_test.dart
index 15b40ce..8c24b82 100644
--- a/tests/lib_2/isolate/handle_error3_test.dart
+++ b/tests/lib_2/isolate/handle_error3_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library handle_error_test;
diff --git a/tests/lib_2/isolate/handle_error_test.dart b/tests/lib_2/isolate/handle_error_test.dart
index 365f122..c37904a 100644
--- a/tests/lib_2/isolate/handle_error_test.dart
+++ b/tests/lib_2/isolate/handle_error_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library handle_error_test;
diff --git a/tests/lib_2/isolate/illegal_msg_function_test.dart b/tests/lib_2/isolate/illegal_msg_function_test.dart
index 5b5aa45..5fcaf8a 100644
--- a/tests/lib_2/isolate/illegal_msg_function_test.dart
+++ b/tests/lib_2/isolate/illegal_msg_function_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library illegal_msg_function_test;
diff --git a/tests/lib_2/isolate/illegal_msg_mirror_test.dart b/tests/lib_2/isolate/illegal_msg_mirror_test.dart
index a15572d..7fd70ab 100644
--- a/tests/lib_2/isolate/illegal_msg_mirror_test.dart
+++ b/tests/lib_2/isolate/illegal_msg_mirror_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library illegal_msg_mirror_test;
diff --git a/tests/lib_2/isolate/int32_length_overflow_test.dart b/tests/lib_2/isolate/int32_length_overflow_test.dart
index 85e2bd7..b7f51cf 100644
--- a/tests/lib_2/isolate/int32_length_overflow_test.dart
+++ b/tests/lib_2/isolate/int32_length_overflow_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib_2/isolate/int_from_environment_default_value_test.dart b/tests/lib_2/isolate/int_from_environment_default_value_test.dart
index af7ccac..7bf0761 100644
--- a/tests/lib_2/isolate/int_from_environment_default_value_test.dart
+++ b/tests/lib_2/isolate/int_from_environment_default_value_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/isolate_complex_messages_test.dart b/tests/lib_2/isolate/isolate_complex_messages_test.dart
index 64992dc..606b3af 100644
--- a/tests/lib_2/isolate/isolate_complex_messages_test.dart
+++ b/tests/lib_2/isolate/isolate_complex_messages_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing isolate communication with
diff --git a/tests/lib_2/isolate/isolate_current_test.dart b/tests/lib_2/isolate/isolate_current_test.dart
index 908c42d..b4b0baea 100644
--- a/tests/lib_2/isolate/isolate_current_test.dart
+++ b/tests/lib_2/isolate/isolate_current_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library isolate_current_test;
diff --git a/tests/lib_2/isolate/isolate_import_test.dart b/tests/lib_2/isolate/isolate_import_test.dart
index 211cced..0438a4e 100644
--- a/tests/lib_2/isolate/isolate_import_test.dart
+++ b/tests/lib_2/isolate/isolate_import_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library IsolateImportNegativeTest;
diff --git a/tests/lib_2/isolate/isolate_stress_test.dart b/tests/lib_2/isolate/isolate_stress_test.dart
index 449d259..ddd68f2 100644
--- a/tests/lib_2/isolate/isolate_stress_test.dart
+++ b/tests/lib_2/isolate/isolate_stress_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// This test creates a lot of isolates. This is meant to exhaust
diff --git a/tests/lib_2/isolate/issue_21398_parent_isolate1_test.dart b/tests/lib_2/isolate/issue_21398_parent_isolate1_test.dart
index dcb5019..bf21844 100644
--- a/tests/lib_2/isolate/issue_21398_parent_isolate1_test.dart
+++ b/tests/lib_2/isolate/issue_21398_parent_isolate1_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/tests/lib_2/isolate/issue_21398_parent_isolate2_test.dart b/tests/lib_2/isolate/issue_21398_parent_isolate2_test.dart
index feee51b..d092152 100644
--- a/tests/lib_2/isolate/issue_21398_parent_isolate2_test.dart
+++ b/tests/lib_2/isolate/issue_21398_parent_isolate2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/tests/lib_2/isolate/issue_21398_parent_isolate_test.dart b/tests/lib_2/isolate/issue_21398_parent_isolate_test.dart
index 851bbf3..601c9de 100644
--- a/tests/lib_2/isolate/issue_21398_parent_isolate_test.dart
+++ b/tests/lib_2/isolate/issue_21398_parent_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/tests/lib_2/isolate/issue_22778_test.dart b/tests/lib_2/isolate/issue_22778_test.dart
index 28107cc..67d90a2 100644
--- a/tests/lib_2/isolate/issue_22778_test.dart
+++ b/tests/lib_2/isolate/issue_22778_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/issue_24243_parent_isolate_test.dart b/tests/lib_2/isolate/issue_24243_parent_isolate_test.dart
index d92815f..97e1929 100644
--- a/tests/lib_2/isolate/issue_24243_parent_isolate_test.dart
+++ b/tests/lib_2/isolate/issue_24243_parent_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:collection';
diff --git a/tests/lib_2/isolate/issue_35626_test.dart b/tests/lib_2/isolate/issue_35626_test.dart
index 1563a8392..26ee9c6 100644
--- a/tests/lib_2/isolate/issue_35626_test.dart
+++ b/tests/lib_2/isolate/issue_35626_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Tests that sets of enums can be set through ports.
diff --git a/tests/lib_2/isolate/issue_6610_test.dart b/tests/lib_2/isolate/issue_6610_test.dart
index 2b4a987..ca701681 100644
--- a/tests/lib_2/isolate/issue_6610_test.dart
+++ b/tests/lib_2/isolate/issue_6610_test.dart
@@ -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.
-// VMOptions=--enable-experiment=no-non-nullable --enable-isolate-groups
+// VMOptions=--enable-experiment=no-non-nullable --enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--enable-experiment=no-non-nullable --no-enable-isolate-groups
// Testing that Isolate.spawn copies the source code of the parent isolate,
diff --git a/tests/lib_2/isolate/kill2_test.dart b/tests/lib_2/isolate/kill2_test.dart
index f2da76b..08001f7 100644
--- a/tests/lib_2/isolate/kill2_test.dart
+++ b/tests/lib_2/isolate/kill2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/kill_self_synchronously_test.dart b/tests/lib_2/isolate/kill_self_synchronously_test.dart
index bdb61e8..a741707 100644
--- a/tests/lib_2/isolate/kill_self_synchronously_test.dart
+++ b/tests/lib_2/isolate/kill_self_synchronously_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/kill_self_test.dart b/tests/lib_2/isolate/kill_self_test.dart
index 99131f4..34c81ae 100644
--- a/tests/lib_2/isolate/kill_self_test.dart
+++ b/tests/lib_2/isolate/kill_self_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/kill_test.dart b/tests/lib_2/isolate/kill_test.dart
index 4d1e77d..c69b7a1 100644
--- a/tests/lib_2/isolate/kill_test.dart
+++ b/tests/lib_2/isolate/kill_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/large_byte_data_leak_test.dart b/tests/lib_2/isolate/large_byte_data_leak_test.dart
index 1313519..fe2fda1 100644
--- a/tests/lib_2/isolate/large_byte_data_leak_test.dart
+++ b/tests/lib_2/isolate/large_byte_data_leak_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib_2/isolate/large_byte_data_test.dart b/tests/lib_2/isolate/large_byte_data_test.dart
index 8a78238..3861e5c 100644
--- a/tests/lib_2/isolate/large_byte_data_test.dart
+++ b/tests/lib_2/isolate/large_byte_data_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib_2/isolate/mandel_isolate_test.dart b/tests/lib_2/isolate/mandel_isolate_test.dart
index 99f5e48..c037a64 100644
--- a/tests/lib_2/isolate/mandel_isolate_test.dart
+++ b/tests/lib_2/isolate/mandel_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library MandelIsolateTest;
diff --git a/tests/lib_2/isolate/message2_test.dart b/tests/lib_2/isolate/message2_test.dart
index 7c2e691..422b499 100644
--- a/tests/lib_2/isolate/message2_test.dart
+++ b/tests/lib_2/isolate/message2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing serialization of messages.
diff --git a/tests/lib_2/isolate/message3_test.dart b/tests/lib_2/isolate/message3_test.dart
index 6536b36..8fb1d8b 100644
--- a/tests/lib_2/isolate/message3_test.dart
+++ b/tests/lib_2/isolate/message3_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing serialization of messages.
diff --git a/tests/lib_2/isolate/message4_test.dart b/tests/lib_2/isolate/message4_test.dart
index ecdf986..345b21f 100644
--- a/tests/lib_2/isolate/message4_test.dart
+++ b/tests/lib_2/isolate/message4_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing serialization of messages with static
diff --git a/tests/lib_2/isolate/message_const_type_arguments_1_test.dart b/tests/lib_2/isolate/message_const_type_arguments_1_test.dart
index e5133aa..480cda5 100644
--- a/tests/lib_2/isolate/message_const_type_arguments_1_test.dart
+++ b/tests/lib_2/isolate/message_const_type_arguments_1_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// https://github.com/dart-lang/sdk/issues/35778
diff --git a/tests/lib_2/isolate/message_const_type_arguments_2_test.dart b/tests/lib_2/isolate/message_const_type_arguments_2_test.dart
index 002aa6e..8398d2b 100644
--- a/tests/lib_2/isolate/message_const_type_arguments_2_test.dart
+++ b/tests/lib_2/isolate/message_const_type_arguments_2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// https://github.com/dart-lang/sdk/issues/35778
diff --git a/tests/lib_2/isolate/message_enum_test.dart b/tests/lib_2/isolate/message_enum_test.dart
index 801afd4d..55eb38b 100644
--- a/tests/lib_2/isolate/message_enum_test.dart
+++ b/tests/lib_2/isolate/message_enum_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'package:expect/expect.dart';
diff --git a/tests/lib_2/isolate/message_test.dart b/tests/lib_2/isolate/message_test.dart
index 1d7cd78..0ee5a67 100644
--- a/tests/lib_2/isolate/message_test.dart
+++ b/tests/lib_2/isolate/message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing serialization of messages.
diff --git a/tests/lib_2/isolate/mint_maker_test.dart b/tests/lib_2/isolate/mint_maker_test.dart
index 18bbb91..3545eeb 100644
--- a/tests/lib_2/isolate/mint_maker_test.dart
+++ b/tests/lib_2/isolate/mint_maker_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library MintMakerTest;
diff --git a/tests/lib_2/isolate/native_wrapper_message_test.dart b/tests/lib_2/isolate/native_wrapper_message_test.dart
index 2b663d5..4c06821 100644
--- a/tests/lib_2/isolate/native_wrapper_message_test.dart
+++ b/tests/lib_2/isolate/native_wrapper_message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:isolate';
diff --git a/tests/lib_2/isolate/nested_spawn2_test.dart b/tests/lib_2/isolate/nested_spawn2_test.dart
index d335909..f8cf00a 100644
--- a/tests/lib_2/isolate/nested_spawn2_test.dart
+++ b/tests/lib_2/isolate/nested_spawn2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that isolates can spawn other isolates and
diff --git a/tests/lib_2/isolate/nested_spawn_test.dart b/tests/lib_2/isolate/nested_spawn_test.dart
index 0bc8c77..952c192 100644
--- a/tests/lib_2/isolate/nested_spawn_test.dart
+++ b/tests/lib_2/isolate/nested_spawn_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that isolates can spawn other isolates.
diff --git a/tests/lib_2/isolate/non_fatal_exception_in_timer_callback_test.dart b/tests/lib_2/isolate/non_fatal_exception_in_timer_callback_test.dart
index b361171..0d2e8cc 100644
--- a/tests/lib_2/isolate/non_fatal_exception_in_timer_callback_test.dart
+++ b/tests/lib_2/isolate/non_fatal_exception_in_timer_callback_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/tests/lib_2/isolate/object_leak_test.dart b/tests/lib_2/isolate/object_leak_test.dart
index b8b94b4..d563786 100644
--- a/tests/lib_2/isolate/object_leak_test.dart
+++ b/tests/lib_2/isolate/object_leak_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Regression test for http://dartbug.com/18942
diff --git a/tests/lib_2/isolate/ondone_test.dart b/tests/lib_2/isolate/ondone_test.dart
index 9445f94..10b039e 100644
--- a/tests/lib_2/isolate/ondone_test.dart
+++ b/tests/lib_2/isolate/ondone_test.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source is governed by a
// BSD-style license that can be found in the LICENSE file.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/package_config_test.dart b/tests/lib_2/isolate/package_config_test.dart
index a2cfece..c4119b2 100644
--- a/tests/lib_2/isolate/package_config_test.dart
+++ b/tests/lib_2/isolate/package_config_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// VMOptions=--trace_shutdown
import 'dart:io';
diff --git a/tests/lib_2/isolate/package_resolve_test.dart b/tests/lib_2/isolate/package_resolve_test.dart
index 50686a3..99cb6f1 100644
--- a/tests/lib_2/isolate/package_resolve_test.dart
+++ b/tests/lib_2/isolate/package_resolve_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:io';
diff --git a/tests/lib_2/isolate/package_root_test.dart b/tests/lib_2/isolate/package_root_test.dart
index 390df69..4b3d46b 100644
--- a/tests/lib_2/isolate/package_root_test.dart
+++ b/tests/lib_2/isolate/package_root_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:io';
diff --git a/tests/lib_2/isolate/pause_test.dart b/tests/lib_2/isolate/pause_test.dart
index f2bfaac..9a28a54 100644
--- a/tests/lib_2/isolate/pause_test.dart
+++ b/tests/lib_2/isolate/pause_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/ping_pause_test.dart b/tests/lib_2/isolate/ping_pause_test.dart
index 48ad135..d83d55f 100644
--- a/tests/lib_2/isolate/ping_pause_test.dart
+++ b/tests/lib_2/isolate/ping_pause_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/ping_test.dart b/tests/lib_2/isolate/ping_test.dart
index 4371a4c0..e9a0d05 100644
--- a/tests/lib_2/isolate/ping_test.dart
+++ b/tests/lib_2/isolate/ping_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/port_test.dart b/tests/lib_2/isolate/port_test.dart
index e946542..9da0dce 100644
--- a/tests/lib_2/isolate/port_test.dart
+++ b/tests/lib_2/isolate/port_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test properties of ports.
diff --git a/tests/lib_2/isolate/raw_port_test.dart b/tests/lib_2/isolate/raw_port_test.dart
index 6f24212..d0b8695 100644
--- a/tests/lib_2/isolate/raw_port_test.dart
+++ b/tests/lib_2/isolate/raw_port_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test RawReceivePort.
diff --git a/tests/lib_2/isolate/regress_34752_test.dart b/tests/lib_2/isolate/regress_34752_test.dart
index dafff29..fc17139 100644
--- a/tests/lib_2/isolate/regress_34752_test.dart
+++ b/tests/lib_2/isolate/regress_34752_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Verifies that large BigInt can be passed through a message port and
diff --git a/tests/lib_2/isolate/regress_flutter_22796_test.dart b/tests/lib_2/isolate/regress_flutter_22796_test.dart
index 1cab5f1..f97ca05 100644
--- a/tests/lib_2/isolate/regress_flutter_22796_test.dart
+++ b/tests/lib_2/isolate/regress_flutter_22796_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Verifies that large typed data can be passed in a field through message port.
diff --git a/tests/lib_2/isolate/request_reply_test.dart b/tests/lib_2/isolate/request_reply_test.dart
index 54d4d7c..3dd9274 100644
--- a/tests/lib_2/isolate/request_reply_test.dart
+++ b/tests/lib_2/isolate/request_reply_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library RequestReplyTest;
diff --git a/tests/lib_2/isolate/resolve_package_uri_test.dart b/tests/lib_2/isolate/resolve_package_uri_test.dart
index e55415a..26a48e2 100644
--- a/tests/lib_2/isolate/resolve_package_uri_test.dart
+++ b/tests/lib_2/isolate/resolve_package_uri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Regression test for faulty encoding of `Isolate.resolvePackageUri` by
diff --git a/tests/lib_2/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart b/tests/lib_2/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart
index 50686a3..99cb6f1 100644
--- a/tests/lib_2/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart
+++ b/tests/lib_2/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:io';
diff --git a/tests/lib_2/isolate/send_private_test.dart b/tests/lib_2/isolate/send_private_test.dart
index 8ed717f..46114c8 100644
--- a/tests/lib_2/isolate/send_private_test.dart
+++ b/tests/lib_2/isolate/send_private_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/simple_message_test.dart b/tests/lib_2/isolate/simple_message_test.dart
index f0310af..677998c 100644
--- a/tests/lib_2/isolate/simple_message_test.dart
+++ b/tests/lib_2/isolate/simple_message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing that isolates are spawned.
diff --git a/tests/lib_2/isolate/spawn_function_custom_class_test.dart b/tests/lib_2/isolate/spawn_function_custom_class_test.dart
index 0046cef..5abcae6 100644
--- a/tests/lib_2/isolate/spawn_function_custom_class_test.dart
+++ b/tests/lib_2/isolate/spawn_function_custom_class_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Create a user-defined class in a new isolate.
diff --git a/tests/lib_2/isolate/spawn_function_test.dart b/tests/lib_2/isolate/spawn_function_test.dart
index fb90ba4..2ad8b87 100644
--- a/tests/lib_2/isolate/spawn_function_test.dart
+++ b/tests/lib_2/isolate/spawn_function_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Example of spawning an isolate from a function.
diff --git a/tests/lib_2/isolate/spawn_generic_test.dart b/tests/lib_2/isolate/spawn_generic_test.dart
index 7763ffa..92bd72e 100644
--- a/tests/lib_2/isolate/spawn_generic_test.dart
+++ b/tests/lib_2/isolate/spawn_generic_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Check that Isolate.spawn is generic.
diff --git a/tests/lib_2/isolate/spawn_uri_exported_main_test.dart b/tests/lib_2/isolate/spawn_uri_exported_main_test.dart
index b8a5501..93f7c26 100644
--- a/tests/lib_2/isolate/spawn_uri_exported_main_test.dart
+++ b/tests/lib_2/isolate/spawn_uri_exported_main_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib_2/isolate/spawn_uri_fail_test.dart b/tests/lib_2/isolate/spawn_uri_fail_test.dart
index 6c9dc98..84d54b0 100644
--- a/tests/lib_2/isolate/spawn_uri_fail_test.dart
+++ b/tests/lib_2/isolate/spawn_uri_fail_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:io";
diff --git a/tests/lib_2/isolate/spawn_uri_missing_from_isolate_test.dart b/tests/lib_2/isolate/spawn_uri_missing_from_isolate_test.dart
index 02521b6..915ffa4 100644
--- a/tests/lib_2/isolate/spawn_uri_missing_from_isolate_test.dart
+++ b/tests/lib_2/isolate/spawn_uri_missing_from_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
/// Tests that Isolate.spawnUri completes with an error when the given URI
diff --git a/tests/lib_2/isolate/spawn_uri_missing_test.dart b/tests/lib_2/isolate/spawn_uri_missing_test.dart
index 79540b1..7164446 100644
--- a/tests/lib_2/isolate/spawn_uri_missing_test.dart
+++ b/tests/lib_2/isolate/spawn_uri_missing_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
/// Tests that Isolate.spanUri completes with an error when the given URI
diff --git a/tests/lib_2/isolate/spawn_uri_multi_test.dart b/tests/lib_2/isolate/spawn_uri_multi_test.dart
index d5fdc46..38a22ee 100644
--- a/tests/lib_2/isolate/spawn_uri_multi_test.dart
+++ b/tests/lib_2/isolate/spawn_uri_multi_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Negative test to make sure that we are reaching all assertions.
diff --git a/tests/lib_2/isolate/spawn_uri_nested_vm_test.dart b/tests/lib_2/isolate/spawn_uri_nested_vm_test.dart
index 087b5fc..5da7fa9 100644
--- a/tests/lib_2/isolate/spawn_uri_nested_vm_test.dart
+++ b/tests/lib_2/isolate/spawn_uri_nested_vm_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Example of nested spawning of isolates from a URI
diff --git a/tests/lib_2/isolate/spawn_uri_test.dart b/tests/lib_2/isolate/spawn_uri_test.dart
index dbd4e6a..0b76b4f 100644
--- a/tests/lib_2/isolate/spawn_uri_test.dart
+++ b/tests/lib_2/isolate/spawn_uri_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Example of spawning an isolate from a URI
diff --git a/tests/lib_2/isolate/spawn_uri_vm_test.dart b/tests/lib_2/isolate/spawn_uri_vm_test.dart
index 3832b42..48d30a2 100644
--- a/tests/lib_2/isolate/spawn_uri_vm_test.dart
+++ b/tests/lib_2/isolate/spawn_uri_vm_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Example of spawning an isolate from a URI
diff --git a/tests/lib_2/isolate/start_paused_test.dart b/tests/lib_2/isolate/start_paused_test.dart
index 12ccf6e..217ebf4 100644
--- a/tests/lib_2/isolate/start_paused_test.dart
+++ b/tests/lib_2/isolate/start_paused_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library start_paused_test;
diff --git a/tests/lib_2/isolate/static_function_test.dart b/tests/lib_2/isolate/static_function_test.dart
index 1c785a5..9d69464 100644
--- a/tests/lib_2/isolate/static_function_test.dart
+++ b/tests/lib_2/isolate/static_function_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Test starting isolate with static functions (and toplevel ones, for sanity).
diff --git a/tests/lib_2/isolate/string_from_environment_default_value_test.dart b/tests/lib_2/isolate/string_from_environment_default_value_test.dart
index 78b2feb..6c2adfb 100644
--- a/tests/lib_2/isolate/string_from_environment_default_value_test.dart
+++ b/tests/lib_2/isolate/string_from_environment_default_value_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:isolate";
diff --git a/tests/lib_2/isolate/timer_isolate_test.dart b/tests/lib_2/isolate/timer_isolate_test.dart
index 58e93c5..b2c98d9 100644
--- a/tests/lib_2/isolate/timer_isolate_test.dart
+++ b/tests/lib_2/isolate/timer_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library multiple_timer_test;
diff --git a/tests/lib_2/isolate/timer_multiple_isolates_test.dart b/tests/lib_2/isolate/timer_multiple_isolates_test.dart
index 8fb9c3d..51ec407 100644
--- a/tests/lib_2/isolate/timer_multiple_isolates_test.dart
+++ b/tests/lib_2/isolate/timer_multiple_isolates_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library timer_multiple_isolates_test;
diff --git a/tests/lib_2/isolate/transferable_failed_to_send_test.dart b/tests/lib_2/isolate/transferable_failed_to_send_test.dart
index ac6f80e..a8d3bcd 100644
--- a/tests/lib_2/isolate/transferable_failed_to_send_test.dart
+++ b/tests/lib_2/isolate/transferable_failed_to_send_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:io" show ServerSocket;
diff --git a/tests/lib_2/isolate/transferable_test.dart b/tests/lib_2/isolate/transferable_test.dart
index 8680828..f8888e7 100644
--- a/tests/lib_2/isolate/transferable_test.dart
+++ b/tests/lib_2/isolate/transferable_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/lib_2/isolate/typed_message_test.dart b/tests/lib_2/isolate/typed_message_test.dart
index 38e24d0..955204d 100644
--- a/tests/lib_2/isolate/typed_message_test.dart
+++ b/tests/lib_2/isolate/typed_message_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// Dart test program for testing isolate communication with
// typed objects.
diff --git a/tests/lib_2/isolate/unresolved_ports_test.dart b/tests/lib_2/isolate/unresolved_ports_test.dart
index 7707fab..fa41bb4 100644
--- a/tests/lib_2/isolate/unresolved_ports_test.dart
+++ b/tests/lib_2/isolate/unresolved_ports_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
// spawns multiple isolates and sends unresolved ports between them.
diff --git a/tests/lib_2/isolate/vm_rehash_test.dart b/tests/lib_2/isolate/vm_rehash_test.dart
index f5a0a73..6c1065c 100644
--- a/tests/lib_2/isolate/vm_rehash_test.dart
+++ b/tests/lib_2/isolate/vm_rehash_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/tests/standalone/http_launch_test.dart b/tests/standalone/http_launch_test.dart
index 07d6c13..b888bdd 100644
--- a/tests/standalone/http_launch_test.dart
+++ b/tests/standalone/http_launch_test.dart
@@ -57,21 +57,25 @@
Future<ProcessResult> no_http_run = Process.run(
pathToExecutable,
[]
+ ..add('--verbosity=warning')
..addAll(executableArguments)
..add(pathOfData.resolve('http_launch_main.dart').toFilePath()));
Future<ProcessResult> http_run = Process.run(
pathToExecutable,
[]
+ ..add('--verbosity=warning')
..addAll(executableArguments)
..add('http://127.0.0.1:$port/http_launch_main.dart'));
Future<ProcessResult> http_pkg_root_run = Process.run(
pathToExecutable,
[]
+ ..add('--verbosity=warning')
..addAll(executableArguments)
..addAll(['http://127.0.0.1:$port/http_launch_main.dart']));
Future<ProcessResult> isolate_run = Process.run(
pathToExecutable,
[]
+ ..add('--verbosity=warning')
..addAll(executableArguments)
..addAll(['http://127.0.0.1:$port/http_spawn_main.dart', '$port']));
Future<List<ProcessResult>> results =
diff --git a/tests/standalone/io/dart_std_io_pipe_test.dart b/tests/standalone/io/dart_std_io_pipe_test.dart
index 3163d7e..b1ab075 100644
--- a/tests/standalone/io/dart_std_io_pipe_test.dart
+++ b/tests/standalone/io/dart_std_io_pipe_test.dart
@@ -39,7 +39,9 @@
String redirectOutFile = "${dir.path}/redirect";
String executable = Platform.executable;
List<String> args = [
- ([executable]..addAll(Platform.executableArguments)).join(' '),
+ ([executable]
+ ..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')).join(' '),
dartScript,
type,
pipeOutFile,
diff --git a/tests/standalone/io/echo_server_stream_test.dart b/tests/standalone/io/echo_server_stream_test.dart
index 6da8ca2..18dc94a 100644
--- a/tests/standalone/io/echo_server_stream_test.dart
+++ b/tests/standalone/io/echo_server_stream_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Echo server test program to test socket streams.
diff --git a/tests/standalone/io/file_error_test.dart b/tests/standalone/io/file_error_test.dart
index 27733f7..ee80df4 100644
--- a/tests/standalone/io/file_error_test.dart
+++ b/tests/standalone/io/file_error_test.dart
@@ -246,7 +246,7 @@
createTestFile((file, done) {
var openedFile = file.openSync(mode: FileMode.read);
- List data = [0, 1, 2, 3];
+ List<int> data = [0, 1, 2, 3];
// Writing to read only file should throw an exception.
Expect.throws(() => openedFile.writeFromSync(data, 0, data.length),
(e) => checkWriteReadOnlyFileSystemException(e));
@@ -292,7 +292,7 @@
var openedFile = file.openSync(mode: FileMode.read);
openedFile.closeSync();
- List data = [0, 1, 2, 3];
+ List<int> data = [0, 1, 2, 3];
Expect.throws(
() => openedFile.readByteSync(), (e) => checkFileClosedException(e));
Expect.throws(
diff --git a/tests/standalone/io/file_system_watcher_test.dart b/tests/standalone/io/file_system_watcher_test.dart
index dae7f9d..e10bf9d 100644
--- a/tests/standalone/io/file_system_watcher_test.dart
+++ b/tests/standalone/io/file_system_watcher_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/standalone/io/http_advanced_test.dart b/tests/standalone/io/http_advanced_test.dart
index 87553d9..0ee5d65 100644
--- a/tests/standalone/io/http_advanced_test.dart
+++ b/tests/standalone/io/http_advanced_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// VMOptions=
diff --git a/tests/standalone/io/http_basic_test.dart b/tests/standalone/io/http_basic_test.dart
index acc6eb5..54e1a35 100644
--- a/tests/standalone/io/http_basic_test.dart
+++ b/tests/standalone/io/http_basic_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// VMOptions=--trace_shutdown
diff --git a/tests/standalone/io/http_read_test.dart b/tests/standalone/io/http_read_test.dart
index b6f4a7e..af75740 100644
--- a/tests/standalone/io/http_read_test.dart
+++ b/tests/standalone/io/http_read_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// VMOptions=
diff --git a/tests/standalone/io/named_pipe_script_test.dart b/tests/standalone/io/named_pipe_script_test.dart
index 932b46c..cfbdb1c 100644
--- a/tests/standalone/io/named_pipe_script_test.dart
+++ b/tests/standalone/io/named_pipe_script_test.dart
@@ -34,6 +34,8 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--sound-null-safety')
+ ..add('--verbosity=warning')
..add(stdinPipePath));
bool stdinWriteFailed = false;
process.stdout.transform(utf8.decoder).listen(output.write);
diff --git a/tests/standalone/io/pipe_server_test.dart b/tests/standalone/io/pipe_server_test.dart
index 52d93b6..ab6b8e1 100644
--- a/tests/standalone/io/pipe_server_test.dart
+++ b/tests/standalone/io/pipe_server_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// OtherResources=readline_test1.dat
diff --git a/tests/standalone/io/platform_resolved_executable_test.dart b/tests/standalone/io/platform_resolved_executable_test.dart
index 919f9d8..b6e6fc6 100644
--- a/tests/standalone/io/platform_resolved_executable_test.dart
+++ b/tests/standalone/io/platform_resolved_executable_test.dart
@@ -23,8 +23,11 @@
env['PATH'] = altPath;
}
+ List<String> execArgs =
+ ([]..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning'));
var processResult = Process.runSync(
- exePath, [...Platform.executableArguments, scriptPath],
+ exePath, [...execArgs, scriptPath],
includeParentEnvironment: false, runInShell: true, environment: env);
if (processResult.exitCode != 0) {
@@ -47,7 +50,8 @@
void testShouldFailOutsidePath() {
var threw = false;
try {
- Process.runSync(platformExeName, ['--version'],
+ Process.runSync(([platformExeName]..add('--verbosity=warning')).join(' '),
+ ['--version'],
includeParentEnvironment: false,
environment: {_SCRIPT_KEY: 'yes', 'PATH': ''});
} catch (_) {
diff --git a/tests/standalone/io/platform_test.dart b/tests/standalone/io/platform_test.dart
index ace9d85..adea57e 100644
--- a/tests/standalone/io/platform_test.dart
+++ b/tests/standalone/io/platform_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/standalone/io/print_sync_test.dart b/tests/standalone/io/print_sync_test.dart
index c23df59..bf8865f 100644
--- a/tests/standalone/io/print_sync_test.dart
+++ b/tests/standalone/io/print_sync_test.dart
@@ -15,6 +15,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(
Platform.script.resolve('print_sync_script.dart').toFilePath()))
.then((out) {
diff --git a/tests/standalone/io/process_detached_test.dart b/tests/standalone/io/process_detached_test.dart
index c011451..69bfee0 100644
--- a/tests/standalone/io/process_detached_test.dart
+++ b/tests/standalone/io/process_detached_test.dart
@@ -20,6 +20,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(script),
mode: ProcessStartMode.detached);
future.then((process) {
@@ -39,8 +40,12 @@
asyncStart();
var script =
Platform.script.resolve('process_detached_script.dart').toFilePath();
- var future = Process.start(Platform.executable,
- []..addAll(Platform.executableArguments)..addAll([script, 'echo']),
+ var future = Process.start(
+ Platform.executable,
+ []
+ ..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
+ ..addAll([script, 'echo']),
mode: ProcessStartMode.detachedWithStdio);
future.then((process) {
Expect.isNotNull(process.pid);
diff --git a/tests/standalone/io/process_environment_test.dart b/tests/standalone/io/process_environment_test.dart
index 8d46681..a5d87dd 100644
--- a/tests/standalone/io/process_environment_test.dart
+++ b/tests/standalone/io/process_environment_test.dart
@@ -16,9 +16,14 @@
if (!new File(printEnv).existsSync()) {
printEnv = '../$printEnv';
}
- Process.run(dartExecutable,
- []..addAll(Platform.executableArguments)..addAll([printEnv, name]),
- environment: environment, includeParentEnvironment: includeParent)
+ Process.run(
+ dartExecutable,
+ []
+ ..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
+ ..addAll([printEnv, name]),
+ environment: environment,
+ includeParentEnvironment: includeParent)
.then((result) {
if (result.exitCode != 0) {
print('print_env.dart subprocess failed '
diff --git a/tests/standalone/io/process_run_output_test.dart b/tests/standalone/io/process_run_output_test.dart
index c9fb7ae..20705b2 100644
--- a/tests/standalone/io/process_run_output_test.dart
+++ b/tests/standalone/io/process_run_output_test.dart
@@ -37,6 +37,7 @@
var args = <String>[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll([scriptFile, encoding, stream]);
if (stream == 'stdout') {
diff --git a/tests/standalone/io/process_set_exit_code_test.dart b/tests/standalone/io/process_set_exit_code_test.dart
index b8c7e12..b67d56c 100644
--- a/tests/standalone/io/process_set_exit_code_test.dart
+++ b/tests/standalone/io/process_set_exit_code_test.dart
@@ -20,6 +20,7 @@
executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(exitCodeScript))
.then((result) {
Expect.equals("standard out", result.stdout);
diff --git a/tests/standalone/io/process_shell_test.dart b/tests/standalone/io/process_shell_test.dart
index 5c766b0..e561315 100644
--- a/tests/standalone/io/process_shell_test.dart
+++ b/tests/standalone/io/process_shell_test.dart
@@ -18,6 +18,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(script)
..addAll(args),
runInShell: true)
diff --git a/tests/standalone/io/process_sync_test.dart b/tests/standalone/io/process_sync_test.dart
index 02546ce..096a1b9 100644
--- a/tests/standalone/io/process_sync_test.dart
+++ b/tests/standalone/io/process_sync_test.dart
@@ -15,6 +15,7 @@
Platform.script.resolve("process_sync_script.dart").toFilePath());
var args = <String>[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll([
scriptFile.path,
blockCount.toString(),
diff --git a/tests/standalone/io/raw_synchronous_socket_test.dart b/tests/standalone/io/raw_synchronous_socket_test.dart
index 50cb0f2..180c6bd 100644
--- a/tests/standalone/io/raw_synchronous_socket_test.dart
+++ b/tests/standalone/io/raw_synchronous_socket_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/standalone/io/shared_socket_test.dart b/tests/standalone/io/shared_socket_test.dart
index 3195b63..15dac09 100644
--- a/tests/standalone/io/shared_socket_test.dart
+++ b/tests/standalone/io/shared_socket_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/tests/standalone/io/signals_test.dart b/tests/standalone/io/signals_test.dart
index 0ada166..1d3caf5 100644
--- a/tests/standalone/io/signals_test.dart
+++ b/tests/standalone/io/signals_test.dart
@@ -20,6 +20,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll([
Platform.script.resolve('signals_test_script.dart').toFilePath(),
usr1Expect.toString(),
@@ -54,6 +55,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll([
Platform.script.resolve('signal_test_script.dart').toFilePath(),
signal.toString()
@@ -85,6 +87,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(Platform.script
.resolve('signal_test_script.dart')
.toFilePath())
diff --git a/tests/standalone/io/socket_close_test.dart b/tests/standalone/io/socket_close_test.dart
index 72a15de..41fa8ac 100644
--- a/tests/standalone/io/socket_close_test.dart
+++ b/tests/standalone/io/socket_close_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// VMOptions=
diff --git a/tests/standalone/io/socket_finalizer_test.dart b/tests/standalone/io/socket_finalizer_test.dart
index c82be22..94c9bcc 100644
--- a/tests/standalone/io/socket_finalizer_test.dart
+++ b/tests/standalone/io/socket_finalizer_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// This test checks that sockets belonging to an isolate are properly cleaned up
diff --git a/tests/standalone/io/socket_many_connections_test.dart b/tests/standalone/io/socket_many_connections_test.dart
index 0140df7..6b73038 100644
--- a/tests/standalone/io/socket_many_connections_test.dart
+++ b/tests/standalone/io/socket_many_connections_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Test creating a large number of socket connections.
diff --git a/tests/standalone/io/stdin_sync_test.dart b/tests/standalone/io/stdin_sync_test.dart
index 7d26a29..afbe255 100644
--- a/tests/standalone/io/stdin_sync_test.dart
+++ b/tests/standalone/io/stdin_sync_test.dart
@@ -17,6 +17,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(script)
..addAll(expected.map(json.encode)))
.then((process) {
diff --git a/tests/standalone/io/stdio_nonblocking_test.dart b/tests/standalone/io/stdio_nonblocking_test.dart
index 1eab14e..22d65de 100644
--- a/tests/standalone/io/stdio_nonblocking_test.dart
+++ b/tests/standalone/io/stdio_nonblocking_test.dart
@@ -16,6 +16,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(script),
stdoutEncoding: ascii,
stderrEncoding: ascii)
diff --git a/tests/standalone/io/stdio_socket_finalizer_test.dart b/tests/standalone/io/stdio_socket_finalizer_test.dart
index c33da51..46b4231 100644
--- a/tests/standalone/io/stdio_socket_finalizer_test.dart
+++ b/tests/standalone/io/stdio_socket_finalizer_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// This test checks that stdin is *not* closed when an Isolate leaks it.
diff --git a/tests/standalone/io/wait_for_event_isolate_test.dart b/tests/standalone/io/wait_for_event_isolate_test.dart
index ce624e2..15b970f 100644
--- a/tests/standalone/io/wait_for_event_isolate_test.dart
+++ b/tests/standalone/io/wait_for_event_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/tests/standalone/packages_file_test.dart b/tests/standalone/packages_file_test.dart
index 99c2ab5..d39c6dc 100644
--- a/tests/standalone/packages_file_test.dart
+++ b/tests/standalone/packages_file_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/standalone/regress_26031_test.dart b/tests/standalone/regress_26031_test.dart
index 60dd89b..25e9490 100644
--- a/tests/standalone/regress_26031_test.dart
+++ b/tests/standalone/regress_26031_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:io';
diff --git a/tests/standalone/regress_28854_1_test.dart b/tests/standalone/regress_28854_1_test.dart
index 30b304a..2517e30 100644
--- a/tests/standalone/regress_28854_1_test.dart
+++ b/tests/standalone/regress_28854_1_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library regress;
diff --git a/tests/standalone/regress_28854_2_test.dart b/tests/standalone/regress_28854_2_test.dart
index 21395c1..e528d34 100644
--- a/tests/standalone/regress_28854_2_test.dart
+++ b/tests/standalone/regress_28854_2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library regress;
diff --git a/tests/standalone/typed_array_int64_uint64_test.dart b/tests/standalone/typed_array_int64_uint64_test.dart
index 7b57986..fb6bd2d 100644
--- a/tests/standalone/typed_array_int64_uint64_test.dart
+++ b/tests/standalone/typed_array_int64_uint64_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Dart test program for testing native typed arrays, int64 and uint64 only.
diff --git a/tests/standalone/typed_array_test.dart b/tests/standalone/typed_array_test.dart
index 6e4c6c3..d443da9 100644
--- a/tests/standalone/typed_array_test.dart
+++ b/tests/standalone/typed_array_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Dart test program for testing native float and int arrays. 64-bit int arrays
diff --git a/tests/standalone/typed_data_isolate_test.dart b/tests/standalone/typed_data_isolate_test.dart
index ab20d49..aede7b4 100644
--- a/tests/standalone/typed_data_isolate_test.dart
+++ b/tests/standalone/typed_data_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Dart test program for testing typed data.
diff --git a/tests/standalone_2/http_launch_test.dart b/tests/standalone_2/http_launch_test.dart
index dd2d9a3..62b4966 100644
--- a/tests/standalone_2/http_launch_test.dart
+++ b/tests/standalone_2/http_launch_test.dart
@@ -56,21 +56,25 @@
Future<ProcessResult> no_http_run = Process.run(
pathToExecutable,
[]
+ ..add('--verbosity=warning')
..addAll(executableArguments)
..add(pathOfData.resolve('http_launch_main.dart').toFilePath()));
Future<ProcessResult> http_run = Process.run(
pathToExecutable,
[]
+ ..add('--verbosity=warning')
..addAll(executableArguments)
..add('http://127.0.0.1:$port/http_launch_main.dart'));
Future<ProcessResult> http_pkg_root_run = Process.run(
pathToExecutable,
[]
+ ..add('--verbosity=warning')
..addAll(executableArguments)
..addAll(['http://127.0.0.1:$port/http_launch_main.dart']));
Future<ProcessResult> isolate_run = Process.run(
pathToExecutable,
[]
+ ..add('--verbosity=warning')
..addAll(executableArguments)
..addAll(['http://127.0.0.1:$port/http_spawn_main.dart', '$port']));
Future<List<ProcessResult>> results =
diff --git a/tests/standalone_2/io/dart_std_io_pipe_test.dart b/tests/standalone_2/io/dart_std_io_pipe_test.dart
index 82ffa31..6a7002a 100644
--- a/tests/standalone_2/io/dart_std_io_pipe_test.dart
+++ b/tests/standalone_2/io/dart_std_io_pipe_test.dart
@@ -39,7 +39,9 @@
String redirectOutFile = "${dir.path}/redirect";
String executable = Platform.executable;
List<String> args = [
- ([executable]..addAll(Platform.executableArguments)).join(' '),
+ ([executable]
+ ..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')).join(' '),
dartScript,
type,
pipeOutFile,
diff --git a/tests/standalone_2/io/echo_server_stream_test.dart b/tests/standalone_2/io/echo_server_stream_test.dart
index a24b01e..7b65388 100644
--- a/tests/standalone_2/io/echo_server_stream_test.dart
+++ b/tests/standalone_2/io/echo_server_stream_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Echo server test program to test socket streams.
diff --git a/tests/standalone_2/io/file_error_test.dart b/tests/standalone_2/io/file_error_test.dart
index 27733f7..ee80df4 100644
--- a/tests/standalone_2/io/file_error_test.dart
+++ b/tests/standalone_2/io/file_error_test.dart
@@ -246,7 +246,7 @@
createTestFile((file, done) {
var openedFile = file.openSync(mode: FileMode.read);
- List data = [0, 1, 2, 3];
+ List<int> data = [0, 1, 2, 3];
// Writing to read only file should throw an exception.
Expect.throws(() => openedFile.writeFromSync(data, 0, data.length),
(e) => checkWriteReadOnlyFileSystemException(e));
@@ -292,7 +292,7 @@
var openedFile = file.openSync(mode: FileMode.read);
openedFile.closeSync();
- List data = [0, 1, 2, 3];
+ List<int> data = [0, 1, 2, 3];
Expect.throws(
() => openedFile.readByteSync(), (e) => checkFileClosedException(e));
Expect.throws(
diff --git a/tests/standalone_2/io/file_system_watcher_test.dart b/tests/standalone_2/io/file_system_watcher_test.dart
index 6011831..bcca9a1 100644
--- a/tests/standalone_2/io/file_system_watcher_test.dart
+++ b/tests/standalone_2/io/file_system_watcher_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/standalone_2/io/http_advanced_test.dart b/tests/standalone_2/io/http_advanced_test.dart
index 4a90161..62d6b30 100644
--- a/tests/standalone_2/io/http_advanced_test.dart
+++ b/tests/standalone_2/io/http_advanced_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// VMOptions=
diff --git a/tests/standalone_2/io/http_basic_test.dart b/tests/standalone_2/io/http_basic_test.dart
index 98e552b..73b9e34 100644
--- a/tests/standalone_2/io/http_basic_test.dart
+++ b/tests/standalone_2/io/http_basic_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// VMOptions=--trace_shutdown
diff --git a/tests/standalone_2/io/http_read_test.dart b/tests/standalone_2/io/http_read_test.dart
index cddb439..4b6d50e 100644
--- a/tests/standalone_2/io/http_read_test.dart
+++ b/tests/standalone_2/io/http_read_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// VMOptions=
diff --git a/tests/standalone_2/io/named_pipe_script_test.dart b/tests/standalone_2/io/named_pipe_script_test.dart
index fb97a1e..50e74b0 100644
--- a/tests/standalone_2/io/named_pipe_script_test.dart
+++ b/tests/standalone_2/io/named_pipe_script_test.dart
@@ -36,6 +36,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(stdinPipePath));
bool stdinWriteFailed = false;
process.stdout.transform(utf8.decoder).listen(output.write);
diff --git a/tests/standalone_2/io/pipe_server_test.dart b/tests/standalone_2/io/pipe_server_test.dart
index 7841651..a77eeeb 100644
--- a/tests/standalone_2/io/pipe_server_test.dart
+++ b/tests/standalone_2/io/pipe_server_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// OtherResources=readline_test1.dat
diff --git a/tests/standalone_2/io/platform_resolved_executable_test.dart b/tests/standalone_2/io/platform_resolved_executable_test.dart
index c6da572..a1db366 100644
--- a/tests/standalone_2/io/platform_resolved_executable_test.dart
+++ b/tests/standalone_2/io/platform_resolved_executable_test.dart
@@ -23,8 +23,11 @@
env['PATH'] = altPath;
}
+ List<String> execArgs =
+ ([]..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning'));
var processResult = Process.runSync(
- exePath, [...Platform.executableArguments, scriptPath],
+ exePath, [...execArgs, scriptPath],
includeParentEnvironment: false, runInShell: true, environment: env);
if (processResult.exitCode != 0) {
@@ -47,7 +50,8 @@
void testShouldFailOutsidePath() {
var threw = false;
try {
- Process.runSync(platformExeName, ['--version'],
+ Process.runSync(([platformExeName]..add('--verbosity=warning')).join(' '),
+ ['--version'],
includeParentEnvironment: false,
environment: {_SCRIPT_KEY: 'yes', 'PATH': ''});
} catch (_) {
diff --git a/tests/standalone_2/io/platform_test.dart b/tests/standalone_2/io/platform_test.dart
index c64db54..a9a96f2 100644
--- a/tests/standalone_2/io/platform_test.dart
+++ b/tests/standalone_2/io/platform_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/standalone_2/io/print_sync_test.dart b/tests/standalone_2/io/print_sync_test.dart
index c23df59..bf8865f 100644
--- a/tests/standalone_2/io/print_sync_test.dart
+++ b/tests/standalone_2/io/print_sync_test.dart
@@ -15,6 +15,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(
Platform.script.resolve('print_sync_script.dart').toFilePath()))
.then((out) {
diff --git a/tests/standalone_2/io/process_detached_test.dart b/tests/standalone_2/io/process_detached_test.dart
index 528d0cf..28b4d0c 100644
--- a/tests/standalone_2/io/process_detached_test.dart
+++ b/tests/standalone_2/io/process_detached_test.dart
@@ -20,6 +20,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(script),
mode: ProcessStartMode.detached);
future.then((process) {
@@ -39,8 +40,12 @@
asyncStart();
var script =
Platform.script.resolve('process_detached_script.dart').toFilePath();
- var future = Process.start(Platform.executable,
- []..addAll(Platform.executableArguments)..addAll([script, 'echo']),
+ var future = Process.start(
+ Platform.executable,
+ []
+ ..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
+ ..addAll([script, 'echo']),
mode: ProcessStartMode.detachedWithStdio);
future.then((process) {
Expect.isNotNull(process.pid);
diff --git a/tests/standalone_2/io/process_environment_test.dart b/tests/standalone_2/io/process_environment_test.dart
index ca56130..92bdc58 100644
--- a/tests/standalone_2/io/process_environment_test.dart
+++ b/tests/standalone_2/io/process_environment_test.dart
@@ -16,9 +16,14 @@
if (!new File(printEnv).existsSync()) {
printEnv = '../$printEnv';
}
- Process.run(dartExecutable,
- []..addAll(Platform.executableArguments)..addAll([printEnv, name]),
- environment: environment, includeParentEnvironment: includeParent)
+ Process.run(
+ dartExecutable,
+ []
+ ..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
+ ..addAll([printEnv, name]),
+ environment: environment,
+ includeParentEnvironment: includeParent)
.then((result) {
if (result.exitCode != 0) {
print('print_env.dart subprocess failed '
diff --git a/tests/standalone_2/io/process_run_output_test.dart b/tests/standalone_2/io/process_run_output_test.dart
index 11b111a..08d9bda 100644
--- a/tests/standalone_2/io/process_run_output_test.dart
+++ b/tests/standalone_2/io/process_run_output_test.dart
@@ -37,6 +37,7 @@
var args = <String>[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll([scriptFile, encoding, stream]);
if (stream == 'stdout') {
diff --git a/tests/standalone_2/io/process_set_exit_code_test.dart b/tests/standalone_2/io/process_set_exit_code_test.dart
index b8c7e12..b67d56c 100644
--- a/tests/standalone_2/io/process_set_exit_code_test.dart
+++ b/tests/standalone_2/io/process_set_exit_code_test.dart
@@ -20,6 +20,7 @@
executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(exitCodeScript))
.then((result) {
Expect.equals("standard out", result.stdout);
diff --git a/tests/standalone_2/io/process_shell_test.dart b/tests/standalone_2/io/process_shell_test.dart
index 5c766b0..e561315 100644
--- a/tests/standalone_2/io/process_shell_test.dart
+++ b/tests/standalone_2/io/process_shell_test.dart
@@ -18,6 +18,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(script)
..addAll(args),
runInShell: true)
diff --git a/tests/standalone_2/io/process_sync_test.dart b/tests/standalone_2/io/process_sync_test.dart
index 1d91dfc..90e2335 100644
--- a/tests/standalone_2/io/process_sync_test.dart
+++ b/tests/standalone_2/io/process_sync_test.dart
@@ -15,6 +15,7 @@
Platform.script.resolve("process_sync_script.dart").toFilePath());
var args = <String>[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll([
scriptFile.path,
blockCount.toString(),
diff --git a/tests/standalone_2/io/raw_synchronous_socket_test.dart b/tests/standalone_2/io/raw_synchronous_socket_test.dart
index dfdc492..61eaab3 100644
--- a/tests/standalone_2/io/raw_synchronous_socket_test.dart
+++ b/tests/standalone_2/io/raw_synchronous_socket_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/standalone_2/io/shared_socket_test.dart b/tests/standalone_2/io/shared_socket_test.dart
index 2324884a1..67be964 100644
--- a/tests/standalone_2/io/shared_socket_test.dart
+++ b/tests/standalone_2/io/shared_socket_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/tests/standalone_2/io/signals_test.dart b/tests/standalone_2/io/signals_test.dart
index 13e0448..2c1620e 100644
--- a/tests/standalone_2/io/signals_test.dart
+++ b/tests/standalone_2/io/signals_test.dart
@@ -20,6 +20,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll([
Platform.script.resolve('signals_test_script.dart').toFilePath(),
usr1Expect.toString(),
@@ -54,6 +55,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..addAll([
Platform.script.resolve('signal_test_script.dart').toFilePath(),
signal.toString()
@@ -85,6 +87,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(Platform.script
.resolve('signal_test_script.dart')
.toFilePath())
diff --git a/tests/standalone_2/io/socket_close_test.dart b/tests/standalone_2/io/socket_close_test.dart
index c59a05f..6568923 100644
--- a/tests/standalone_2/io/socket_close_test.dart
+++ b/tests/standalone_2/io/socket_close_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// VMOptions=
diff --git a/tests/standalone_2/io/socket_finalizer_test.dart b/tests/standalone_2/io/socket_finalizer_test.dart
index cbaae2c..e973a38 100644
--- a/tests/standalone_2/io/socket_finalizer_test.dart
+++ b/tests/standalone_2/io/socket_finalizer_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// This test checks that sockets belonging to an isolate are properly cleaned up
diff --git a/tests/standalone_2/io/socket_many_connections_test.dart b/tests/standalone_2/io/socket_many_connections_test.dart
index 93353dd..fd20d34 100644
--- a/tests/standalone_2/io/socket_many_connections_test.dart
+++ b/tests/standalone_2/io/socket_many_connections_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Test creating a large number of socket connections.
diff --git a/tests/standalone_2/io/stdin_sync_test.dart b/tests/standalone_2/io/stdin_sync_test.dart
index ae8e6ca..612b8a5 100644
--- a/tests/standalone_2/io/stdin_sync_test.dart
+++ b/tests/standalone_2/io/stdin_sync_test.dart
@@ -16,6 +16,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(script)
..addAll(expected.map(json.encode)))
.then((process) {
diff --git a/tests/standalone_2/io/stdio_nonblocking_test.dart b/tests/standalone_2/io/stdio_nonblocking_test.dart
index 1eab14e..22d65de 100644
--- a/tests/standalone_2/io/stdio_nonblocking_test.dart
+++ b/tests/standalone_2/io/stdio_nonblocking_test.dart
@@ -16,6 +16,7 @@
Platform.executable,
[]
..addAll(Platform.executableArguments)
+ ..add('--verbosity=warning')
..add(script),
stdoutEncoding: ascii,
stderrEncoding: ascii)
diff --git a/tests/standalone_2/io/stdio_socket_finalizer_test.dart b/tests/standalone_2/io/stdio_socket_finalizer_test.dart
index c8be0e3..e458c55 100644
--- a/tests/standalone_2/io/stdio_socket_finalizer_test.dart
+++ b/tests/standalone_2/io/stdio_socket_finalizer_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// This test checks that stdin is *not* closed when an Isolate leaks it.
diff --git a/tests/standalone_2/io/wait_for_event_isolate_test.dart b/tests/standalone_2/io/wait_for_event_isolate_test.dart
index ce624e2..15b970f 100644
--- a/tests/standalone_2/io/wait_for_event_isolate_test.dart
+++ b/tests/standalone_2/io/wait_for_event_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:async';
diff --git a/tests/standalone_2/packages_file_test.dart b/tests/standalone_2/packages_file_test.dart
index 99c2ab5..d39c6dc 100644
--- a/tests/standalone_2/packages_file_test.dart
+++ b/tests/standalone_2/packages_file_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import "dart:async";
diff --git a/tests/standalone_2/regress_26031_test.dart b/tests/standalone_2/regress_26031_test.dart
index 7cc1058..c25454e 100644
--- a/tests/standalone_2/regress_26031_test.dart
+++ b/tests/standalone_2/regress_26031_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
import 'dart:io';
diff --git a/tests/standalone_2/regress_28854_1_test.dart b/tests/standalone_2/regress_28854_1_test.dart
index 5b45c40..9c2faa6 100644
--- a/tests/standalone_2/regress_28854_1_test.dart
+++ b/tests/standalone_2/regress_28854_1_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library regress;
diff --git a/tests/standalone_2/regress_28854_2_test.dart b/tests/standalone_2/regress_28854_2_test.dart
index 59a2c45..e2919ea 100644
--- a/tests/standalone_2/regress_28854_2_test.dart
+++ b/tests/standalone_2/regress_28854_2_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
library regress;
diff --git a/tests/standalone_2/typed_array_int64_uint64_test.dart b/tests/standalone_2/typed_array_int64_uint64_test.dart
index 7b57986..fb6bd2d 100644
--- a/tests/standalone_2/typed_array_int64_uint64_test.dart
+++ b/tests/standalone_2/typed_array_int64_uint64_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Dart test program for testing native typed arrays, int64 and uint64 only.
diff --git a/tests/standalone_2/typed_array_test.dart b/tests/standalone_2/typed_array_test.dart
index 6e4c6c3..d443da9 100644
--- a/tests/standalone_2/typed_array_test.dart
+++ b/tests/standalone_2/typed_array_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Dart test program for testing native float and int arrays. 64-bit int arrays
diff --git a/tests/standalone_2/typed_data_isolate_test.dart b/tests/standalone_2/typed_data_isolate_test.dart
index ab20d49..aede7b4 100644
--- a/tests/standalone_2/typed_data_isolate_test.dart
+++ b/tests/standalone_2/typed_data_isolate_test.dart
@@ -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.
-// VMOptions=--enable-isolate-groups
+// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups
//
// Dart test program for testing typed data.
diff --git a/tools/VERSION b/tools/VERSION
index 6f30547..e795f63 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 12
PATCH 0
-PRERELEASE 267
+PRERELEASE 268
PRERELEASE_PATCH 0
\ No newline at end of file