Version 2.14.0-101.0.dev

Merge commit 'a1e0a0e3946abaf8891ddd69d996ff1fab9b891d' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cb0efef..d6bf3d7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,7 +19,7 @@
 *   **BREAKING CHANGE** (https://github.com/dart-lang/sdk/issues/45115)
     Most types exposed by this library can no longer be extended, implemented
     or mixed-in. The affected types are `ByteBuffer`, `TypedData` and *all*
-    its subclasses, `Int32x4`, `Float32x4`, `Float64x2` and `Endian.
+    its subclasses, `Int32x4`, `Float32x4`, `Float64x2` and `Endian`.
 
 #### `dart:web_sql`
 
@@ -42,6 +42,12 @@
 
 ### Tools
 
+#### Dart command line
+
+- The `dart create` command has been updated to create projects that use the new
+  'core' set of lints from `package:lints`. See https://dart.dev/go/core-lints
+  for more information about these lints.
+
 #### Linter
 
 Updated the Linter to `1.4.0`, which includes:
diff --git a/DEPS b/DEPS
index c955d7e..a54b6f0 100644
--- a/DEPS
+++ b/DEPS
@@ -82,7 +82,7 @@
   "browser-compat-data_tag": "v1.0.22",
   "charcode_rev": "bcd8a12c315b7a83390e4865ad847ecd9344cba2",
   "chrome_rev" : "19997",
-  "cli_util_rev" : "8a73cd7eca373ff71d290ccf47d4829e5ca44209",
+  "cli_util_rev" : "8c504de5deb08fe32ecf51f9662bb37d8c708e57",
   "clock_rev" : "a494269254ba978e7ef8f192c5f7fec3fc05b9d3",
   "collection_rev": "9967dcd3d7645db6de48d5abfab3018bb0c84236",
   "convert_rev": "a60156c6efd653657c8926b5788219ed609917d7",
@@ -166,7 +166,7 @@
   "test_reflective_loader_rev": "54e930a11c372683792e22bddad79197728c91ce",
   "test_rev": "433f1d8726f9c1484007588470b17830a5e97a12",
   "typed_data_tag": "f94fc57b8e8c0e4fe4ff6cfd8290b94af52d3719",
-  "usage_rev": "5b7317ba89166f3cf1af98cb280a4cc8e78f25f9",
+  "usage_rev": "e0780cd8b2f8af69a28dc52678ffe8492da27d06",
   "vector_math_rev": "0c9f5d68c047813a6dcdeb88ba7a42daddf25025",
   "watcher_rev": "3924194385fb215cef483193ed2879a618a3d69c",
   "webdriver_rev": "ff5ccb1522edf4bed578ead4d65e0cbc1f2c4f02",
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
index 83eacb7..f380214 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
@@ -14,6 +14,7 @@
 final _knownFeatures = <String, ExperimentalFeature>{
   EnableString.const_functions: ExperimentalFeatures.const_functions,
   EnableString.constant_update_2018: ExperimentalFeatures.constant_update_2018,
+  EnableString.constructor_tearoffs: ExperimentalFeatures.constructor_tearoffs,
   EnableString.control_flow_collections:
       ExperimentalFeatures.control_flow_collections,
   EnableString.extension_methods: ExperimentalFeatures.extension_methods,
@@ -38,6 +39,9 @@
   /// String to enable the experiment "constant-update-2018"
   static const String constant_update_2018 = 'constant-update-2018';
 
+  /// String to enable the experiment "constructor-tearoffs"
+  static const String constructor_tearoffs = 'constructor-tearoffs';
+
   /// String to enable the experiment "control-flow-collections"
   static const String control_flow_collections = 'control-flow-collections';
 
@@ -94,8 +98,19 @@
     releaseVersion: Version.parse('2.0.0'),
   );
 
-  static final control_flow_collections = ExperimentalFeature(
+  static final constructor_tearoffs = ExperimentalFeature(
     index: 2,
+    enableString: EnableString.constructor_tearoffs,
+    isEnabledByDefault: IsEnabledByDefault.constructor_tearoffs,
+    isExpired: IsExpired.constructor_tearoffs,
+    documentation:
+        'Allow constructor tear-offs and explicit generic instantiations.',
+    experimentalReleaseVersion: null,
+    releaseVersion: null,
+  );
+
+  static final control_flow_collections = ExperimentalFeature(
+    index: 3,
     enableString: EnableString.control_flow_collections,
     isEnabledByDefault: IsEnabledByDefault.control_flow_collections,
     isExpired: IsExpired.control_flow_collections,
@@ -105,7 +120,7 @@
   );
 
   static final extension_methods = ExperimentalFeature(
-    index: 3,
+    index: 4,
     enableString: EnableString.extension_methods,
     isEnabledByDefault: IsEnabledByDefault.extension_methods,
     isExpired: IsExpired.extension_methods,
@@ -115,7 +130,7 @@
   );
 
   static final extension_types = ExperimentalFeature(
-    index: 4,
+    index: 5,
     enableString: EnableString.extension_types,
     isEnabledByDefault: IsEnabledByDefault.extension_types,
     isExpired: IsExpired.extension_types,
@@ -125,7 +140,7 @@
   );
 
   static final generic_metadata = ExperimentalFeature(
-    index: 5,
+    index: 6,
     enableString: EnableString.generic_metadata,
     isEnabledByDefault: IsEnabledByDefault.generic_metadata,
     isExpired: IsExpired.generic_metadata,
@@ -136,7 +151,7 @@
   );
 
   static final non_nullable = ExperimentalFeature(
-    index: 6,
+    index: 7,
     enableString: EnableString.non_nullable,
     isEnabledByDefault: IsEnabledByDefault.non_nullable,
     isExpired: IsExpired.non_nullable,
@@ -146,7 +161,7 @@
   );
 
   static final nonfunction_type_aliases = ExperimentalFeature(
-    index: 7,
+    index: 8,
     enableString: EnableString.nonfunction_type_aliases,
     isEnabledByDefault: IsEnabledByDefault.nonfunction_type_aliases,
     isExpired: IsExpired.nonfunction_type_aliases,
@@ -156,7 +171,7 @@
   );
 
   static final set_literals = ExperimentalFeature(
-    index: 8,
+    index: 9,
     enableString: EnableString.set_literals,
     isEnabledByDefault: IsEnabledByDefault.set_literals,
     isExpired: IsExpired.set_literals,
@@ -166,7 +181,7 @@
   );
 
   static final spread_collections = ExperimentalFeature(
-    index: 9,
+    index: 10,
     enableString: EnableString.spread_collections,
     isEnabledByDefault: IsEnabledByDefault.spread_collections,
     isExpired: IsExpired.spread_collections,
@@ -176,7 +191,7 @@
   );
 
   static final triple_shift = ExperimentalFeature(
-    index: 10,
+    index: 11,
     enableString: EnableString.triple_shift,
     isEnabledByDefault: IsEnabledByDefault.triple_shift,
     isExpired: IsExpired.triple_shift,
@@ -186,7 +201,7 @@
   );
 
   static final value_class = ExperimentalFeature(
-    index: 11,
+    index: 12,
     enableString: EnableString.value_class,
     isEnabledByDefault: IsEnabledByDefault.value_class,
     isExpired: IsExpired.value_class,
@@ -196,7 +211,7 @@
   );
 
   static final variance = ExperimentalFeature(
-    index: 12,
+    index: 13,
     enableString: EnableString.variance,
     isEnabledByDefault: IsEnabledByDefault.variance,
     isExpired: IsExpired.variance,
@@ -215,6 +230,9 @@
   /// Default state of the experiment "constant-update-2018"
   static const bool constant_update_2018 = true;
 
+  /// Default state of the experiment "constructor-tearoffs"
+  static const bool constructor_tearoffs = false;
+
   /// Default state of the experiment "control-flow-collections"
   static const bool control_flow_collections = true;
 
@@ -259,6 +277,9 @@
   /// Expiration status of the experiment "constant-update-2018"
   static const bool constant_update_2018 = true;
 
+  /// Expiration status of the experiment "constructor-tearoffs"
+  static const bool constructor_tearoffs = false;
+
   /// Expiration status of the experiment "control-flow-collections"
   static const bool control_flow_collections = true;
 
@@ -301,6 +322,10 @@
   bool get constant_update_2018 =>
       isEnabled(ExperimentalFeatures.constant_update_2018);
 
+  /// Current state for the flag "constructor-tearoffs"
+  bool get constructor_tearoffs =>
+      isEnabled(ExperimentalFeatures.constructor_tearoffs);
+
   /// Current state for the flag "control-flow-collections"
   bool get control_flow_collections =>
       isEnabled(ExperimentalFeatures.control_flow_collections);
diff --git a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
index 11e9b80..8b431a0 100644
--- a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
@@ -222,11 +222,11 @@
     flow!.labeledStatement_end();
   }
 
-  void topLevelDeclaration_enter(
-      AstNode node, FormalParameterList? parameters, FunctionBody? body) {
+  void topLevelDeclaration_enter(AstNode node, FormalParameterList? parameters,
+      {void Function(AstVisitor<Object?> visitor)? visit}) {
     assert(flow == null);
     assignedVariables = computeAssignedVariables(node, parameters,
-        retainDataForTesting: dataForTesting != null);
+        retainDataForTesting: dataForTesting != null, visit: visit);
     if (dataForTesting != null) {
       dataForTesting!.assignedVariables[node] = assignedVariables
           as AssignedVariablesForTesting<AstNode, PromotableElement>;
@@ -276,14 +276,19 @@
   /// Computes the [AssignedVariables] map for the given [node].
   static AssignedVariables<AstNode, PromotableElement> computeAssignedVariables(
       AstNode node, FormalParameterList? parameters,
-      {bool retainDataForTesting = false}) {
+      {bool retainDataForTesting = false,
+      void Function(AstVisitor<Object?> visitor)? visit}) {
     AssignedVariables<AstNode, PromotableElement> assignedVariables =
         retainDataForTesting
             ? AssignedVariablesForTesting()
             : AssignedVariables();
     var assignedVariablesVisitor = _AssignedVariablesVisitor(assignedVariables);
     assignedVariablesVisitor._declareParameters(parameters);
-    node.visitChildren(assignedVariablesVisitor);
+    if (visit != null) {
+      visit(assignedVariablesVisitor);
+    } else {
+      node.visitChildren(assignedVariablesVisitor);
+    }
     assignedVariables.finish();
     return assignedVariables;
   }
@@ -344,9 +349,9 @@
       : super(typeSystem, false, isNonNullableByDefault);
 
   @override
-  void topLevelDeclaration_enter(
-      AstNode node, FormalParameterList? parameters, FunctionBody? body) {
-    super.topLevelDeclaration_enter(node, parameters, body);
+  void topLevelDeclaration_enter(AstNode node, FormalParameterList? parameters,
+      {void Function(AstVisitor<Object?> visitor)? visit}) {
+    super.topLevelDeclaration_enter(node, parameters, visit: visit);
     migrationResolutionHooks.setFlowAnalysis(flow);
   }
 
diff --git a/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
index 1dc6a6b..18889af 100644
--- a/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
@@ -46,7 +46,7 @@
 
     InferenceContext.setTypeFromNode(initializer, node);
     if (isTopLevel) {
-      _resolver.flowAnalysis?.topLevelDeclaration_enter(node, null, null);
+      _resolver.flowAnalysis?.topLevelDeclaration_enter(node, null);
     } else if (element.isLate) {
       _resolver.flowAnalysis?.flow?.lateInitializer_begin(node);
     }
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 8be9975..07ad66e 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -10524,7 +10524,8 @@
    */
   static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE =
       CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE',
-          "'{0}' can't be a superinterface of itself: {1}.");
+          "'{0}' can't be a superinterface of itself: {1}.",
+          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE');
 
   /**
    * 7.10 Superinterfaces: It is a compile-time error if the interface of a
@@ -10540,8 +10541,9 @@
    * 0: the name of the class that implements itself recursively
    */
   static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_EXTENDS =
-      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE_EXTENDS',
-          "'{0}' can't extend itself.");
+      CompileTimeErrorCode(
+          'RECURSIVE_INTERFACE_INHERITANCE', "'{0}' can't extend itself.",
+          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_EXTENDS');
 
   /**
    * 7.10 Superinterfaces: It is a compile-time error if the interface of a
@@ -10557,16 +10559,18 @@
    * 0: the name of the class that implements itself recursively
    */
   static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS =
-      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS',
-          "'{0}' can't implement itself.");
+      CompileTimeErrorCode(
+          'RECURSIVE_INTERFACE_INHERITANCE', "'{0}' can't implement itself.",
+          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS');
 
   /**
    * Parameters:
    * 0: the name of the mixin that constraints itself recursively
    */
   static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_ON =
-      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE_ON',
-          "'{0}' can't use itself as a superclass constraint.");
+      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE',
+          "'{0}' can't use itself as a superclass constraint.",
+          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_ON');
 
   /**
    * 7.10 Superinterfaces: It is a compile-time error if the interface of a
@@ -10582,8 +10586,9 @@
    * 0: the name of the class that implements itself recursively
    */
   static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_WITH =
-      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE_WITH',
-          "'{0}' can't use itself as a mixin.");
+      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE',
+          "'{0}' can't use itself as a mixin.",
+          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_WITH');
 
   /**
    * No parameters.
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index b7c8023..edfbc7b 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -1223,7 +1223,7 @@
     var outerFunction = _enclosingFunction;
     _enclosingFunction = node.declaredElement;
 
-    flowAnalysis!.topLevelDeclaration_enter(node, node.parameters, node.body);
+    flowAnalysis!.topLevelDeclaration_enter(node, node.parameters);
     flowAnalysis!.executableDeclaration_enter(node, node.parameters, false);
 
     var returnType = _enclosingFunction!.type.returnType;
@@ -1461,11 +1461,8 @@
     if (isLocal) {
       flowAnalysis!.flow!.functionExpression_begin(node);
     } else {
-      flowAnalysis!.topLevelDeclaration_enter(
-        node,
-        node.functionExpression.parameters,
-        node.functionExpression.body,
-      );
+      flowAnalysis!
+          .topLevelDeclaration_enter(node, node.functionExpression.parameters);
     }
     flowAnalysis!.executableDeclaration_enter(
       node,
@@ -1713,7 +1710,7 @@
     var outerFunction = _enclosingFunction;
     _enclosingFunction = node.declaredElement;
 
-    flowAnalysis!.topLevelDeclaration_enter(node, node.parameters, node.body);
+    flowAnalysis!.topLevelDeclaration_enter(node, node.parameters);
     flowAnalysis!.executableDeclaration_enter(node, node.parameters, false);
 
     DartType returnType = _enclosingFunction!.returnType;
diff --git a/pkg/analyzer/lib/src/summary2/ast_resolver.dart b/pkg/analyzer/lib/src/summary2/ast_resolver.dart
index 3be65c2..87dfa28 100644
--- a/pkg/analyzer/lib/src/summary2/ast_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_resolver.dart
@@ -2,10 +2,13 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/scope.dart';
+import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/ast/ast.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
 import 'package:analyzer/src/dart/resolver/resolution_visitor.dart';
@@ -17,70 +20,95 @@
   final Linker _linker;
   final CompilationUnitElementImpl _unitElement;
   final Scope _nameScope;
+  final FeatureSet _featureSet;
+  final AnalysisErrorListener _errorListener =
+      AnalysisErrorListener.NULL_LISTENER;
+  final ClassElement? enclosingClassElement;
+  final ExecutableElement? enclosingExecutableElement;
+  late final _resolutionVisitor = ResolutionVisitor(
+    unitElement: _unitElement,
+    featureSet: _featureSet,
+    nameScope: _nameScope,
+    errorListener: _errorListener,
+  );
+  late final _variableResolverVisitor = VariableResolverVisitor(
+    _unitElement.library,
+    _unitElement.source,
+    _unitElement.library.typeProvider,
+    _errorListener,
+    nameScope: _nameScope,
+  );
+  late final _flowAnalysis = FlowAnalysisHelper(_unitElement.library.typeSystem,
+      false, _unitElement.library.isNonNullableByDefault);
+  late final _resolverVisitor = ResolverVisitor(
+    _linker.inheritance,
+    _unitElement.library,
+    _unitElement.source,
+    _unitElement.library.typeProvider,
+    _errorListener,
+    featureSet: _featureSet,
+    nameScope: _nameScope,
+    reportConstEvaluationErrors: false,
+    flowAnalysisHelper: _flowAnalysis,
+  );
 
-  AstResolver(this._linker, this._unitElement, this._nameScope);
+  AstResolver(this._linker, this._unitElement, this._nameScope, AstNode node,
+      {this.enclosingClassElement, this.enclosingExecutableElement})
+      : _featureSet = node.thisOrAncestorOfType<CompilationUnit>()!.featureSet;
 
-  void resolve(
-    AstNode node,
-    AstNode Function() getNode, {
-    bool buildElements = true,
-    bool isTopLevelVariableInitializer = false,
-    ClassElement? enclosingClassElement,
-    ExecutableElement? enclosingExecutableElement,
-    FunctionBody? enclosingFunctionBody,
-  }) {
-    var featureSet = node.thisOrAncestorOfType<CompilationUnit>()!.featureSet;
-    var errorListener = AnalysisErrorListener.NULL_LISTENER;
+  void resolveAnnotation(AnnotationImpl node) {
+    node.accept(_resolutionVisitor);
+    node.accept(_variableResolverVisitor);
+    _prepareEnclosingDeclarations();
+    _flowAnalysis.topLevelDeclaration_enter(node, null);
+    node.accept(_resolverVisitor);
+    _flowAnalysis.topLevelDeclaration_exit();
+  }
 
+  void resolveConstructorNode(ConstructorDeclarationImpl node) {
+    var isConst = node.constKeyword != null;
+    // We don't want to visit the whole node because that will try to create an
+    // element for it; we just want to process its children so that we can
+    // resolve initializers and/or a redirection.
+    void visit(AstVisitor<Object?> visitor) {
+      if (isConst) {
+        node.initializers.accept(visitor);
+      }
+      node.redirectedConstructor?.accept(visitor);
+    }
+
+    visit(_resolutionVisitor);
+    visit(_variableResolverVisitor);
+
+    _prepareEnclosingDeclarations();
+    _flowAnalysis.topLevelDeclaration_enter(node, node.parameters,
+        visit: visit);
+    visit(_resolverVisitor);
+    _flowAnalysis.topLevelDeclaration_exit();
+  }
+
+  void resolveExpression(Expression Function() getNode,
+      {DartType? contextType, bool buildElements = true}) {
+    Expression node = getNode();
     if (buildElements) {
-      node.accept(
-        ResolutionVisitor(
-          unitElement: _unitElement,
-          featureSet: featureSet,
-          nameScope: _nameScope,
-          errorListener: errorListener,
-        ),
-      );
+      node.accept(_resolutionVisitor);
+      // Node may have been rewritten so get it again.
       node = getNode();
-
-      var variableResolverVisitor = VariableResolverVisitor(
-        _unitElement.library,
-        _unitElement.source,
-        _unitElement.library.typeProvider,
-        errorListener,
-        nameScope: _nameScope,
-      );
-      node.accept(variableResolverVisitor);
+      if (contextType != null) {
+        InferenceContext.setType(node, contextType);
+      }
+      node.accept(_variableResolverVisitor);
     }
+    _prepareEnclosingDeclarations();
+    _flowAnalysis.topLevelDeclaration_enter(node.parent!, null);
+    node.accept(_resolverVisitor);
+    _flowAnalysis.topLevelDeclaration_exit();
+  }
 
-    FlowAnalysisHelper flowAnalysis = FlowAnalysisHelper(
-        _unitElement.library.typeSystem,
-        false,
-        _unitElement.library.isNonNullableByDefault);
-    if (isTopLevelVariableInitializer) {
-      flowAnalysis.topLevelDeclaration_enter(node.parent!, null, null);
-    }
-
-    var resolverVisitor = ResolverVisitor(
-      _linker.inheritance,
-      _unitElement.library,
-      _unitElement.source,
-      _unitElement.library.typeProvider,
-      errorListener,
-      featureSet: featureSet,
-      nameScope: _nameScope,
-      reportConstEvaluationErrors: false,
-      flowAnalysisHelper: flowAnalysis,
-    );
-    resolverVisitor.prepareEnclosingDeclarations(
+  void _prepareEnclosingDeclarations() {
+    _resolverVisitor.prepareEnclosingDeclarations(
       enclosingClassElement: enclosingClassElement,
       enclosingExecutableElement: enclosingExecutableElement,
     );
-
-    node.accept(resolverVisitor);
-
-    if (isTopLevelVariableInitializer) {
-      flowAnalysis.topLevelDeclaration_exit();
-    }
   }
 }
diff --git a/pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart b/pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart
index d8cde36..57f4e5a 100644
--- a/pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart
@@ -47,41 +47,14 @@
       constructorElement,
     );
 
-    _astResolver = AstResolver(_linker, _unitElement, initializerScope);
+    _astResolver = AstResolver(
+        _linker, _unitElement, initializerScope, _constructorNode,
+        enclosingClassElement: _classElement,
+        enclosingExecutableElement: _constructorElement);
 
     var body = _constructorNode.body;
     body.localVariableInfo = LocalVariableInfo();
 
-    _initializers();
-    _redirectedConstructor();
-  }
-
-  void _initializers() {
-    var isConst = _constructorNode.constKeyword != null;
-    if (!isConst) {
-      return;
-    }
-
-    for (var initializer in _constructorNode.initializers) {
-      _astResolver.resolve(
-        initializer,
-        () => initializer,
-        enclosingClassElement: _classElement,
-        enclosingExecutableElement: _constructorElement,
-        enclosingFunctionBody: _constructorNode.body,
-      );
-    }
-  }
-
-  void _redirectedConstructor() {
-    var redirected = _constructorNode.redirectedConstructor;
-    if (redirected != null) {
-      _astResolver.resolve(
-        redirected,
-        () => redirected,
-        enclosingClassElement: _classElement,
-        enclosingExecutableElement: _constructorElement,
-      );
-    }
+    _astResolver.resolveConstructorNode(_constructorNode);
   }
 }
diff --git a/pkg/analyzer/lib/src/summary2/default_value_resolver.dart b/pkg/analyzer/lib/src/summary2/default_value_resolver.dart
index f5d81ef..a9fb486 100644
--- a/pkg/analyzer/lib/src/summary2/default_value_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/default_value_resolver.dart
@@ -7,7 +7,6 @@
 import 'package:analyzer/dart/element/scope.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:analyzer/src/generated/resolver.dart' show InferenceContext;
 import 'package:analyzer/src/summary2/ast_resolver.dart';
 import 'package:analyzer/src/summary2/link.dart';
 import 'package:analyzer/src/summary2/linking_node_scope.dart';
@@ -22,8 +21,6 @@
   late ExecutableElement _executableElement;
   late Scope _scope;
 
-  AstResolver? _astResolver;
-
   DefaultValueResolver(this._linker, this._libraryElement)
       : _typeSystem = _libraryElement.typeSystem;
 
@@ -67,7 +64,6 @@
   void _constructor(ConstructorElementImpl element) {
     if (element.isSynthetic) return;
 
-    _astResolver = null;
     _executableElement = element;
     _setScopeFromElement(element);
 
@@ -82,7 +78,6 @@
   }
 
   void _function(FunctionElement element) {
-    _astResolver = null;
     _executableElement = element;
     _setScopeFromElement(element);
 
@@ -90,7 +85,6 @@
   }
 
   void _method(MethodElementImpl element) {
-    _astResolver = null;
     _executableElement = element;
     _setScopeFromElement(element);
 
@@ -108,19 +102,12 @@
 
     var contextType = _typeSystem.eliminateTypeVariables(parameter.type);
 
-    var astResolver =
-        _astResolver ??= AstResolver(_linker, _unitElement, _scope);
-    astResolver.resolve(
-      node.defaultValue!,
-      () {
-        var defaultValue = node.defaultValue!;
-        InferenceContext.setType(defaultValue, contextType);
-        return defaultValue;
-      },
-      enclosingClassElement: _classElement,
-      enclosingExecutableElement: _executableElement,
-      isTopLevelVariableInitializer: true,
-    );
+    var astResolver = AstResolver(
+        _linker, _unitElement, _scope, node.defaultValue!,
+        enclosingClassElement: _classElement,
+        enclosingExecutableElement: _executableElement);
+    astResolver.resolveExpression(() => node.defaultValue!,
+        contextType: contextType);
   }
 
   void _parameters(List<ParameterElement> parameters) {
diff --git a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
index 170d30f..a999222 100644
--- a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
@@ -24,8 +24,8 @@
   void visitAnnotation(covariant AnnotationImpl node) {
     node.elementAnnotation = ElementAnnotationImpl(_unitElement);
 
-    var astResolver = AstResolver(_linker, _unitElement, _scope);
-    astResolver.resolve(node, () => node);
+    var astResolver = AstResolver(_linker, _unitElement, _scope, node);
+    astResolver.resolveAnnotation(node);
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index 9f51dba..c420b45 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -12,7 +12,6 @@
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/summary/link.dart' as graph
     show DependencyWalker, Node;
 import 'package:analyzer/src/summary2/ast_resolver.dart';
@@ -85,15 +84,10 @@
     if (typeNode != null) {
       if (declarationList.isConst ||
           declarationList.isFinal && _enclosingClassHasConstConstructor) {
-        var astResolver = AstResolver(linker, _unitElement, _scope);
-        astResolver.resolve(
-          variable.initializer!,
-          () {
-            InferenceContext.setType(variable.initializer, typeNode.type);
-            return variable.initializer!;
-          },
-          isTopLevelVariableInitializer: true,
-        );
+        var astResolver =
+            AstResolver(linker, _unitElement, _scope, variable.initializer!);
+        astResolver.resolveExpression(() => variable.initializer!,
+            contextType: typeNode.type);
       }
     }
   }
@@ -440,12 +434,9 @@
   }
 
   void _resolveInitializer({required bool forDependencies}) {
-    var astResolver = AstResolver(_walker._linker, _unitElement, _scope);
-    astResolver.resolve(
-      _node.initializer!,
-      () => _node.initializer!,
-      buildElements: forDependencies,
-      isTopLevelVariableInitializer: true,
-    );
+    var astResolver =
+        AstResolver(_walker._linker, _unitElement, _scope, _node.initializer!);
+    astResolver.resolveExpression(() => _node.initializer!,
+        buildElements: forDependencies);
   }
 }
diff --git a/pkg/dartdev/lib/src/templates/common.dart b/pkg/dartdev/lib/src/templates/common.dart
index b849fdd..37e4bdc 100644
--- a/pkg/dartdev/lib/src/templates/common.dart
+++ b/pkg/dartdev/lib/src/templates/common.dart
@@ -12,15 +12,18 @@
 ''';
 
 final String analysisOptions = '''
-# Defines a default set of lint rules enforced for projects at Google. For
-# details and rationale, see
-# https://github.com/dart-lang/pedantic#enabled-lints.
+# This file configures the static analysis results for your project (errors,
+# warnings, and lints).
 
-include: package:pedantic/analysis_options.yaml
+# The following line activates a set of core lints for Dart apps; this is the
+# set that is used by pub.dev for scoring packages. For many projects, consider
+# changing this to specify 'package:lints/recommended.yaml'; that's an
+# additional set of lints designed to encourage good coding practices.
 
-# For lint rules and documentation, see http://dart-lang.github.io/linter/lints.
+include: package:lints/core.yaml
 
-# Uncomment to specify additional rules.
+# Uncomment the following section to specify additional rules.
+
 # linter:
 #   rules:
 #     - camel_case_types
@@ -28,6 +31,12 @@
 # analyzer:
 #   exclude:
 #     - path/to/excluded/files/**
+
+# For more information about the core and recommended set of lints, see
+# https://dart.dev/go/core-lints
+
+# For additional information about configuring this file, see
+# https://dart.dev/guides/language/analysis-options
 ''';
 
 final String changelog = '''
diff --git a/pkg/dartdev/lib/src/templates/console_full.dart b/pkg/dartdev/lib/src/templates/console_full.dart
index 78e1670..c610331 100644
--- a/pkg/dartdev/lib/src/templates/console_full.dart
+++ b/pkg/dartdev/lib/src/templates/console_full.dart
@@ -41,7 +41,7 @@
 #   path: ^1.8.0
 
 dev_dependencies:
-  pedantic: ^1.10.0
+  lints: ^1.0.0-0
   test: ^1.16.0
 ''';
 
diff --git a/pkg/dartdev/lib/src/templates/console_simple.dart b/pkg/dartdev/lib/src/templates/console_simple.dart
index 15384c6..991e3f6 100644
--- a/pkg/dartdev/lib/src/templates/console_simple.dart
+++ b/pkg/dartdev/lib/src/templates/console_simple.dart
@@ -39,7 +39,7 @@
 #   path: ^1.8.0
 
 dev_dependencies:
-  pedantic: ^1.10.0
+  lints: ^1.0.0-0
 ''';
 
 final String _readme = '''
diff --git a/pkg/dartdev/lib/src/templates/package_simple.dart b/pkg/dartdev/lib/src/templates/package_simple.dart
index 7d013fa..ca4b820 100644
--- a/pkg/dartdev/lib/src/templates/package_simple.dart
+++ b/pkg/dartdev/lib/src/templates/package_simple.dart
@@ -55,7 +55,7 @@
 #   path: ^1.8.0
 
 dev_dependencies:
-  pedantic: ^1.10.0
+  lints: ^1.0.0-0
   test: ^1.16.0
 ''';
 
diff --git a/pkg/dartdev/lib/src/templates/server_shelf.dart b/pkg/dartdev/lib/src/templates/server_shelf.dart
index b3bbba7..391a241 100644
--- a/pkg/dartdev/lib/src/templates/server_shelf.dart
+++ b/pkg/dartdev/lib/src/templates/server_shelf.dart
@@ -45,7 +45,7 @@
 
 dev_dependencies:
   http: ^0.13.0
-  pedantic: ^1.10.0
+  lints: ^1.0.0-0
   test_process: ^2.0.0
   test: ^1.15.0
 ''';
diff --git a/pkg/dartdev/lib/src/templates/web_simple.dart b/pkg/dartdev/lib/src/templates/web_simple.dart
index 12ed1ce..a42dbb2 100644
--- a/pkg/dartdev/lib/src/templates/web_simple.dart
+++ b/pkg/dartdev/lib/src/templates/web_simple.dart
@@ -39,7 +39,7 @@
 dev_dependencies:
   build_runner: ^1.10.0
   build_web_compilers: ^2.11.0
-  pedantic: ^1.9.0
+  lints: ^1.0.0-0
 ''';
 
 final String _readme = '''
diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
index 3a1e2c8..71f0bd6 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
@@ -13,6 +13,7 @@
   alternativeInvalidationStrategy,
   constFunctions,
   constantUpdate2018,
+  constructorTearoffs,
   controlFlowCollections,
   extensionMethods,
   extensionTypes,
@@ -30,6 +31,7 @@
     const Version(2, 14);
 const Version enableConstFunctionsVersion = const Version(2, 14);
 const Version enableConstantUpdate2018Version = const Version(2, 0);
+const Version enableConstructorTearoffsVersion = const Version(2, 14);
 const Version enableControlFlowCollectionsVersion = const Version(2, 0);
 const Version enableExtensionMethodsVersion = const Version(2, 6);
 const Version enableExtensionTypesVersion = const Version(2, 14);
@@ -50,6 +52,8 @@
       return ExperimentalFlag.constFunctions;
     case "constant-update-2018":
       return ExperimentalFlag.constantUpdate2018;
+    case "constructor-tearoffs":
+      return ExperimentalFlag.constructorTearoffs;
     case "control-flow-collections":
       return ExperimentalFlag.controlFlowCollections;
     case "extension-methods":
@@ -80,6 +84,7 @@
   ExperimentalFlag.alternativeInvalidationStrategy: false,
   ExperimentalFlag.constFunctions: false,
   ExperimentalFlag.constantUpdate2018: true,
+  ExperimentalFlag.constructorTearoffs: false,
   ExperimentalFlag.controlFlowCollections: true,
   ExperimentalFlag.extensionMethods: true,
   ExperimentalFlag.extensionTypes: false,
@@ -97,6 +102,7 @@
   ExperimentalFlag.alternativeInvalidationStrategy: false,
   ExperimentalFlag.constFunctions: false,
   ExperimentalFlag.constantUpdate2018: true,
+  ExperimentalFlag.constructorTearoffs: false,
   ExperimentalFlag.controlFlowCollections: true,
   ExperimentalFlag.extensionMethods: false,
   ExperimentalFlag.extensionTypes: false,
@@ -114,6 +120,7 @@
   ExperimentalFlag.alternativeInvalidationStrategy: const Version(2, 14),
   ExperimentalFlag.constFunctions: const Version(2, 14),
   ExperimentalFlag.constantUpdate2018: const Version(2, 0),
+  ExperimentalFlag.constructorTearoffs: const Version(2, 14),
   ExperimentalFlag.controlFlowCollections: const Version(2, 0),
   ExperimentalFlag.extensionMethods: const Version(2, 6),
   ExperimentalFlag.extensionTypes: const Version(2, 14),
@@ -131,6 +138,7 @@
   ExperimentalFlag.alternativeInvalidationStrategy: const Version(2, 14),
   ExperimentalFlag.constFunctions: const Version(2, 14),
   ExperimentalFlag.constantUpdate2018: const Version(2, 0),
+  ExperimentalFlag.constructorTearoffs: const Version(2, 14),
   ExperimentalFlag.controlFlowCollections: const Version(2, 0),
   ExperimentalFlag.extensionMethods: const Version(2, 6),
   ExperimentalFlag.extensionTypes: const Version(2, 14),
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
index 8f4d7e0..e31f9d4 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
@@ -223,12 +223,12 @@
     return <core::int*>[].{core::Iterable::iterator};
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::ConstIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::int*>* other) → core::Iterable<core::int*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::int*) →* self::ConstIterable::map::T* f) → core::Iterable<self::ConstIterable::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::int*) →* self::ConstIterable::map::T* toElement) → core::Iterable<self::ConstIterable::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::int*) →* core::bool* test) → core::Iterable<core::int*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::ConstIterable::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::int*) →* core::Iterable<self::ConstIterable::expand::T*>* f) → core::Iterable<self::ConstIterable::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::int*) →* core::Iterable<self::ConstIterable::expand::T*>* toElements) → core::Iterable<self::ConstIterable::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::int*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::int*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::int*, core::int*) →* core::int* combine) → core::int*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::ConstIterable::fold::T* initialValue, (self::ConstIterable::fold::T*, core::int*) →* self::ConstIterable::fold::T* combine) → self::ConstIterable::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::int*) →* core::bool* test) → core::bool*; -> core::Iterable::every
@@ -284,12 +284,12 @@
     return <core::String*>[].{core::Iterable::iterator};
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::CustomIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::String*>* other) → core::Iterable<core::String*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::String*) →* self::CustomIterable::map::T* f) → core::Iterable<self::CustomIterable::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::String*) →* self::CustomIterable::map::T* toElement) → core::Iterable<self::CustomIterable::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::String*) →* core::bool* test) → core::Iterable<core::String*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::CustomIterable::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::String*) →* core::Iterable<self::CustomIterable::expand::T*>* f) → core::Iterable<self::CustomIterable::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::String*) →* core::Iterable<self::CustomIterable::expand::T*>* toElements) → core::Iterable<self::CustomIterable::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::String*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::String*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::String*, core::String*) →* core::String* combine) → core::String*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::CustomIterable::fold::T* initialValue, (self::CustomIterable::fold::T*, core::String*) →* self::CustomIterable::fold::T* combine) → self::CustomIterable::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::String*) →* core::bool* test) → core::bool*; -> core::Iterable::every
@@ -514,7 +514,7 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///const_collections.dart:
 - CustomIterable. (from org-dartlang-testcase:///const_collections.dart:79:9)
-- IterableBase. (from org-dartlang-sdk:///sdk/lib/collection/iterable.dart:218:9)
+- IterableBase. (from org-dartlang-sdk:///sdk/lib/collection/iterable.dart:219:9)
 - WithEquals. (from org-dartlang-testcase:///const_collections.dart:72:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - CustomMap. (from org-dartlang-testcase:///const_collections.dart:84:9)
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
index 8ae1da7..eccddae 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
@@ -50,12 +50,12 @@
     ;
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::ConstIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::int*>* other) → core::Iterable<core::int*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::int*) →* self::ConstIterable::map::T* f) → core::Iterable<self::ConstIterable::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::int*) →* self::ConstIterable::map::T* toElement) → core::Iterable<self::ConstIterable::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::int*) →* core::bool* test) → core::Iterable<core::int*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::ConstIterable::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::int*) →* core::Iterable<self::ConstIterable::expand::T*>* f) → core::Iterable<self::ConstIterable::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::int*) →* core::Iterable<self::ConstIterable::expand::T*>* toElements) → core::Iterable<self::ConstIterable::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::int*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::int*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::int*, core::int*) →* core::int* combine) → core::int*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::ConstIterable::fold::T* initialValue, (self::ConstIterable::fold::T*, core::int*) →* self::ConstIterable::fold::T* combine) → self::ConstIterable::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::int*) →* core::bool* test) → core::bool*; -> core::Iterable::every
@@ -110,12 +110,12 @@
     ;
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::CustomIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::String*>* other) → core::Iterable<core::String*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::String*) →* self::CustomIterable::map::T* f) → core::Iterable<self::CustomIterable::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::String*) →* self::CustomIterable::map::T* toElement) → core::Iterable<self::CustomIterable::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::String*) →* core::bool* test) → core::Iterable<core::String*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::CustomIterable::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::String*) →* core::Iterable<self::CustomIterable::expand::T*>* f) → core::Iterable<self::CustomIterable::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::String*) →* core::Iterable<self::CustomIterable::expand::T*>* toElements) → core::Iterable<self::CustomIterable::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::String*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::String*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::String*, core::String*) →* core::String* combine) → core::String*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::CustomIterable::fold::T* initialValue, (self::CustomIterable::fold::T*, core::String*) →* self::CustomIterable::fold::T* combine) → self::CustomIterable::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::String*) →* core::bool* test) → core::bool*; -> core::Iterable::every
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
index 4f6649c..1b41513 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
@@ -223,12 +223,12 @@
     return core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator};
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::ConstIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::int*>* other) → core::Iterable<core::int*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::int*) →* self::ConstIterable::map::T* f) → core::Iterable<self::ConstIterable::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::int*) →* self::ConstIterable::map::T* toElement) → core::Iterable<self::ConstIterable::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::int*) →* core::bool* test) → core::Iterable<core::int*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::ConstIterable::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::int*) →* core::Iterable<self::ConstIterable::expand::T*>* f) → core::Iterable<self::ConstIterable::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::int*) →* core::Iterable<self::ConstIterable::expand::T*>* toElements) → core::Iterable<self::ConstIterable::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::int*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::int*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::int*, core::int*) →* core::int* combine) → core::int*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::ConstIterable::fold::T* initialValue, (self::ConstIterable::fold::T*, core::int*) →* self::ConstIterable::fold::T* combine) → self::ConstIterable::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::int*) →* core::bool* test) → core::bool*; -> core::Iterable::every
@@ -284,12 +284,12 @@
     return core::_GrowableList::•<core::String*>(0).{core::Iterable::iterator};
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::CustomIterable::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::String*>* other) → core::Iterable<core::String*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::String*) →* self::CustomIterable::map::T* f) → core::Iterable<self::CustomIterable::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::String*) →* self::CustomIterable::map::T* toElement) → core::Iterable<self::CustomIterable::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::String*) →* core::bool* test) → core::Iterable<core::String*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::CustomIterable::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::String*) →* core::Iterable<self::CustomIterable::expand::T*>* f) → core::Iterable<self::CustomIterable::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::String*) →* core::Iterable<self::CustomIterable::expand::T*>* toElements) → core::Iterable<self::CustomIterable::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::String*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::String*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::String*, core::String*) →* core::String* combine) → core::String*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::CustomIterable::fold::T* initialValue, (self::CustomIterable::fold::T*, core::String*) →* self::CustomIterable::fold::T* combine) → self::CustomIterable::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::String*) →* core::bool* test) → core::bool*; -> core::Iterable::every
@@ -514,7 +514,7 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///const_collections.dart:
 - CustomIterable. (from org-dartlang-testcase:///const_collections.dart:79:9)
-- IterableBase. (from org-dartlang-sdk:///sdk/lib/collection/iterable.dart:218:9)
+- IterableBase. (from org-dartlang-sdk:///sdk/lib/collection/iterable.dart:219:9)
 - WithEquals. (from org-dartlang-testcase:///const_collections.dart:72:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - CustomMap. (from org-dartlang-testcase:///const_collections.dart:84:9)
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.expect
index 2418880..e1e3ce5 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.expect
@@ -32,12 +32,12 @@
     ;
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* toElement) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* toElements) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::Object*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::Object*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::every
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.outline.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.outline.expect
index d815435..43d09ff 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.outline.expect
@@ -24,12 +24,12 @@
     ;
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* toElement) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* toElements) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::Object*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::Object*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::every
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.transformed.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.transformed.expect
index 2418880..e1e3ce5 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.transformed.expect
@@ -32,12 +32,12 @@
     ;
   abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*; -> core::Iterable::cast
   abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* toElement) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
   abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::where
   abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* toElements) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
   abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::Object*) →* void f) → void; -> core::Iterable::forEach
+  abstract member-signature method forEach((core::Object*) →* void action) → void; -> core::Iterable::forEach
   abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*; -> core::Iterable::reduce
   abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*; -> core::Iterable::fold
   abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::every
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index 995ce73..2d2de1c 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -1401,10 +1401,21 @@
                                          LocationSummary* locs,
                                          intptr_t deopt_id,
                                          Environment* env) {
+  ASSERT(FLAG_precompiled_mode ||
+         (deopt_id != DeoptId::kNone && (!is_optimizing() || env != nullptr)));
   EmitCallToStub(stub);
   EmitCallsiteMetadata(source, deopt_id, kind, locs, env);
 }
 
+void FlowGraphCompiler::GenerateNonLazyDeoptableStubCall(
+    const InstructionSource& source,
+    const Code& stub,
+    UntaggedPcDescriptors::Kind kind,
+    LocationSummary* locs) {
+  EmitCallToStub(stub);
+  EmitCallsiteMetadata(source, DeoptId::kNone, kind, locs, /*env=*/nullptr);
+}
+
 static const Code& StubEntryFor(const ICData& ic_data, bool optimized) {
   switch (ic_data.NumArgsTested()) {
     case 1:
@@ -2763,6 +2774,7 @@
 // - true or false in kInstanceOfResultReg.
 void FlowGraphCompiler::GenerateInstanceOf(const InstructionSource& source,
                                            intptr_t deopt_id,
+                                           Environment* env,
                                            const AbstractType& type,
                                            LocationSummary* locs) {
   ASSERT(type.IsFinalized());
@@ -2799,7 +2811,8 @@
     __ LoadUniqueObject(TypeTestABI::kDstTypeReg, type);
     __ LoadUniqueObject(TypeTestABI::kSubtypeTestCacheReg, test_cache);
     GenerateStubCall(source, StubCode::InstanceOf(),
-                     /*kind=*/UntaggedPcDescriptors::kOther, locs, deopt_id);
+                     /*kind=*/UntaggedPcDescriptors::kOther, locs, deopt_id,
+                     env);
     __ Jump(&done, compiler::Assembler::kNearJump);
   }
   __ Bind(&is_not_instance);
@@ -2864,6 +2877,7 @@
     CompileType* receiver_type,
     const InstructionSource& source,
     intptr_t deopt_id,
+    Environment* env,
     const String& dst_name,
     LocationSummary* locs) {
   ASSERT(!source.token_pos.IsClassifying());
@@ -2896,7 +2910,7 @@
     }
   }
 
-  GenerateTTSCall(source, deopt_id, type_reg, dst_type, dst_name, locs);
+  GenerateTTSCall(source, deopt_id, env, type_reg, dst_type, dst_name, locs);
   __ Bind(&done);
 }
 
@@ -2905,6 +2919,7 @@
 // time.
 void FlowGraphCompiler::GenerateTTSCall(const InstructionSource& source,
                                         intptr_t deopt_id,
+                                        Environment* env,
                                         Register reg_with_type,
                                         const AbstractType& dst_type,
                                         const String& dst_name,
@@ -2936,7 +2951,8 @@
     GenerateIndirectTTSCall(assembler(), reg_with_type, sub_type_cache_index);
   }
 
-  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kOther, locs);
+  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kOther, locs,
+                       env);
 }
 
 // Optimize assignable type check by adding inlined tests for:
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.h b/runtime/vm/compiler/backend/flow_graph_compiler.h
index f613c15..d209dc0 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.h
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.h
@@ -610,6 +610,7 @@
   void GenerateAssertAssignable(CompileType* receiver_type,
                                 const InstructionSource& source,
                                 intptr_t deopt_id,
+                                Environment* env,
                                 const String& dst_name,
                                 LocationSummary* locs);
 
@@ -620,6 +621,7 @@
 
   void GenerateTTSCall(const InstructionSource& source,
                        intptr_t deopt_id,
+                       Environment* env,
                        Register reg_with_type,
                        const AbstractType& dst_type,
                        const String& dst_name,
@@ -640,8 +642,13 @@
                         const Code& stub,
                         UntaggedPcDescriptors::Kind kind,
                         LocationSummary* locs,
-                        intptr_t deopt_id = DeoptId::kNone,
-                        Environment* env = nullptr);
+                        intptr_t deopt_id,
+                        Environment* env);
+
+  void GenerateNonLazyDeoptableStubCall(const InstructionSource& source,
+                                        const Code& stub,
+                                        UntaggedPcDescriptors::Kind kind,
+                                        LocationSummary* locs);
 
   void GeneratePatchableCall(const InstructionSource& source,
                              const Code& stub,
@@ -665,6 +672,7 @@
 
   void GenerateInstanceOf(const InstructionSource& source,
                           intptr_t deopt_id,
+                          Environment* env,
                           const AbstractType& type,
                           LocationSummary* locs);
 
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index 2885afe..a506536 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -264,6 +264,7 @@
     CompileType* receiver_type,
     const InstructionSource& source,
     intptr_t deopt_id,
+    Environment* env,
     const String& dst_name,
     LocationSummary* locs) {
   ASSERT(!source.token_pos.IsClassifying());
@@ -287,18 +288,20 @@
     // kDstTypeReg should already contain the destination type.
     const bool null_safety =
         IsolateGroup::Current()->use_strict_null_safety_checks();
-    GenerateStubCall(source,
-                     null_safety ? StubCode::TypeIsTopTypeForSubtypingNullSafe()
-                                 : StubCode::TypeIsTopTypeForSubtyping(),
-                     UntaggedPcDescriptors::kOther, locs, deopt_id);
+    GenerateNonLazyDeoptableStubCall(
+        source,
+        null_safety ? StubCode::TypeIsTopTypeForSubtypingNullSafe()
+                    : StubCode::TypeIsTopTypeForSubtyping(),
+        UntaggedPcDescriptors::kOther, locs);
     // TypeTestABI::kSubtypeTestCacheReg is 0 if the type is a top type.
     __ BranchIfZero(TypeTestABI::kSubtypeTestCacheReg, &is_assignable,
                     compiler::Assembler::kNearJump);
 
-    GenerateStubCall(source,
-                     null_safety ? StubCode::NullIsAssignableToTypeNullSafe()
-                                 : StubCode::NullIsAssignableToType(),
-                     UntaggedPcDescriptors::kOther, locs, deopt_id);
+    GenerateNonLazyDeoptableStubCall(
+        source,
+        null_safety ? StubCode::NullIsAssignableToTypeNullSafe()
+                    : StubCode::NullIsAssignableToType(),
+        UntaggedPcDescriptors::kOther, locs);
     // TypeTestABI::kSubtypeTestCacheReg is 0 if the object is null and is
     // assignable.
     __ BranchIfZero(TypeTestABI::kSubtypeTestCacheReg, &is_assignable,
@@ -344,7 +347,7 @@
   __ LoadObject(AssertAssignableStubABI::kSubtypeTestReg, test_cache);
 
   GenerateStubCall(source, StubCode::AssertAssignable(),
-                   UntaggedPcDescriptors::kOther, locs, deopt_id);
+                   UntaggedPcDescriptors::kOther, locs, deopt_id, env);
 
   __ Drop(AssertAssignableInstr::kNumInputs - 1);
   __ PopRegister(TypeTestABI::kInstanceReg);
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 66a645f..9d6c4a5 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -51,6 +51,9 @@
             true,
             "Generate special IC stubs for two args Smi operations");
 
+DECLARE_FLAG(bool, inline_alloc);
+DECLARE_FLAG(bool, use_slow_path);
+
 class SubclassFinder {
  public:
   SubclassFinder(Zone* zone,
@@ -1005,7 +1008,7 @@
   const Code& stub = Code::ZoneHandle(
       compiler->zone(), StubCode::GetAllocationStubForTypedData(class_id()));
   compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
-                             locs(), deopt_id());
+                             locs(), deopt_id(), env());
 }
 
 bool StoreInstanceFieldInstr::IsUnboxedDartFieldStore() const {
@@ -4316,7 +4319,7 @@
         compiler->zone(), object_store->init_static_field_stub());
     compiler->GenerateStubCall(source(), init_static_field_stub,
                                /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                               deopt_id());
+                               deopt_id(), env());
     __ Bind(&no_call);
   }
 }
@@ -4373,7 +4376,7 @@
 
   compiler->GenerateStubCall(source(), stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
   __ Bind(&no_call);
 }
 
@@ -4393,7 +4396,7 @@
 
   compiler->GenerateStubCall(source(), throw_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
   // Issue(dartbug.com/41353): Right now we have to emit an extra breakpoint
   // instruction: The ThrowInstr will terminate the current block. The very
   // next machine code instruction might get a pc descriptor attached with a
@@ -4421,7 +4424,7 @@
   compiler->SetNeedsStackTrace(catch_try_index());
   compiler->GenerateStubCall(source(), re_throw_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
   // Issue(dartbug.com/41353): Right now we have to emit an extra breakpoint
   // instruction: The ThrowInstr will terminate the current block. The very
   // next machine code instruction might get a pc descriptor attached with a
@@ -5318,7 +5321,7 @@
 
 void AssertAssignableInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
   compiler->GenerateAssertAssignable(value()->Type(), source(), deopt_id(),
-                                     dst_name(), locs());
+                                     env(), dst_name(), locs());
   ASSERT(locs()->in(kInstancePos).reg() == locs()->out(0).reg());
 }
 
@@ -5345,7 +5348,8 @@
 
 void AssertSubtypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
   compiler->GenerateStubCall(source(), StubCode::AssertSubtype(),
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
 }
 
 LocationSummary* InstantiateTypeInstr::MakeLocationSummary(Zone* zone,
@@ -5429,7 +5433,7 @@
   }
 
   compiler->GenerateStubCall(source(), GetStub(), UntaggedPcDescriptors::kOther,
-                             locs(), deopt_id());
+                             locs(), deopt_id(), env());
   __ Bind(&type_arguments_instantiated);
 }
 
@@ -5558,8 +5562,14 @@
 
   locs->live_registers()->Remove(Location::RegisterLocation(result_));
   compiler->SaveLiveRegisters(locs);
-  compiler->GenerateStubCall(InstructionSource(),  // No token position.
-                             stub, UntaggedPcDescriptors::kOther, locs);
+  // Box allocation slow paths cannot lazy-deopt.
+  ASSERT(!kAllocateMintRuntimeEntry.can_lazy_deopt() &&
+         !kAllocateDoubleRuntimeEntry.can_lazy_deopt() &&
+         !kAllocateFloat32x4RuntimeEntry.can_lazy_deopt() &&
+         !kAllocateFloat64x2RuntimeEntry.can_lazy_deopt());
+  compiler->GenerateNonLazyDeoptableStubCall(
+      InstructionSource(),  // No token position.
+      stub, UntaggedPcDescriptors::kOther, locs);
   __ MoveRegister(result_, AllocateBoxABI::kResultReg);
   compiler->RestoreLiveRegisters(locs);
   __ Jump(exit_label());
@@ -5577,8 +5587,12 @@
     auto slow_path = new BoxAllocationSlowPath(instruction, cls, result);
     compiler->AddSlowPathCode(slow_path);
 
-    __ TryAllocate(cls, slow_path->entry_label(), compiler::Assembler::kFarJump,
-                   result, temp);
+    if (FLAG_inline_alloc && !FLAG_use_slow_path) {
+      __ TryAllocate(cls, slow_path->entry_label(),
+                     compiler::Assembler::kFarJump, result, temp);
+    } else {
+      __ Jump(slow_path->entry_label());
+    }
     __ Bind(slow_path->exit_label());
   }
 }
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index bd70c29..4b5c5fa 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -829,7 +829,7 @@
   __ b(&done, NOT_ZERO);
   compiler->GenerateStubCall(source(), assert_boolean_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
   __ Bind(&done);
 }
 
@@ -1316,8 +1316,10 @@
     compiler->GeneratePatchableCall(source(), *stub,
                                     UntaggedPcDescriptors::kOther, locs());
   } else {
-    compiler->GenerateStubCall(source(), *stub, UntaggedPcDescriptors::kOther,
-                               locs());
+    // We can never lazy-deopt here because natives are never optimized.
+    ASSERT(!compiler->is_optimizing());
+    compiler->GenerateNonLazyDeoptableStubCall(
+        source(), *stub, UntaggedPcDescriptors::kOther, locs());
   }
   __ Pop(result);
 
@@ -2995,7 +2997,7 @@
   ASSERT(locs()->in(1).reg() == TypeTestABI::kInstantiatorTypeArgumentsReg);
   ASSERT(locs()->in(2).reg() == TypeTestABI::kFunctionTypeArgumentsReg);
 
-  compiler->GenerateInstanceOf(source(), deopt_id(), type(), locs());
+  compiler->GenerateInstanceOf(source(), deopt_id(), env(), type(), locs());
   ASSERT(locs()->out(0).reg() == R0);
 }
 
@@ -3102,7 +3104,8 @@
   const auto& allocate_array_stub =
       Code::ZoneHandle(compiler->zone(), object_store->allocate_array_stub());
   compiler->GenerateStubCall(source(), allocate_array_stub,
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
   __ Bind(&done);
   ASSERT(locs()->out(0).reg() == kResultReg);
 }
@@ -3449,7 +3452,8 @@
       Code::ZoneHandle(compiler->zone(), object_store->allocate_context_stub());
   __ LoadImmediate(R1, num_context_variables());
   compiler->GenerateStubCall(source(), allocate_context_stub,
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
 }
 
 LocationSummary* CloneContextInstr::MakeLocationSummary(Zone* zone,
@@ -3472,7 +3476,7 @@
       Code::ZoneHandle(compiler->zone(), object_store->clone_context_stub());
   compiler->GenerateStubCall(source(), clone_context_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
 }
 
 LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Zone* zone,
@@ -7424,7 +7428,7 @@
   const Code& stub = Code::ZoneHandle(
       compiler->zone(), StubCode::GetAllocationStubForClass(cls()));
   compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
-                             locs(), deopt_id());
+                             locs(), deopt_id(), env());
 }
 
 void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index 95e5666..e45eb95 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -735,7 +735,7 @@
   __ tbnz(&done, AssertBooleanABI::kObjectReg, kBoolVsNullBitPosition);
   compiler->GenerateStubCall(source(), assert_boolean_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
   __ Bind(&done);
 }
 
@@ -1205,8 +1205,10 @@
     compiler->GeneratePatchableCall(source(), *stub,
                                     UntaggedPcDescriptors::kOther, locs());
   } else {
-    compiler->GenerateStubCall(source(), *stub, UntaggedPcDescriptors::kOther,
-                               locs());
+    // We can never lazy-deopt here because natives are never optimized.
+    ASSERT(!compiler->is_optimizing());
+    compiler->GenerateNonLazyDeoptableStubCall(
+        source(), *stub, UntaggedPcDescriptors::kOther, locs());
   }
   __ Pop(result);
 
@@ -2610,7 +2612,7 @@
   ASSERT(locs()->in(1).reg() == TypeTestABI::kInstantiatorTypeArgumentsReg);
   ASSERT(locs()->in(2).reg() == TypeTestABI::kFunctionTypeArgumentsReg);
 
-  compiler->GenerateInstanceOf(source(), deopt_id(), type(), locs());
+  compiler->GenerateInstanceOf(source(), deopt_id(), env(), type(), locs());
   ASSERT(locs()->out(0).reg() == R0);
 }
 
@@ -2717,7 +2719,8 @@
   const auto& allocate_array_stub =
       Code::ZoneHandle(compiler->zone(), object_store->allocate_array_stub());
   compiler->GenerateStubCall(source(), allocate_array_stub,
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
   ASSERT(locs()->out(0).reg() == kResultReg);
   __ Bind(&done);
 }
@@ -3033,7 +3036,8 @@
       Code::ZoneHandle(compiler->zone(), object_store->allocate_context_stub());
   __ LoadImmediate(R1, num_context_variables());
   compiler->GenerateStubCall(source(), allocate_context_stub,
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
 }
 
 LocationSummary* CloneContextInstr::MakeLocationSummary(Zone* zone,
@@ -3056,7 +3060,7 @@
       Code::ZoneHandle(compiler->zone(), object_store->clone_context_stub());
   compiler->GenerateStubCall(source(), clone_context_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
 }
 
 LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Zone* zone,
@@ -6517,7 +6521,7 @@
   const Code& stub = Code::ZoneHandle(
       compiler->zone(), StubCode::GetAllocationStubForClass(cls()));
   compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
-                             locs(), deopt_id());
+                             locs(), deopt_id(), env());
 }
 
 void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index c1aeb05..f1143d9 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -528,7 +528,7 @@
   __ j(NOT_ZERO, &done, compiler::Assembler::kNearJump);
   compiler->GenerateStubCall(source(), assert_boolean_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
   __ Bind(&done);
 }
 
@@ -989,8 +989,10 @@
   const compiler::ExternalLabel label(
       reinterpret_cast<uword>(native_c_function()));
   __ movl(ECX, compiler::Immediate(label.address()));
-  compiler->GenerateStubCall(source(), *stub, UntaggedPcDescriptors::kOther,
-                             locs());
+  // We can never lazy-deopt here because natives are never optimized.
+  ASSERT(!compiler->is_optimizing());
+  compiler->GenerateNonLazyDeoptableStubCall(
+      source(), *stub, UntaggedPcDescriptors::kOther, locs());
 
   __ popl(result);
 
@@ -2339,7 +2341,7 @@
   ASSERT(locs()->in(1).reg() == TypeTestABI::kInstantiatorTypeArgumentsReg);
   ASSERT(locs()->in(2).reg() == TypeTestABI::kFunctionTypeArgumentsReg);
 
-  compiler->GenerateInstanceOf(source(), deopt_id(), type(), locs());
+  compiler->GenerateInstanceOf(source(), deopt_id(), env(), type(), locs());
   ASSERT(locs()->out(0).reg() == EAX);
 }
 
@@ -2440,7 +2442,8 @@
   const auto& allocate_array_stub =
       Code::ZoneHandle(compiler->zone(), object_store->allocate_array_stub());
   compiler->GenerateStubCall(source(), allocate_array_stub,
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
   __ Bind(&done);
   ASSERT(locs()->out(0).reg() == kResultReg);
 }
@@ -2738,7 +2741,8 @@
 
   __ movl(EDX, compiler::Immediate(num_context_variables()));
   compiler->GenerateStubCall(source(), StubCode::AllocateContext(),
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
 }
 
 LocationSummary* CloneContextInstr::MakeLocationSummary(Zone* zone,
@@ -2758,7 +2762,7 @@
 
   compiler->GenerateStubCall(source(), StubCode::CloneContext(),
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
 }
 
 LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Zone* zone,
@@ -6630,7 +6634,7 @@
   const Code& stub = Code::ZoneHandle(
       compiler->zone(), StubCode::GetAllocationStubForClass(cls()));
   compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
-                             locs(), deopt_id());
+                             locs(), deopt_id(), env());
 }
 
 void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index b60e119..10fae2a 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -688,7 +688,7 @@
   __ j(NOT_ZERO, &done, compiler::Assembler::kNearJump);
   compiler->GenerateStubCall(source(), assert_boolean_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
   __ Bind(&done);
 }
 
@@ -1160,8 +1160,10 @@
         reinterpret_cast<uword>(native_c_function()));
     __ LoadNativeEntry(RBX, &label,
                        compiler::ObjectPoolBuilderEntry::kNotPatchable);
-    compiler->GenerateStubCall(source(), *stub, UntaggedPcDescriptors::kOther,
-                               locs());
+    // We can never lazy-deopt here because natives are never optimized.
+    ASSERT(!compiler->is_optimizing());
+    compiler->GenerateNonLazyDeoptableStubCall(
+        source(), *stub, UntaggedPcDescriptors::kOther, locs());
   }
   __ popq(result);
 
@@ -2698,7 +2700,7 @@
   ASSERT(locs()->in(1).reg() == TypeTestABI::kInstantiatorTypeArgumentsReg);
   ASSERT(locs()->in(2).reg() == TypeTestABI::kFunctionTypeArgumentsReg);
 
-  compiler->GenerateInstanceOf(source(), deopt_id(), type(), locs());
+  compiler->GenerateInstanceOf(source(), deopt_id(), env(), type(), locs());
   ASSERT(locs()->out(0).reg() == RAX);
 }
 
@@ -2804,7 +2806,8 @@
   const auto& allocate_array_stub =
       Code::ZoneHandle(compiler->zone(), object_store->allocate_array_stub());
   compiler->GenerateStubCall(source(), allocate_array_stub,
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
   __ Bind(&done);
   ASSERT(locs()->out(0).reg() == kResultReg);
 }
@@ -3132,7 +3135,8 @@
 
   __ LoadImmediate(R10, compiler::Immediate(num_context_variables()));
   compiler->GenerateStubCall(source(), allocate_context_stub,
-                             UntaggedPcDescriptors::kOther, locs(), deopt_id());
+                             UntaggedPcDescriptors::kOther, locs(), deopt_id(),
+                             env());
 }
 
 LocationSummary* CloneContextInstr::MakeLocationSummary(Zone* zone,
@@ -3155,7 +3159,7 @@
       Code::ZoneHandle(compiler->zone(), object_store->clone_context_stub());
   compiler->GenerateStubCall(source(), clone_context_stub,
                              /*kind=*/UntaggedPcDescriptors::kOther, locs(),
-                             deopt_id());
+                             deopt_id(), env());
 }
 
 LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Zone* zone,
@@ -6921,7 +6925,7 @@
   const Code& stub = Code::ZoneHandle(
       compiler->zone(), StubCode::GetAllocationStubForClass(cls()));
   compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
-                             locs(), deopt_id());
+                             locs(), deopt_id(), env());
 }
 
 void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc
index 9832335..6b414a1 100644
--- a/runtime/vm/compiler/runtime_api.cc
+++ b/runtime/vm/compiler/runtime_api.cc
@@ -186,6 +186,11 @@
   return Class::Handle(object_store->float64x2_class());
 }
 
+const Class& Int32x4Class() {
+  auto object_store = IsolateGroup::Current()->object_store();
+  return Class::Handle(object_store->int32x4_class());
+}
+
 const Array& OneArgArgumentsDescriptor() {
   return Array::ZoneHandle(
       ArgumentsDescriptor::NewBoxed(/*type_args_len=*/0, /*num_arguments=*/1));
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 944cf01..a1e4ed8 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -116,6 +116,7 @@
 const Class& DoubleClass();
 const Class& Float32x4Class();
 const Class& Float64x2Class();
+const Class& Int32x4Class();
 const Array& OneArgArgumentsDescriptor();
 
 template <typename To, typename From>
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 2317e29..04ee986 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -245,9 +245,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    716;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     720;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    724;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -272,7 +272,7 @@
     Thread_allocate_object_slow_entry_point_offset = 288;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 756;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 760;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -283,7 +283,7 @@
     Thread_call_to_runtime_entry_point_offset = 268;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 764;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -301,7 +301,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    736;
+    740;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -321,13 +321,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    724;
+    728;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    752;
+    756;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 768;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 772;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     68;
 static constexpr dart::compiler::target::word
@@ -369,11 +369,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 728;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 732;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 732;
+    Thread_saved_shadow_call_stack_offset = 736;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    740;
+    744;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -407,9 +407,9 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     36;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 744;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 748;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 748;
+    Thread_callback_stack_return_offset = 752;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -467,7 +467,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        684, 688, 692, 696, 700, -1, 704, -1, 708, 712, -1, -1, -1, -1, -1, -1};
+        688, 692, 696, 700, 704, -1, 708, -1, 712, 716, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -785,9 +785,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1448;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1456;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1464;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -813,7 +813,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -824,7 +824,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1544;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1552;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -842,7 +842,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1488;
+    1496;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -862,14 +862,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1464;
+    1472;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1520;
+    1528;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -911,11 +911,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1472;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1480;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1480;
+    Thread_saved_shadow_call_stack_offset = 1488;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1496;
+    1504;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -950,9 +950,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1504;
+    1512;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1512;
+    Thread_callback_stack_return_offset = 1520;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -1011,8 +1011,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
-        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
+        1368, 1376, 1384, 1392, -1,   -1,   1400, 1408,
+        1416, 1424, 1432, -1,   1440, 1448, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -1328,9 +1328,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    684;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     688;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    692;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -1355,7 +1355,7 @@
     Thread_allocate_object_slow_entry_point_offset = 288;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 724;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -1366,7 +1366,7 @@
     Thread_call_to_runtime_entry_point_offset = 268;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 732;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 736;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -1384,7 +1384,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    704;
+    708;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -1404,13 +1404,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    692;
+    696;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    720;
+    724;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 736;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 740;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     68;
 static constexpr dart::compiler::target::word
@@ -1452,11 +1452,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 696;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 700;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 700;
+    Thread_saved_shadow_call_stack_offset = 704;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    708;
+    712;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -1490,9 +1490,9 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     36;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 712;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 716;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 716;
+    Thread_callback_stack_return_offset = 720;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -1865,9 +1865,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1512;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1520;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1528;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -1893,7 +1893,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1592;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -1904,7 +1904,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1608;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -1922,7 +1922,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -1942,14 +1942,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1584;
+    1592;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -1991,11 +1991,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1536;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1544;
+    Thread_saved_shadow_call_stack_offset = 1552;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1560;
+    1568;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -2030,9 +2030,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1576;
+    Thread_callback_stack_return_offset = 1584;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -2091,9 +2091,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
-        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
-        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
+        1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448,
+        1456, 1464, 1472, 1480, -1,   -1,   -1,   -1,   1488, 1496, -1,
+        -1,   -1,   1504, 1512, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -2410,9 +2410,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1448;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1456;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1464;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -2438,7 +2438,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2449,7 +2449,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1544;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1552;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -2467,7 +2467,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1488;
+    1496;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -2487,14 +2487,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1464;
+    1472;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1520;
+    1528;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -2536,11 +2536,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1472;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1480;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1480;
+    Thread_saved_shadow_call_stack_offset = 1488;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1496;
+    1504;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -2575,9 +2575,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1504;
+    1512;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1512;
+    Thread_callback_stack_return_offset = 1520;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -2636,8 +2636,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
-        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
+        1368, 1376, 1384, 1392, -1,   -1,   1400, 1408,
+        1416, 1424, 1432, -1,   1440, 1448, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -2954,9 +2954,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1512;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1520;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1528;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -2982,7 +2982,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1592;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2993,7 +2993,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1608;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -3011,7 +3011,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -3031,14 +3031,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1584;
+    1592;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -3080,11 +3080,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1536;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1544;
+    Thread_saved_shadow_call_stack_offset = 1552;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1560;
+    1568;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -3119,9 +3119,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1576;
+    Thread_callback_stack_return_offset = 1584;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -3180,9 +3180,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
-        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
-        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
+        1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448,
+        1456, 1464, 1472, 1480, -1,   -1,   -1,   -1,   1488, 1496, -1,
+        -1,   -1,   1504, 1512, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -3494,9 +3494,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    716;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     720;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    724;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -3521,7 +3521,7 @@
     Thread_allocate_object_slow_entry_point_offset = 288;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 756;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 760;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -3532,7 +3532,7 @@
     Thread_call_to_runtime_entry_point_offset = 268;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 764;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -3550,7 +3550,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    736;
+    740;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -3570,13 +3570,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    724;
+    728;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    752;
+    756;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 768;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 772;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     68;
 static constexpr dart::compiler::target::word
@@ -3618,11 +3618,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 728;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 732;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 732;
+    Thread_saved_shadow_call_stack_offset = 736;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    740;
+    744;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -3656,9 +3656,9 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     36;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 744;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 748;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 748;
+    Thread_callback_stack_return_offset = 752;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -3716,7 +3716,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        684, 688, 692, 696, 700, -1, 704, -1, 708, 712, -1, -1, -1, -1, -1, -1};
+        688, 692, 696, 700, 704, -1, 708, -1, 712, 716, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -4028,9 +4028,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1448;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1456;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1464;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -4056,7 +4056,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -4067,7 +4067,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1544;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1552;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -4085,7 +4085,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1488;
+    1496;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -4105,14 +4105,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1464;
+    1472;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1520;
+    1528;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -4154,11 +4154,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1472;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1480;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1480;
+    Thread_saved_shadow_call_stack_offset = 1488;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1496;
+    1504;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -4193,9 +4193,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1504;
+    1512;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1512;
+    Thread_callback_stack_return_offset = 1520;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -4254,8 +4254,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
-        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
+        1368, 1376, 1384, 1392, -1,   -1,   1400, 1408,
+        1416, 1424, 1432, -1,   1440, 1448, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -4565,9 +4565,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    684;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     688;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    692;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -4592,7 +4592,7 @@
     Thread_allocate_object_slow_entry_point_offset = 288;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 196;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 724;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 112;
@@ -4603,7 +4603,7 @@
     Thread_call_to_runtime_entry_point_offset = 268;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 136;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 732;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 736;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -4621,7 +4621,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    704;
+    708;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -4641,13 +4641,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    692;
+    696;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    720;
+    724;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 44;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 736;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 740;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     68;
 static constexpr dart::compiler::target::word
@@ -4689,11 +4689,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 696;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 700;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 700;
+    Thread_saved_shadow_call_stack_offset = 704;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    708;
+    712;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -4727,9 +4727,9 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     36;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 40;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 712;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 716;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 716;
+    Thread_callback_stack_return_offset = 720;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 16;
@@ -5096,9 +5096,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1512;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1520;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1528;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -5124,7 +5124,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1592;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -5135,7 +5135,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1608;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -5153,7 +5153,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -5173,14 +5173,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1584;
+    1592;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -5222,11 +5222,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1536;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1544;
+    Thread_saved_shadow_call_stack_offset = 1552;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1560;
+    1568;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -5261,9 +5261,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1576;
+    Thread_callback_stack_return_offset = 1584;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -5322,9 +5322,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
-        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
-        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
+        1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448,
+        1456, 1464, 1472, 1480, -1,   -1,   -1,   -1,   1488, 1496, -1,
+        -1,   -1,   1504, 1512, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -5635,9 +5635,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1448;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1456;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1464;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -5663,7 +5663,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -5674,7 +5674,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1544;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1552;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -5692,7 +5692,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1488;
+    1496;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -5712,14 +5712,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1464;
+    1472;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1520;
+    1528;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -5761,11 +5761,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1472;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1480;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1480;
+    Thread_saved_shadow_call_stack_offset = 1488;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1496;
+    1504;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -5800,9 +5800,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1504;
+    1512;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1512;
+    Thread_callback_stack_return_offset = 1520;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -5861,8 +5861,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
-        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
+        1368, 1376, 1384, 1392, -1,   -1,   1400, 1408,
+        1416, 1424, 1432, -1,   1440, 1448, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -6173,9 +6173,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1512;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1520;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1528;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -6201,7 +6201,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1592;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -6212,7 +6212,7 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1608;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
@@ -6230,7 +6230,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -6250,14 +6250,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1584;
+    1592;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     136;
 static constexpr dart::compiler::target::word
@@ -6299,11 +6299,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1536;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1544;
+    Thread_saved_shadow_call_stack_offset = 1552;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1560;
+    1568;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -6338,9 +6338,9 @@
     72;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1576;
+    Thread_callback_stack_return_offset = 1584;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -6399,9 +6399,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
-        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
-        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
+        1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448,
+        1456, 1464, 1472, 1480, -1,   -1,   -1,   -1,   1488, 1496, -1,
+        -1,   -1,   1504, 1512, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -6747,9 +6747,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 716;
+    AOT_Thread_active_exception_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 720;
+    AOT_Thread_active_stacktrace_offset = 724;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -6775,7 +6775,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 196;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    756;
+    760;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -6788,7 +6788,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 136;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    764;
+    768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -6807,7 +6807,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 736;
+    AOT_Thread_execution_state_offset = 740;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -6827,14 +6827,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 724;
+    AOT_Thread_global_object_pool_offset = 728;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 752;
+    AOT_Thread_exit_through_ffi_offset = 756;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 44;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    768;
+    772;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 68;
 static constexpr dart::compiler::target::word
@@ -6878,11 +6878,11 @@
     104;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 728;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 732;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 732;
+    AOT_Thread_saved_shadow_call_stack_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 740;
+    AOT_Thread_safepoint_state_offset = 744;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -6919,9 +6919,9 @@
     AOT_Thread_write_barrier_mask_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    744;
+    748;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 748;
+    AOT_Thread_callback_stack_return_offset = 752;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -6992,7 +6992,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        684, 688, 692, 696, 700, -1, 704, -1, 708, 712, -1, -1, -1, -1, -1, -1};
+        688, 692, 696, 700, 704, -1, 708, -1, 712, 716, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     12;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -7349,9 +7349,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1448;
+    AOT_Thread_active_exception_offset = 1456;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1456;
+    AOT_Thread_active_stacktrace_offset = 1464;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -7377,7 +7377,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -7390,7 +7390,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1544;
+    1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -7409,7 +7409,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1488;
+    AOT_Thread_execution_state_offset = 1496;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -7429,14 +7429,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1464;
+    AOT_Thread_global_object_pool_offset = 1472;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1520;
+    AOT_Thread_exit_through_ffi_offset = 1528;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -7481,11 +7481,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1472;
+    1480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1480;
+    AOT_Thread_saved_shadow_call_stack_offset = 1488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1496;
+    AOT_Thread_safepoint_state_offset = 1504;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -7522,9 +7522,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1504;
+    1512;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1512;
+    AOT_Thread_callback_stack_return_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -7596,8 +7596,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
-        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
+        1368, 1376, 1384, 1392, -1,   -1,   1400, 1408,
+        1416, 1424, 1432, -1,   1440, 1448, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -7957,9 +7957,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1512;
+    AOT_Thread_active_exception_offset = 1520;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1520;
+    AOT_Thread_active_stacktrace_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -7985,7 +7985,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1592;
+    1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -7998,7 +7998,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1608;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -8017,7 +8017,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1552;
+    AOT_Thread_execution_state_offset = 1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -8037,14 +8037,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1528;
+    AOT_Thread_global_object_pool_offset = 1536;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1584;
+    AOT_Thread_exit_through_ffi_offset = 1592;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -8089,11 +8089,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1536;
+    1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1544;
+    AOT_Thread_saved_shadow_call_stack_offset = 1552;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1560;
+    AOT_Thread_safepoint_state_offset = 1568;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -8130,9 +8130,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1576;
+    AOT_Thread_callback_stack_return_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -8204,9 +8204,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
-        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
-        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
+        1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448,
+        1456, 1464, 1472, 1480, -1,   -1,   -1,   -1,   1488, 1496, -1,
+        -1,   -1,   1504, 1512, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -8563,9 +8563,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1448;
+    AOT_Thread_active_exception_offset = 1456;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1456;
+    AOT_Thread_active_stacktrace_offset = 1464;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -8591,7 +8591,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -8604,7 +8604,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1544;
+    1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -8623,7 +8623,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1488;
+    AOT_Thread_execution_state_offset = 1496;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -8643,14 +8643,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1464;
+    AOT_Thread_global_object_pool_offset = 1472;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1520;
+    AOT_Thread_exit_through_ffi_offset = 1528;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -8695,11 +8695,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1472;
+    1480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1480;
+    AOT_Thread_saved_shadow_call_stack_offset = 1488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1496;
+    AOT_Thread_safepoint_state_offset = 1504;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -8736,9 +8736,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1504;
+    1512;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1512;
+    AOT_Thread_callback_stack_return_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -8810,8 +8810,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
-        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
+        1368, 1376, 1384, 1392, -1,   -1,   1400, 1408,
+        1416, 1424, 1432, -1,   1440, 1448, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -9168,9 +9168,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1512;
+    AOT_Thread_active_exception_offset = 1520;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1520;
+    AOT_Thread_active_stacktrace_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -9196,7 +9196,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1592;
+    1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -9209,7 +9209,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1608;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -9228,7 +9228,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1552;
+    AOT_Thread_execution_state_offset = 1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -9248,14 +9248,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1528;
+    AOT_Thread_global_object_pool_offset = 1536;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1584;
+    AOT_Thread_exit_through_ffi_offset = 1592;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -9300,11 +9300,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1536;
+    1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1544;
+    AOT_Thread_saved_shadow_call_stack_offset = 1552;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1560;
+    AOT_Thread_safepoint_state_offset = 1568;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -9341,9 +9341,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1576;
+    AOT_Thread_callback_stack_return_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -9415,9 +9415,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
-        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
-        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
+        1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448,
+        1456, 1464, 1472, 1480, -1,   -1,   -1,   -1,   1488, 1496, -1,
+        -1,   -1,   1504, 1512, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -9768,9 +9768,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 368;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 716;
+    AOT_Thread_active_exception_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 720;
+    AOT_Thread_active_stacktrace_offset = 724;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 120;
 static constexpr dart::compiler::target::word
@@ -9796,7 +9796,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 196;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    756;
+    760;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 332;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -9809,7 +9809,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 136;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    764;
+    768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 48;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -9828,7 +9828,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 736;
+    AOT_Thread_execution_state_offset = 740;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
@@ -9848,14 +9848,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 364;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 724;
+    AOT_Thread_global_object_pool_offset = 728;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 132;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 752;
+    AOT_Thread_exit_through_ffi_offset = 756;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 44;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    768;
+    772;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 68;
 static constexpr dart::compiler::target::word
@@ -9899,11 +9899,11 @@
     104;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 336;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 728;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 732;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 732;
+    AOT_Thread_saved_shadow_call_stack_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 740;
+    AOT_Thread_safepoint_state_offset = 744;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 240;
 static constexpr dart::compiler::target::word
@@ -9940,9 +9940,9 @@
     AOT_Thread_write_barrier_mask_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    744;
+    748;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 748;
+    AOT_Thread_callback_stack_return_offset = 752;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -10013,7 +10013,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        684, 688, 692, 696, 700, -1, 704, -1, 708, 712, -1, -1, -1, -1, -1, -1};
+        688, 692, 696, 700, 704, -1, 708, -1, 712, 716, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     12;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -10363,9 +10363,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1448;
+    AOT_Thread_active_exception_offset = 1456;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1456;
+    AOT_Thread_active_stacktrace_offset = 1464;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -10391,7 +10391,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -10404,7 +10404,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1544;
+    1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -10423,7 +10423,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1488;
+    AOT_Thread_execution_state_offset = 1496;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -10443,14 +10443,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1464;
+    AOT_Thread_global_object_pool_offset = 1472;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1520;
+    AOT_Thread_exit_through_ffi_offset = 1528;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -10495,11 +10495,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1472;
+    1480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1480;
+    AOT_Thread_saved_shadow_call_stack_offset = 1488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1496;
+    AOT_Thread_safepoint_state_offset = 1504;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -10536,9 +10536,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1504;
+    1512;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1512;
+    AOT_Thread_callback_stack_return_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -10610,8 +10610,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
-        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
+        1368, 1376, 1384, 1392, -1,   -1,   1400, 1408,
+        1416, 1424, 1432, -1,   1440, 1448, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -10964,9 +10964,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1512;
+    AOT_Thread_active_exception_offset = 1520;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1520;
+    AOT_Thread_active_stacktrace_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -10992,7 +10992,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1592;
+    1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -11005,7 +11005,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1608;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -11024,7 +11024,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1552;
+    AOT_Thread_execution_state_offset = 1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -11044,14 +11044,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1528;
+    AOT_Thread_global_object_pool_offset = 1536;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1584;
+    AOT_Thread_exit_through_ffi_offset = 1592;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -11096,11 +11096,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1536;
+    1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1544;
+    AOT_Thread_saved_shadow_call_stack_offset = 1552;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1560;
+    AOT_Thread_safepoint_state_offset = 1568;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -11137,9 +11137,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1576;
+    AOT_Thread_callback_stack_return_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -11211,9 +11211,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
-        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
-        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
+        1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448,
+        1456, 1464, 1472, 1480, -1,   -1,   -1,   -1,   1488, 1496, -1,
+        -1,   -1,   1504, 1512, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -11563,9 +11563,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1448;
+    AOT_Thread_active_exception_offset = 1456;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1456;
+    AOT_Thread_active_stacktrace_offset = 1464;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -11591,7 +11591,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1528;
+    1536;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -11604,7 +11604,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1544;
+    1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -11623,7 +11623,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1488;
+    AOT_Thread_execution_state_offset = 1496;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -11643,14 +11643,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1464;
+    AOT_Thread_global_object_pool_offset = 1472;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1520;
+    AOT_Thread_exit_through_ffi_offset = 1528;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -11695,11 +11695,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1472;
+    1480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1480;
+    AOT_Thread_saved_shadow_call_stack_offset = 1488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1496;
+    AOT_Thread_safepoint_state_offset = 1504;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -11736,9 +11736,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1504;
+    1512;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1512;
+    AOT_Thread_callback_stack_return_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -11810,8 +11810,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, -1,   -1,   1392, 1400,
-        1408, 1416, 1424, -1,   1432, 1440, -1,   -1};
+        1368, 1376, 1384, 1392, -1,   -1,   1400, 1408,
+        1416, 1424, 1432, -1,   1440, 1448, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -12161,9 +12161,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1512;
+    AOT_Thread_active_exception_offset = 1520;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1520;
+    AOT_Thread_active_stacktrace_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -12189,7 +12189,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1592;
+    1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -12202,7 +12202,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1608;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 96;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
@@ -12221,7 +12221,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1552;
+    AOT_Thread_execution_state_offset = 1560;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -12241,14 +12241,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1528;
+    AOT_Thread_global_object_pool_offset = 1536;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1584;
+    AOT_Thread_exit_through_ffi_offset = 1592;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 88;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 136;
 static constexpr dart::compiler::target::word
@@ -12293,11 +12293,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1536;
+    1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1544;
+    AOT_Thread_saved_shadow_call_stack_offset = 1552;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1560;
+    AOT_Thread_safepoint_state_offset = 1568;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
@@ -12334,9 +12334,9 @@
     AOT_Thread_write_barrier_mask_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1576;
+    AOT_Thread_callback_stack_return_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -12408,9 +12408,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440,
-        1448, 1456, 1464, 1472, -1,   -1,   -1,   -1,   1480, 1488, -1,
-        -1,   -1,   1496, 1504, -1,   -1,   -1,   -1,   -1,   -1};
+        1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448,
+        1456, 1464, 1472, 1480, -1,   -1,   -1,   -1,   1488, 1496, -1,
+        -1,   -1,   1504, 1512, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index 5f54c67..ebd626c 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -926,6 +926,7 @@
 EMIT_BOX_ALLOCATION(Double)
 EMIT_BOX_ALLOCATION(Float32x4)
 EMIT_BOX_ALLOCATION(Float64x2)
+EMIT_BOX_ALLOCATION(Int32x4)
 
 #undef EMIT_BOX_ALLOCATION
 
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 34ac317..0b91d37 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -2796,11 +2796,11 @@
   // all other threads, including auxiliary threads are at a safepoint), even
   // though we only need to ensure that the mutator threads are stopped.
   if (use_force_growth_in_otherwise) {
-    ForceGrowthSafepointOperationScope safepoint_scope(thread,
-                                                       SafepointLevel::kGC);
+    ForceGrowthSafepointOperationScope safepoint_scope(
+        thread, SafepointLevel::kGCAndDeopt);
     otherwise->Call();
   } else {
-    GcSafepointOperationScope safepoint_scope(thread);
+    DeoptSafepointOperationScope safepoint_scope(thread);
     otherwise->Call();
   }
 }
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 9f363a6..62fbaa6 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -929,6 +929,8 @@
   isolate_group->object_store()->set_float32x4_class(cls);
   cls = Class::New<Float64x2, RTN::Float64x2>(isolate_group);
   isolate_group->object_store()->set_float64x2_class(cls);
+  cls = Class::New<Int32x4, RTN::Int32x4>(isolate_group);
+  isolate_group->object_store()->set_int32x4_class(cls);
 
   // Ensure that class kExternalTypedDataUint8ArrayCid is registered as we
   // need it when reading in the token stream of bootstrap classes in the VM
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index df7f89a..c1ffddc 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -197,6 +197,7 @@
   RW(Code, allocate_double_stub)                                               \
   RW(Code, allocate_float32x4_stub)                                            \
   RW(Code, allocate_float64x2_stub)                                            \
+  RW(Code, allocate_int32x4_stub)                                              \
   RW(Code, allocate_int8_array_stub)                                           \
   RW(Code, allocate_uint8_array_stub)                                          \
   RW(Code, allocate_uint8_clamped_array_stub)                                  \
@@ -269,6 +270,7 @@
   DO(allocate_double_stub, AllocateDouble)                                     \
   DO(allocate_float32x4_stub, AllocateFloat32x4)                               \
   DO(allocate_float64x2_stub, AllocateFloat64x2)                               \
+  DO(allocate_int32x4_stub, AllocateInt32x4)                                   \
   DO(allocate_int8_array_stub, AllocateInt8Array)                              \
   DO(allocate_uint8_array_stub, AllocateUint8Array)                            \
   DO(allocate_uint8_clamped_array_stub, AllocateUint8ClampedArray)             \
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index 402bfa9..cdfc80f 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -364,6 +364,13 @@
   arguments.SetReturn(Object::Handle(zone, Float64x2::New(0.0, 0.0)));
 }
 
+DEFINE_RUNTIME_ENTRY_NO_LAZY_DEOPT(AllocateInt32x4, 0) {
+  if (FLAG_shared_slow_path_triggers_gc) {
+    isolate->group()->heap()->CollectAllGarbage();
+  }
+  arguments.SetReturn(Object::Handle(zone, Int32x4::New(0, 0, 0, 0)));
+}
+
 // Allocate typed data array of given class id and length.
 // Arg0: class id.
 // Arg1: number of elements.
@@ -3110,9 +3117,12 @@
     DartFrameIterator iterator(mutator_thread,
                                StackFrameIterator::kNoCrossThreadIteration);
     StackFrame* frame = iterator.NextFrame();
-    const auto& optimized_code = Code::Handle(frame->LookupDartCode());
-    if (optimized_code.is_optimized() && !optimized_code.is_force_optimized()) {
-      DeoptimizeAt(mutator_thread, optimized_code, frame);
+    if (frame != nullptr) {
+      const auto& optimized_code = Code::Handle(frame->LookupDartCode());
+      if (optimized_code.is_optimized() &&
+          !optimized_code.is_force_optimized()) {
+        DeoptimizeAt(mutator_thread, optimized_code, frame);
+      }
     }
   });
 }
@@ -3312,7 +3322,9 @@
   UNREACHABLE();
 }
 
-void OnEveryRuntimeEntryCall(Thread* thread, const char* runtime_call_name) {
+void OnEveryRuntimeEntryCall(Thread* thread,
+                             const char* runtime_call_name,
+                             bool can_lazy_deopt) {
   ASSERT(FLAG_deoptimize_on_runtime_call_every > 0);
   if (FLAG_precompiled_mode) {
     return;
@@ -3324,16 +3336,20 @@
   if (is_deopt_related) {
     return;
   }
-  if (FLAG_deoptimize_on_runtime_call_name_filter != nullptr &&
-      (strlen(runtime_call_name) !=
-           strlen(FLAG_deoptimize_on_runtime_call_name_filter) ||
-       strstr(runtime_call_name, FLAG_deoptimize_on_runtime_call_name_filter) ==
-           0)) {
-    return;
-  }
-  const uint32_t count = thread->IncrementAndGetRuntimeCallCount();
-  if ((count % FLAG_deoptimize_on_runtime_call_every) == 0) {
-    DeoptimizeLastDartFrameIfOptimized();
+  // For --deoptimize-on-every-runtime-call we only consider runtime calls that
+  // can lazy-deopt.
+  if (can_lazy_deopt) {
+    if (FLAG_deoptimize_on_runtime_call_name_filter != nullptr &&
+        (strlen(runtime_call_name) !=
+             strlen(FLAG_deoptimize_on_runtime_call_name_filter) ||
+         strstr(runtime_call_name,
+                FLAG_deoptimize_on_runtime_call_name_filter) == 0)) {
+      return;
+    }
+    const uint32_t count = thread->IncrementAndGetRuntimeCallCount();
+    if ((count % FLAG_deoptimize_on_runtime_call_every) == 0) {
+      DeoptimizeLastDartFrameIfOptimized();
+    }
   }
 }
 
diff --git a/runtime/vm/runtime_entry.h b/runtime/vm/runtime_entry.h
index bbcca7d..3fc3e01 100644
--- a/runtime/vm/runtime_entry.h
+++ b/runtime/vm/runtime_entry.h
@@ -34,7 +34,8 @@
                RuntimeFunction function,
                intptr_t argument_count,
                bool is_leaf,
-               bool is_float)
+               bool is_float,
+               bool can_lazy_deopt)
       :
 #if !defined(DART_PRECOMPILED_RUNTIME)
         compiler::RuntimeEntry(this, &CallInternal),
@@ -43,7 +44,8 @@
         function_(function),
         argument_count_(argument_count),
         is_leaf_(is_leaf),
-        is_float_(is_float) {
+        is_float_(is_float),
+        can_lazy_deopt_(can_lazy_deopt) {
   }
 
   const char* name() const { return name_; }
@@ -51,6 +53,7 @@
   intptr_t argument_count() const { return argument_count_; }
   bool is_leaf() const { return is_leaf_; }
   bool is_float() const { return is_float_; }
+  bool can_lazy_deopt() const { return can_lazy_deopt_; }
   uword GetEntryPoint() const;
 
   // Generate code to call the runtime entry.
@@ -68,6 +71,7 @@
   const intptr_t argument_count_;
   const bool is_leaf_;
   const bool is_float_;
+  const bool can_lazy_deopt_;
 
   DISALLOW_COPY_AND_ASSIGN(RuntimeEntry);
 };
@@ -96,8 +100,9 @@
 
 #define DEFINE_RUNTIME_ENTRY_IMPL(name, argument_count, can_lazy_deopt)        \
   extern void DRT_##name(NativeArguments arguments);                           \
-  extern const RuntimeEntry k##name##RuntimeEntry(                             \
-      "DRT_" #name, &DRT_##name, argument_count, false, false);                \
+  extern const RuntimeEntry k##name##RuntimeEntry("DRT_" #name, &DRT_##name,   \
+                                                  argument_count, false,       \
+                                                  false, can_lazy_deopt);      \
   static void DRT_Helper##name(Isolate* isolate, Thread* thread, Zone* zone,   \
                                NativeArguments arguments);                     \
   void DRT_##name(NativeArguments arguments) {                                 \
@@ -118,7 +123,7 @@
       HANDLESCOPE(thread);                                                     \
       CHECK_SIMULATOR_STACK_OVERFLOW();                                        \
       if (FLAG_deoptimize_on_runtime_call_every > 0) {                         \
-        OnEveryRuntimeEntryCall(thread, "" #name);                             \
+        OnEveryRuntimeEntryCall(thread, "" #name, can_lazy_deopt);             \
       }                                                                        \
       DRT_Helper##name(isolate, thread, zone.GetZone(), arguments);            \
     }                                                                          \
@@ -140,7 +145,7 @@
   extern "C" type DLRT_##name(__VA_ARGS__);                                    \
   extern const RuntimeEntry k##name##RuntimeEntry(                             \
       "DLRT_" #name, reinterpret_cast<RuntimeFunction>(&DLRT_##name),          \
-      argument_count, true, false);                                            \
+      argument_count, true, false, /*can_lazy_deopt=*/false);                  \
   type DLRT_##name(__VA_ARGS__) {                                              \
     CHECK_STACK_ALIGNMENT;                                                     \
     NoSafepointScope no_safepoint_scope;
@@ -151,7 +156,8 @@
 // DEFINE_LEAF_RUNTIME_ENTRY instead.
 #define DEFINE_RAW_LEAF_RUNTIME_ENTRY(name, argument_count, is_float, func)    \
   extern const RuntimeEntry k##name##RuntimeEntry(                             \
-      "DFLRT_" #name, func, argument_count, true, is_float)
+      "DFLRT_" #name, func, argument_count, true, is_float,                    \
+      /*can_lazy_deopt=*/false)
 
 #define DECLARE_LEAF_RUNTIME_ENTRY(type, name, ...)                            \
   extern const RuntimeEntry k##name##RuntimeEntry;                             \
@@ -172,7 +178,9 @@
 
 const char* DeoptReasonToCString(ICData::DeoptReasonId deopt_reason);
 
-void OnEveryRuntimeEntryCall(Thread* thread, const char* runtime_call_name);
+void OnEveryRuntimeEntryCall(Thread* thread,
+                             const char* runtime_call_name,
+                             bool can_lazy_deopt);
 
 void DeoptimizeAt(Thread* mutator_thread,
                   const Code& optimized_code,
diff --git a/runtime/vm/runtime_entry_list.h b/runtime/vm/runtime_entry_list.h
index dcf7e1a..66915bf 100644
--- a/runtime/vm/runtime_entry_list.h
+++ b/runtime/vm/runtime_entry_list.h
@@ -13,6 +13,7 @@
   V(AllocateDouble)                                                            \
   V(AllocateFloat32x4)                                                         \
   V(AllocateFloat64x2)                                                         \
+  V(AllocateInt32x4)                                                           \
   V(AllocateTypedData)                                                         \
   V(AllocateContext)                                                           \
   V(AllocateObject)                                                            \
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index 10c86c6..acdb074 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -185,6 +185,8 @@
       return object_store->allocate_float32x4_stub();
     case kFloat64x2Cid:
       return object_store->allocate_float64x2_stub();
+    case kInt32x4Cid:
+      return object_store->allocate_int32x4_stub();
   }
   Code& stub = Code::Handle(zone, cls.allocation_stub());
   if (stub.IsNull()) {
diff --git a/runtime/vm/stub_code_list.h b/runtime/vm/stub_code_list.h
index 2364084..cba3285 100644
--- a/runtime/vm/stub_code_list.h
+++ b/runtime/vm/stub_code_list.h
@@ -33,6 +33,7 @@
   V(AllocateDouble)                                                            \
   V(AllocateFloat32x4)                                                         \
   V(AllocateFloat64x2)                                                         \
+  V(AllocateInt32x4)                                                           \
   V(AllocateInt8Array)                                                         \
   V(AllocateUint8Array)                                                        \
   V(AllocateUint8ClampedArray)                                                 \
diff --git a/sdk/lib/collection/iterable.dart b/sdk/lib/collection/iterable.dart
index 9e697a5..5395c8d 100644
--- a/sdk/lib/collection/iterable.dart
+++ b/sdk/lib/collection/iterable.dart
@@ -14,14 +14,15 @@
   // If changing a method here, also change the other copies.
 
   Iterable<R> cast<R>() => Iterable.castFrom<E, R>(this);
-  Iterable<T> map<T>(T f(E element)) => MappedIterable<E, T>(this, f);
+  Iterable<T> map<T>(T toElement(E element)) =>
+      MappedIterable<E, T>(this, toElement);
 
-  Iterable<E> where(bool f(E element)) => WhereIterable<E>(this, f);
+  Iterable<E> where(bool test(E element)) => WhereIterable<E>(this, test);
 
   Iterable<T> whereType<T>() => WhereTypeIterable<T>(this);
 
-  Iterable<T> expand<T>(Iterable<T> f(E element)) =>
-      ExpandIterable<E, T>(this, f);
+  Iterable<T> expand<T>(Iterable<T> toElements(E element)) =>
+      ExpandIterable<E, T>(this, toElements);
 
   Iterable<E> followedBy(Iterable<E> other) {
     // Type workaround because IterableMixin<E> doesn't promote
@@ -40,8 +41,8 @@
     return false;
   }
 
-  void forEach(void f(E element)) {
-    for (E element in this) f(element);
+  void forEach(void action(E element)) {
+    for (E element in this) action(element);
   }
 
   E reduce(E combine(E value, E element)) {
@@ -62,9 +63,9 @@
     return value;
   }
 
-  bool every(bool f(E element)) {
+  bool every(bool test(E element)) {
     for (E element in this) {
-      if (!f(element)) return false;
+      if (!test(element)) return false;
     }
     return true;
   }
diff --git a/sdk/lib/core/iterable.dart b/sdk/lib/core/iterable.dart
index 423de13..2079afb 100644
--- a/sdk/lib/core/iterable.dart
+++ b/sdk/lib/core/iterable.dart
@@ -170,19 +170,33 @@
     return FollowedByIterable<E>(this, other);
   }
 
+  /// The current elements of this iterable modified by [toElement].
+  ///
   /// Returns a new lazy [Iterable] with elements that are created by
-  /// calling `f` on each element of this `Iterable` in iteration order.
+  /// calling `toElement` on each element of this `Iterable` in
+  /// iteration order.
   ///
-  /// This method returns a view of the mapped elements. As long as the
-  /// returned [Iterable] is not iterated over, the supplied function [f] will
-  /// not be invoked. The transformed elements will not be cached. Iterating
-  /// multiple times over the returned [Iterable] will invoke the supplied
-  /// function [f] multiple times on the same element.
+  /// The returned iterable is lazy, so it won't iterate the elements of
+  /// this iterable until it is itself iterated, and then it will apply
+  /// [toElement] to create one element at a time.
+  /// The converted elements are not cached.
+  /// Iterating multiple times over the returned [Iterable]
+  /// will invoke the supplied [toElement] function once per element
+  /// for on each iteration.
   ///
-  /// Methods on the returned iterable are allowed to omit calling `f`
+  /// Methods on the returned iterable are allowed to omit calling `toElement`
   /// on any element where the result isn't needed.
-  /// For example, [elementAt] may call `f` only once.
-  Iterable<T> map<T>(T f(E e)) => MappedIterable<E, T>(this, f);
+  /// For example, [elementAt] may call `toElement` only once.
+  ///
+  /// Equivalent to:
+  /// ```dart
+  /// Iterable<T> map<T>(T toElement(E e)) sync* {
+  ///   for (var value in this) {
+  ///     yield toElement(value);
+  ///   }
+  /// }
+  /// ```
+  Iterable<T> map<T>(T toElement(E e)) => MappedIterable<E, T>(this, toElement);
 
   /// Returns a new lazy [Iterable] with all elements that satisfy the
   /// predicate [test].
@@ -212,10 +226,10 @@
   /// Expands each element of this [Iterable] into zero or more elements.
   ///
   /// The resulting Iterable runs through the elements returned
-  /// by [f] for each element of this, in iteration order.
+  /// by [toElements] for each element of this, in iteration order.
   ///
-  /// The returned [Iterable] is lazy, and calls [f] for each element
-  /// of this every time it's iterated.
+  /// The returned [Iterable] is lazy, and calls [toElements] for each element
+  /// of this iterable every time the returned iterable is iterated.
   ///
   /// Example:
   /// ```dart
@@ -227,8 +241,17 @@
   /// var duplicated = input.expand((i) => [i, i]).toList();
   /// print(duplicated); // => [1, 1, 2, 2, 3, 3]
   /// ```
-  Iterable<T> expand<T>(Iterable<T> f(E element)) =>
-      ExpandIterable<E, T>(this, f);
+  ///
+  /// Equivalent to:
+  /// ```dart
+  /// Iterable<T> expand<T>(Iterable<T> toElements(E e)) sync* {
+  ///   for (var value in this) {
+  ///     yield* toElements(value);
+  ///   }
+  /// }
+  /// ```
+  Iterable<T> expand<T>(Iterable<T> toElements(E element)) =>
+      ExpandIterable<E, T>(this, toElements);
 
   /// Whether the collection contains an element equal to [element].
   ///
@@ -251,10 +274,9 @@
     return false;
   }
 
-  /// Applies the function [f] to each element of this collection in iteration
-  /// order.
-  void forEach(void f(E element)) {
-    for (E element in this) f(element);
+  /// Invokes [action] on each element of this iterable in iteration order.
+  void forEach(void action(E element)) {
+    for (E element in this) action(element);
   }
 
   /// Reduces a collection to a single value by iteratively combining elements
diff --git a/sdk/lib/internal/cast.dart b/sdk/lib/internal/cast.dart
index d99b687..e3e0dae 100644
--- a/sdk/lib/internal/cast.dart
+++ b/sdk/lib/internal/cast.dart
@@ -277,7 +277,7 @@
     _source.addAll(new CastMap<K, V, SK, SV>(other));
   }
 
-  V remove(Object? key) => _source.remove(key) as V;
+  V? remove(Object? key) => _source.remove(key) as V?;
 
   void clear() {
     _source.clear();
diff --git a/sdk/lib/internal/iterable.dart b/sdk/lib/internal/iterable.dart
index 8b09946..d7c8f97 100644
--- a/sdk/lib/internal/iterable.dart
+++ b/sdk/lib/internal/iterable.dart
@@ -31,14 +31,14 @@
 
   const ListIterable();
 
-  Iterator<E> get iterator => new ListIterator<E>(this);
+  Iterator<E> get iterator => ListIterator<E>(this);
 
   void forEach(void action(E element)) {
     int length = this.length;
     for (int i = 0; i < length; i++) {
       action(elementAt(i));
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
   }
@@ -66,7 +66,7 @@
     for (int i = 0; i < length; i++) {
       if (elementAt(i) == element) return true;
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
     return false;
@@ -77,7 +77,7 @@
     for (int i = 0; i < length; i++) {
       if (!test(elementAt(i))) return false;
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
     return true;
@@ -88,7 +88,7 @@
     for (int i = 0; i < length; i++) {
       if (test(elementAt(i))) return true;
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
     return false;
@@ -100,7 +100,7 @@
       E element = elementAt(i);
       if (test(element)) return element;
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
     if (orElse != null) return orElse();
@@ -113,7 +113,7 @@
       E element = elementAt(i);
       if (test(element)) return element;
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
     if (orElse != null) return orElse();
@@ -134,7 +134,7 @@
         match = element;
       }
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
     if (matchFound) return match;
@@ -148,23 +148,23 @@
       if (length == 0) return "";
       String first = "${elementAt(0)}";
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
-      StringBuffer buffer = new StringBuffer(first);
+      StringBuffer buffer = StringBuffer(first);
       for (int i = 1; i < length; i++) {
         buffer.write(separator);
         buffer.write(elementAt(i));
         if (length != this.length) {
-          throw new ConcurrentModificationError(this);
+          throw ConcurrentModificationError(this);
         }
       }
       return buffer.toString();
     } else {
-      StringBuffer buffer = new StringBuffer();
+      StringBuffer buffer = StringBuffer();
       for (int i = 0; i < length; i++) {
         buffer.write(elementAt(i));
         if (length != this.length) {
-          throw new ConcurrentModificationError(this);
+          throw ConcurrentModificationError(this);
         }
       }
       return buffer.toString();
@@ -173,7 +173,8 @@
 
   Iterable<E> where(bool test(E element)) => super.where(test);
 
-  Iterable<T> map<T>(T f(E element)) => new MappedListIterable<E, T>(this, f);
+  Iterable<T> map<T>(T toElement(E element)) =>
+      MappedListIterable<E, T>(this, toElement);
 
   E reduce(E combine(E value, E element)) {
     int length = this.length;
@@ -182,7 +183,7 @@
     for (int i = 1; i < length; i++) {
       value = combine(value, elementAt(i));
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
     return value;
@@ -194,13 +195,13 @@
     for (int i = 0; i < length; i++) {
       value = combine(value, elementAt(i));
       if (length != this.length) {
-        throw new ConcurrentModificationError(this);
+        throw ConcurrentModificationError(this);
       }
     }
     return value;
   }
 
-  Iterable<E> skip(int count) => new SubListIterable<E>(this, count, null);
+  Iterable<E> skip(int count) => SubListIterable<E>(this, count, null);
 
   Iterable<E> skipWhile(bool test(E element)) => super.skipWhile(test);
 
@@ -212,7 +213,7 @@
   List<E> toList({bool growable: true}) => List<E>.of(this, growable: growable);
 
   Set<E> toSet() {
-    Set<E> result = new Set<E>();
+    Set<E> result = Set<E>();
     for (int i = 0; i < length; i++) {
       result.add(elementAt(i));
     }
@@ -232,7 +233,7 @@
     if (endOrLength != null) {
       RangeError.checkNotNegative(endOrLength, "end");
       if (_start > endOrLength) {
-        throw new RangeError.range(_start, 0, endOrLength, "start");
+        throw RangeError.range(_start, 0, endOrLength, "start");
       }
     }
   }
@@ -263,7 +264,7 @@
   E elementAt(int index) {
     int realIndex = _startIndex + index;
     if (index < 0 || realIndex >= _endIndex) {
-      throw new RangeError.index(index, this, "index");
+      throw RangeError.index(index, this, "index");
     }
     return _iterable.elementAt(realIndex);
   }
@@ -273,20 +274,20 @@
     int newStart = _start + count;
     int? endOrLength = _endOrLength;
     if (endOrLength != null && newStart >= endOrLength) {
-      return new EmptyIterable<E>();
+      return EmptyIterable<E>();
     }
-    return new SubListIterable<E>(_iterable, newStart, _endOrLength);
+    return SubListIterable<E>(_iterable, newStart, _endOrLength);
   }
 
   Iterable<E> take(int count) {
     RangeError.checkNotNegative(count, "count");
     int? endOrLength = _endOrLength;
     if (endOrLength == null) {
-      return new SubListIterable<E>(_iterable, _start, _start + count);
+      return SubListIterable<E>(_iterable, _start, _start + count);
     } else {
       int newEnd = _start + count;
       if (endOrLength < newEnd) return this;
-      return new SubListIterable<E>(_iterable, _start, newEnd);
+      return SubListIterable<E>(_iterable, _start, newEnd);
     }
   }
 
@@ -302,7 +303,7 @@
         List<E>.filled(length, _iterable.elementAt(start), growable: growable);
     for (int i = 1; i < length; i++) {
       result[i] = _iterable.elementAt(start + i);
-      if (_iterable.length < end) throw new ConcurrentModificationError(this);
+      if (_iterable.length < end) throw ConcurrentModificationError(this);
     }
     return result;
   }
@@ -332,7 +333,7 @@
   bool moveNext() {
     int length = _iterable.length;
     if (_length != length) {
-      throw new ConcurrentModificationError(_iterable);
+      throw ConcurrentModificationError(_iterable);
     }
     if (_index >= length) {
       _current = null;
@@ -352,14 +353,14 @@
 
   factory MappedIterable(Iterable<S> iterable, T function(S value)) {
     if (iterable is EfficientLengthIterable) {
-      return new EfficientLengthMappedIterable<S, T>(iterable, function);
+      return EfficientLengthMappedIterable<S, T>(iterable, function);
     }
-    return new MappedIterable<S, T>._(iterable, function);
+    return MappedIterable<S, T>._(iterable, function);
   }
 
   MappedIterable._(this._iterable, this._f);
 
-  Iterator<T> get iterator => new MappedIterator<S, T>(_iterable.iterator, _f);
+  Iterator<T> get iterator => MappedIterator<S, T>(_iterable.iterator, _f);
 
   // Length related functions are independent of the mapping.
   int get length => _iterable.length;
@@ -420,10 +421,11 @@
 
   WhereIterable(this._iterable, this._f);
 
-  Iterator<E> get iterator => new WhereIterator<E>(_iterable.iterator, _f);
+  Iterator<E> get iterator => WhereIterator<E>(_iterable.iterator, _f);
 
   // Specialization of [Iterable.map] to non-EfficientLengthIterable.
-  Iterable<T> map<T>(T f(E element)) => new MappedIterable<E, T>._(this, f);
+  Iterable<T> map<T>(T toElement(E element)) =>
+      MappedIterable<E, T>._(this, toElement);
 }
 
 class WhereIterator<E> extends Iterator<E> {
@@ -452,7 +454,7 @@
 
   ExpandIterable(this._iterable, this._f);
 
-  Iterator<T> get iterator => new ExpandIterator<S, T>(_iterable.iterator, _f);
+  Iterator<T> get iterator => ExpandIterator<S, T>(_iterable.iterator, _f);
 }
 
 class ExpandIterator<S, T> implements Iterator<T> {
@@ -494,15 +496,15 @@
     ArgumentError.checkNotNull(takeCount, "takeCount");
     RangeError.checkNotNegative(takeCount, "takeCount");
     if (iterable is EfficientLengthIterable) {
-      return new EfficientLengthTakeIterable<E>(iterable, takeCount);
+      return EfficientLengthTakeIterable<E>(iterable, takeCount);
     }
-    return new TakeIterable<E>._(iterable, takeCount);
+    return TakeIterable<E>._(iterable, takeCount);
   }
 
   TakeIterable._(this._iterable, this._takeCount);
 
   Iterator<E> get iterator {
-    return new TakeIterator<E>(_iterable.iterator, _takeCount);
+    return TakeIterator<E>(_iterable.iterator, _takeCount);
   }
 }
 
@@ -552,7 +554,7 @@
   TakeWhileIterable(this._iterable, this._f);
 
   Iterator<E> get iterator {
-    return new TakeWhileIterator<E>(_iterable.iterator, _f);
+    return TakeWhileIterator<E>(_iterable.iterator, _f);
   }
 }
 
@@ -584,26 +586,26 @@
 
   factory SkipIterable(Iterable<E> iterable, int count) {
     if (iterable is EfficientLengthIterable) {
-      return new EfficientLengthSkipIterable<E>(iterable, count);
+      return EfficientLengthSkipIterable<E>(iterable, count);
     }
-    return new SkipIterable<E>._(iterable, _checkCount(count));
+    return SkipIterable<E>._(iterable, _checkCount(count));
   }
 
   SkipIterable._(this._iterable, this._skipCount);
 
   Iterable<E> skip(int count) {
-    return new SkipIterable<E>._(_iterable, _skipCount + _checkCount(count));
+    return SkipIterable<E>._(_iterable, _skipCount + _checkCount(count));
   }
 
   Iterator<E> get iterator {
-    return new SkipIterator<E>(_iterable.iterator, _skipCount);
+    return SkipIterator<E>(_iterable.iterator, _skipCount);
   }
 }
 
 class EfficientLengthSkipIterable<E> extends SkipIterable<E>
     implements EfficientLengthIterable<E> {
   factory EfficientLengthSkipIterable(Iterable<E> iterable, int count) {
-    return new EfficientLengthSkipIterable<E>._(iterable, _checkCount(count));
+    return EfficientLengthSkipIterable<E>._(iterable, _checkCount(count));
   }
 
   EfficientLengthSkipIterable._(Iterable<E> iterable, int count)
@@ -616,7 +618,7 @@
   }
 
   Iterable<E> skip(int count) {
-    return new EfficientLengthSkipIterable<E>._(
+    return EfficientLengthSkipIterable<E>._(
         _iterable, _skipCount + _checkCount(count));
   }
 }
@@ -651,7 +653,7 @@
   SkipWhileIterable(this._iterable, this._f);
 
   Iterator<E> get iterator {
-    return new SkipWhileIterator<E>(_iterable.iterator, _f);
+    return SkipWhileIterator<E>(_iterable.iterator, _f);
   }
 }
 
@@ -702,7 +704,7 @@
   }
 
   E elementAt(int index) {
-    throw new RangeError.range(index, 0, 0, "index");
+    throw RangeError.range(index, 0, 0, "index");
   }
 
   bool contains(Object? element) => false;
@@ -730,7 +732,7 @@
 
   Iterable<E> where(bool test(E element)) => this;
 
-  Iterable<T> map<T>(T f(E element)) => new EmptyIterable<T>();
+  Iterable<T> map<T>(T toElement(E element)) => EmptyIterable<T>();
 
   E reduce(E combine(E value, E element)) {
     throw IterableElementError.noElement();
@@ -756,7 +758,7 @@
 
   List<E> toList({bool growable: true}) => List<E>.empty(growable: growable);
 
-  Set<E> toSet() => new Set<E>();
+  Set<E> toSet() => Set<E>();
 }
 
 /** The always empty iterator. */
@@ -776,12 +778,12 @@
   factory FollowedByIterable.firstEfficient(
       EfficientLengthIterable<E> first, Iterable<E> second) {
     if (second is EfficientLengthIterable<E>) {
-      return new EfficientLengthFollowedByIterable<E>(first, second);
+      return EfficientLengthFollowedByIterable<E>(first, second);
     }
-    return new FollowedByIterable<E>(first, second);
+    return FollowedByIterable<E>(first, second);
   }
 
-  Iterator<E> get iterator => new FollowedByIterator(_first, _second);
+  Iterator<E> get iterator => FollowedByIterator(_first, _second);
 
   int get length => _first.length + _second.length;
   bool get isEmpty => _first.isEmpty && _second.isEmpty;
@@ -857,7 +859,7 @@
 class WhereTypeIterable<T> extends Iterable<T> {
   final Iterable<Object?> _source;
   WhereTypeIterable(this._source);
-  Iterator<T> get iterator => new WhereTypeIterator<T>(_source.iterator);
+  Iterator<T> get iterator => WhereTypeIterator<T>(_source.iterator);
 }
 
 class WhereTypeIterator<T> implements Iterator<T> {
@@ -878,9 +880,9 @@
  */
 abstract class IterableElementError {
   /** Error thrown thrown by, e.g., [Iterable.first] when there is no result. */
-  static StateError noElement() => new StateError("No element");
+  static StateError noElement() => StateError("No element");
   /** Error thrown by, e.g., [Iterable.single] if there are too many results. */
-  static StateError tooMany() => new StateError("Too many elements");
+  static StateError tooMany() => StateError("Too many elements");
   /** Error thrown by, e.g., [List.setRange] if there are too few elements. */
-  static StateError tooFew() => new StateError("Too few elements");
+  static StateError tooFew() => StateError("Too few elements");
 }
diff --git a/tests/corelib/regress_45473_test.dart b/tests/corelib/regress_45473_test.dart
new file mode 100644
index 0000000..4469e13
--- /dev/null
+++ b/tests/corelib/regress_45473_test.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "package:expect/expect.dart";
+
+void main() {
+  var map = <String, dynamic>{"a": null};
+  var castMap = map.cast<String, Object>();
+  // Should return `null`, not throw.
+  Expect.isNull(castMap.remove("b"));
+  Expect.isNull(castMap.remove("a"));
+}
diff --git a/tests/language/class/cyclic_class_member_test.dart b/tests/language/class/cyclic_class_member_test.dart
index 516943f..50c3847 100644
--- a/tests/language/class/cyclic_class_member_test.dart
+++ b/tests/language/class/cyclic_class_member_test.dart
@@ -6,7 +6,7 @@
 
 class A
 //    ^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_EXTENDS
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'A' is a supertype of itself.
     extends A
 {
diff --git a/tests/language/mixin/cyclic_test.dart b/tests/language/mixin/cyclic_test.dart
index 4e129a6..e128af7 100644
--- a/tests/language/mixin/cyclic_test.dart
+++ b/tests/language/mixin/cyclic_test.dart
@@ -13,14 +13,14 @@
 class C1 = S with M;
 class C2 = S with C2;
 //    ^^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_WITH
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'C2' is a supertype of itself.
 //                ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
 class C3 = S with M implements A;
 class C4 = S with M implements C4;
 //    ^^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'C4' is a supertype of itself.
 
 void main() {
diff --git a/tests/language/mixin/illegal_cycles_test.dart b/tests/language/mixin/illegal_cycles_test.dart
index 3db5716..7e47f01 100644
--- a/tests/language/mixin/illegal_cycles_test.dart
+++ b/tests/language/mixin/illegal_cycles_test.dart
@@ -5,7 +5,7 @@
 class M {}
 class M0 extends Object with M0 { }
 //    ^^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_WITH
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'M0' is a supertype of itself.
 //    ^
 // [cfe] 'Object with M0' is a supertype of itself.
@@ -13,7 +13,7 @@
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
 class M1 = Object with M1;
 //    ^^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_WITH
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'M1' is a supertype of itself.
 
 class M2 = Object with M3;
diff --git a/tests/language_2/class/cyclic_class_member_test.dart b/tests/language_2/class/cyclic_class_member_test.dart
index 90e70d3..f9f1505 100644
--- a/tests/language_2/class/cyclic_class_member_test.dart
+++ b/tests/language_2/class/cyclic_class_member_test.dart
@@ -8,7 +8,7 @@
 
 class A
 //    ^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_EXTENDS
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'A' is a supertype of itself.
     extends A
 {
diff --git a/tests/language_2/mixin/cyclic_test.dart b/tests/language_2/mixin/cyclic_test.dart
index 7111fb1..2276fb7 100644
--- a/tests/language_2/mixin/cyclic_test.dart
+++ b/tests/language_2/mixin/cyclic_test.dart
@@ -15,14 +15,14 @@
 class C1 = S with M;
 class C2 = S with C2;
 //    ^^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_WITH
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'C2' is a supertype of itself.
 //                ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
 class C3 = S with M implements A;
 class C4 = S with M implements C4;
 //    ^^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'C4' is a supertype of itself.
 
 void main() {
diff --git a/tests/language_2/mixin/illegal_cycles_test.dart b/tests/language_2/mixin/illegal_cycles_test.dart
index cae2fba..faa4c640 100644
--- a/tests/language_2/mixin/illegal_cycles_test.dart
+++ b/tests/language_2/mixin/illegal_cycles_test.dart
@@ -7,7 +7,7 @@
 class M {}
 class M0 extends Object with M0 { }
 //    ^^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_WITH
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'M0' is a supertype of itself.
 //    ^
 // [cfe] 'Object with M0' is a supertype of itself.
@@ -15,7 +15,7 @@
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
 class M1 = Object with M1;
 //    ^^
-// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE_WITH
+// [analyzer] COMPILE_TIME_ERROR.RECURSIVE_INTERFACE_INHERITANCE
 // [cfe] 'M1' is a supertype of itself.
 
 class M2 = Object with M3;
diff --git a/tools/VERSION b/tools/VERSION
index 3b52306..876a727 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 100
+PRERELEASE 101
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/experimental_features.yaml b/tools/experimental_features.yaml
index acc2a15..d527d2a 100644
--- a/tools/experimental_features.yaml
+++ b/tools/experimental_features.yaml
@@ -122,6 +122,9 @@
   const-functions:
     help: "Allow more of the Dart language to be executed in const expressions."
 
+  constructor-tearoffs:
+    help: "Allow constructor tear-offs and explicit generic instantiations."
+
 #
 # Flags below this line are shipped, retired, or rejected, cannot be specified
 # on the command line, and will eventually be removed.