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