diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6284408..7f90627 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,139 @@
 
 ## 2.17.0
 
+### Language
+
+The following features are new in the Dart 2.17 [language version][]. To use
+them, you must set the lower bound on the SDK constraint for your package to
+2.17 or greater (`sdk: '>=2.17.0 <3.0.0'`).
+
+[language version]: https://dart.dev/guides/language/evolution
+
+-   **[Enhanced enums with members][]**: Enum declarations can now define
+    members including fields, constructors, methods, getters, etc. For example:
+
+    ```dart
+    enum Water {
+      frozen(32),
+      lukewarm(100),
+      boiling(212);
+
+      final int tempInFahrenheit;
+      const Water(this.tempInFahrenheit);
+
+      @override
+      String toString() => "The $name water is $tempInFahrenheit F.";
+    }
+    ```
+
+    Constructors must be `const` since enum values are always constants. If the
+    constructor takes arguments, they are passed when the enum value is
+    declared.
+
+    The above enum can be used like so:
+
+    ```dart
+    void main() {
+      print(Water.frozen); // prints "The frozen water is 32 F."
+    }
+    ```
+
+[enhanced enums with members]: https://github.com/dart-lang/language/blob/master/accepted/future-releases/enhanced-enums/feature-specification.md
+
+-   **[Super parameters][]**: When extending a class whose constructor takes
+    parameters, the subclass constructor needs to provide arguments for them.
+    Often, these are passed as parameters to the subclass constructor, which
+    then forwards them to the superclass constructor. This is verbose because
+    the subclass constructor must list the name and type of each parameter in
+    its parameter list, and then explicitly forward each one as an argument to
+    the superclass constructor.
+
+    [@roy-sianez][] suggested [allowing `super.`][super dot] before a subclass
+    constructor parameter to implicitly forward it to the corresponding
+    superclass constructor parameter. Applying this feature to Flutter
+    eliminated [nearly 2,000 lines of code][flutter super]. For example, before:
+
+    ```dart
+    class CupertinoPage<T> extends Page<T> {
+      const CupertinoPage({
+        required this.child,
+        this.maintainState = true,
+        this.title,
+        this.fullscreenDialog = false,
+        LocalKey? key,
+        String? name,
+        Object? arguments,
+        String? restorationId,
+      }) : super(
+            key: key,
+            name: name,
+            arguments: arguments,
+            restorationId: restorationId,
+          );
+
+      // ...
+    }
+    ```
+
+    And using super parameters:
+
+    ```dart
+    class CupertinoPage<T> extends Page<T> {
+      const CupertinoPage({
+        required this.child,
+        this.maintainState = true,
+        this.title,
+        this.fullscreenDialog = false,
+        super.key,
+        super.name,
+        super.arguments,
+        super.restorationId,
+      });
+
+      // ...
+    }
+    ```
+
+    From our analysis, over 90% of explicit superclass constructor calls can be
+    completely eliminated, using `super.` parameters instead.
+
+[super parameters]: https://github.com/dart-lang/language/blob/master/working/1855%20-%20super%20parameters/proposal.md
+[@roy-sianez]: https://github.com/roy-sianez
+[super dot]: https://github.com/dart-lang/language/issues/1855
+[flutter super]: https://github.com/flutter/flutter/pull/100905/files
+
+-   **[Named args everywhere][]**: In a function call, Dart requires positional
+    arguments to appear before named arguments. This can be frustrating for
+    arguments like collection literals and function expressions that look best
+    as the last argument in the argument list but are positional, like the
+    `test()` function in the [test package][]:
+
+    ```dart
+    main() {
+      test('A test description', () {
+        // Very long function body here...
+      }, skip: true);
+    }
+    ```
+
+    It would be better if the `skip` argument appeared at the top of the call
+    to `test()` so that it wasn't easily overlooked, but since it's named and
+    the test body argument is positional, `skip` must be placed at the end.
+
+    Dart 2.17 removes this restriction. Named arguments can be freely
+    interleaved with positional arguments, allowing code like:
+
+    ```dart
+    main() {
+      test(skip: true, 'A test description', () {
+        // Very long function body here...
+      });
+    }
+    ```
+
+[named args everywhere]: https://github.com/dart-lang/language/blob/master/accepted/future-releases/named-arguments-anywhere/feature-specification.md
+[test package]: https://pub.dev/packages/test
+
 ### Core libraries
 
 #### `dart:core`
@@ -275,6 +408,7 @@
 - Pub now supports a separate `pubspec_overrides.yaml` file that can contain
   `dependency_overrides`. This makes it easier to avoid checking the local
   overrides into version control.
+
 #### Linter
 
 Updated the Linter to `1.18.0`, which includes changes that
diff --git a/pkg/analysis_server/lib/src/cider/rename.dart b/pkg/analysis_server/lib/src/cider/rename.dart
index 33ba10e..a7ce3f3 100644
--- a/pkg/analysis_server/lib/src/cider/rename.dart
+++ b/pkg/analysis_server/lib/src/cider/rename.dart
@@ -2,15 +2,20 @@
 // for 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:analysis_server/src/protocol_server.dart' hide Element;
 import 'package:analysis_server/src/services/correction/status.dart';
+import 'package:analysis_server/src/services/correction/util.dart';
 import 'package:analysis_server/src/services/refactoring/naming_conventions.dart';
 import 'package:analysis_server/src/services/refactoring/refactoring.dart';
+import 'package:analysis_server/src/services/search/hierarchy.dart';
 import 'package:analysis_server/src/utilities/flutter.dart';
+import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/source/line_info.dart';
 import 'package:analyzer/src/dart/ast/utilities.dart';
 import 'package:analyzer/src/dart/micro/resolve_file.dart';
 import 'package:analyzer/src/dart/micro/utils.dart';
+import 'package:analyzer/src/generated/java_core.dart';
 import 'package:analyzer/src/utilities/extensions/collection.dart';
 
 class CanRenameResponse {
@@ -45,12 +50,31 @@
       status = validateTypeAliasName(name);
     } else if (element is ClassElement) {
       status = validateClassName(name);
+    } else if (element is ConstructorElement) {
+      status = validateConstructorName(name);
+      _analyzePossibleConflicts(element, status, name);
     }
 
     if (status == null) {
       return null;
     }
-    return CheckNameResponse(status, this);
+    return CheckNameResponse(status, this, name);
+  }
+
+  void _analyzePossibleConflicts(
+      ConstructorElement element, RefactoringStatus result, String newName) {
+    var parentClass = element.enclosingElement;
+    // Check if the "newName" is the name of the enclosing class.
+    if (parentClass.name == newName) {
+      result.addError('The constructor should not have the same name '
+          'as the name of the enclosing class.');
+    }
+    // check if there are members with "newName" in the same ClassElement
+    for (var newNameMember in getChildren(parentClass, newName)) {
+      var message = format("Class '{0}' already declares {1} with name '{2}'.",
+          parentClass.displayName, getElementKindName(newNameMember), newName);
+      result.addError(message, newLocation_fromElement(newNameMember));
+    }
   }
 
   FlutterWidgetState? _findFlutterStateClass(Element element, String newName) {
@@ -76,8 +100,9 @@
 class CheckNameResponse {
   final RefactoringStatus status;
   final CanRenameResponse canRename;
+  final String newName;
 
-  CheckNameResponse(this.status, this.canRename);
+  CheckNameResponse(this.status, this.canRename, this.newName);
 
   LineInfo get lineInfo => canRename.lineInfo;
 
@@ -100,13 +125,148 @@
     for (var element in elements) {
       matches.addAll(await fileResolver.findReferences2(element));
     }
+
     FlutterWidgetRename? flutterRename;
-    if (canRename._flutterWidgetState != null) {
-      var stateWidget = canRename._flutterWidgetState!;
-      var match = await fileResolver.findReferences2(stateWidget.state);
-      flutterRename = FlutterWidgetRename(stateWidget.newName, match);
+    var flutterState = canRename._flutterWidgetState;
+    if (flutterState != null) {
+      var stateClass = flutterState.state;
+      var stateName = flutterState.newName;
+      var match = await fileResolver.findReferences2(stateClass);
+      var sourcePath = stateClass.source.fullName;
+      var location = stateClass.enclosingElement.lineInfo
+          .getLocation(stateClass.nameOffset);
+      CiderSearchMatch ciderMatch;
+      var searchInfo = CiderSearchInfo(
+          location, stateClass.nameLength, MatchKind.DECLARATION);
+      try {
+        ciderMatch = match.firstWhere((m) => m.path == sourcePath);
+        ciderMatch.references.add(searchInfo);
+      } catch (_) {
+        match.add(CiderSearchMatch(sourcePath, [], [searchInfo]));
+      }
+      var replacements = match
+          .map((m) => CiderReplaceMatch(
+              m.path,
+              m.references
+                  .map((p) => ReplaceInfo(
+                      stateName, p.startPosition, stateClass.nameLength))
+                  .toList()))
+          .toList();
+      flutterRename = FlutterWidgetRename(stateName, match, replacements);
     }
-    return RenameResponse(matches, this, flutterWidgetRename: flutterRename);
+    var replaceMatches = <CiderReplaceMatch>[];
+    if (element is ConstructorElement) {
+      for (var match in matches) {
+        var replaceInfo = <ReplaceInfo>[];
+        for (var ref in match.references) {
+          String replacement = newName.isNotEmpty ? '.$newName' : '';
+          if (replacement.isEmpty &&
+              ref.kind == MatchKind.REFERENCE_BY_CONSTRUCTOR_TEAR_OFF) {
+            replacement = '.new';
+          }
+          if (ref.kind ==
+              MatchKind.INVOCATION_BY_ENUM_CONSTANT_WITHOUT_ARGUMENTS) {
+            replacement += '()';
+          }
+          replaceInfo
+              .add(ReplaceInfo(replacement, ref.startPosition, ref.length));
+        }
+        replaceMatches.addMatch(match.path, replaceInfo);
+      }
+      if (element.isSynthetic) {
+        var result = await _replaceSyntheticConstructor();
+        if (result != null) {
+          replaceMatches.addMatch(result.path, result.matches.toList());
+        }
+      }
+    } else {
+      for (var match in matches) {
+        replaceMatches.addMatch(
+            match.path,
+            match.references
+                .map((info) =>
+                    ReplaceInfo(newName, info.startPosition, info.length))
+                .toList());
+      }
+      // add element declaration
+      var sourcePath = element.source!.fullName;
+      var infos = await _addElementDeclaration(element, sourcePath);
+      replaceMatches.addMatch(sourcePath, infos);
+    }
+    return RenameResponse(matches, this, replaceMatches,
+        flutterWidgetRename: flutterRename);
+  }
+
+  Future<List<ReplaceInfo>> _addElementDeclaration(
+      Element element, String sourcePath) async {
+    var infos = <ReplaceInfo>[];
+    if (element is PropertyInducingElement && element.isSynthetic) {
+      if (element.getter != null) {
+        infos.add(ReplaceInfo(
+            newName,
+            lineInfo.getLocation(element.getter!.nameOffset),
+            element.getter!.nameLength));
+      }
+      if (element.setter != null) {
+        infos.add(ReplaceInfo(
+            newName,
+            lineInfo.getLocation(element.setter!.nameOffset),
+            element.setter!.nameLength));
+      }
+    } else {
+      var location = (await canRename._fileResolver.resolve2(path: sourcePath))
+          .lineInfo
+          .getLocation(element.nameOffset);
+      infos.add(ReplaceInfo(newName, location, element.nameLength));
+    }
+    return infos;
+  }
+
+  Future<CiderReplaceMatch?> _replaceSyntheticConstructor() async {
+    var element = canRename.refactoringElement.element;
+    var classElement = element.enclosingElement;
+
+    var fileResolver = canRename._fileResolver;
+    var libraryPath = classElement!.library!.source.fullName;
+    var resolvedLibrary = await fileResolver.resolveLibrary2(path: libraryPath);
+    var result = resolvedLibrary.getElementDeclaration(classElement);
+    if (result == null) {
+      return null;
+    }
+
+    var resolvedUnit = result.resolvedUnit;
+    if (resolvedUnit == null) {
+      return null;
+    }
+
+    var node = result.node;
+    if (node is ClassDeclaration) {
+      var utils = CorrectionUtils(resolvedUnit);
+      var location = utils.prepareNewConstructorLocation(
+          fileResolver.contextObjects!.analysisSession, node);
+      if (location == null) {
+        return null;
+      }
+
+      var header = '${classElement.name}.$newName();';
+      return CiderReplaceMatch(libraryPath, [
+        ReplaceInfo(location.prefix + header + location.suffix,
+            resolvedUnit.lineInfo.getLocation(location.offset), 0)
+      ]);
+    } else if (node is EnumDeclaration) {
+      var utils = CorrectionUtils(resolvedUnit);
+      var location = utils.prepareEnumNewConstructorLocation(node);
+      if (location == null) {
+        return null;
+      }
+
+      var header = 'const ${classElement.name}.$newName();';
+      return CiderReplaceMatch(libraryPath, [
+        ReplaceInfo(location.prefix + header + location.suffix,
+            resolvedUnit.lineInfo.getLocation(location.offset), 0)
+      ]);
+    }
+    return null;
   }
 }
 
@@ -151,7 +311,7 @@
   bool _canRenameElement(Element element) {
     var enclosingElement = element.enclosingElement;
     if (element is ConstructorElement) {
-      return false;
+      return true;
     }
     if (element is LabelElement || element is LocalElement) {
       return true;
@@ -161,16 +321,24 @@
         enclosingElement is CompilationUnitElement) {
       return true;
     }
-
     return false;
   }
 }
 
+class CiderReplaceMatch {
+  final String path;
+  List<ReplaceInfo> matches;
+
+  CiderReplaceMatch(this.path, this.matches);
+}
+
 class FlutterWidgetRename {
   final String name;
+  @deprecated
   final List<CiderSearchMatch> matches;
+  final List<CiderReplaceMatch> replacements;
 
-  FlutterWidgetRename(this.name, this.matches);
+  FlutterWidgetRename(this.name, this.matches, this.replacements);
 }
 
 /// The corresponding `State` declaration of a  Flutter `StatefulWidget`.
@@ -182,9 +350,39 @@
 }
 
 class RenameResponse {
+  @deprecated
   final List<CiderSearchMatch> matches;
   final CheckNameResponse checkName;
+  final List<CiderReplaceMatch> replaceMatches;
   FlutterWidgetRename? flutterWidgetRename;
 
-  RenameResponse(this.matches, this.checkName, {this.flutterWidgetRename});
+  RenameResponse(this.matches, this.checkName, this.replaceMatches,
+      {this.flutterWidgetRename});
+}
+
+class ReplaceInfo {
+  final String replacementText;
+  final CharacterLocation startPosition;
+  final int length;
+
+  ReplaceInfo(this.replacementText, this.startPosition, this.length);
+
+  @override
+  bool operator ==(Object other) =>
+      other is ReplaceInfo &&
+      replacementText == other.replacementText &&
+      startPosition == other.startPosition &&
+      length == other.length;
+}
+
+extension on List<CiderReplaceMatch> {
+  void addMatch(String path, List<ReplaceInfo> infos) {
+    for (var m in this) {
+      if (m.path == path) {
+        m.matches.addAll(infos);
+        return;
+      }
+    }
+    add(CiderReplaceMatch(path, infos));
+  }
 }
diff --git a/pkg/analysis_server/test/src/cider/rename_test.dart b/pkg/analysis_server/test/src/cider/rename_test.dart
index 4adefd9..3a3ec88 100644
--- a/pkg/analysis_server/test/src/cider/rename_test.dart
+++ b/pkg/analysis_server/test/src/cider/rename_test.dart
@@ -4,7 +4,7 @@
 
 import 'package:analysis_server/src/cider/rename.dart';
 import 'package:analyzer/source/line_info.dart';
-import 'package:analyzer/src/dart/micro/resolve_file.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -20,6 +20,8 @@
 @reflectiveTest
 class CiderRenameComputerTest extends CiderServiceTest {
   late _CorrectionContext _correctionContext;
+  late LineInfo? _lineInfo;
+  late String _testCode;
 
   @override
   void setUp() {
@@ -27,6 +29,16 @@
     BazelMockPackages.instance.addFlutter(resourceProvider);
   }
 
+  void test_cannotRename_inSdk() async {
+    var refactor = await _compute(r'''
+main() {
+  new String.^fromCharCodes([]);
+}
+''');
+
+    expect(refactor, isNull);
+  }
+
   void test_canRename_class() async {
     var refactor = await _compute(r'''
 class ^Old {}
@@ -173,6 +185,17 @@
     expect(result.oldName, 'a');
   }
 
+  void test_checkName_newName() async {
+    var result = await _checkName(r'''
+class A {
+  A.^test() {}
+}
+''', 'test');
+
+    expect(result!.status.problems.length, 1);
+    expect(result.status.hasError, isTrue);
+  }
+
   void test_checkName_parameter() async {
     var result = await _checkName(r'''
 void foo(String ^a) {
@@ -203,7 +226,7 @@
   }
 
   void test_rename_class() async {
-    var result = await _rename(r'''
+    var testCode = '''
 class ^Old implements Other {
   Old() {}
   Old.named() {}
@@ -216,26 +239,26 @@
   Old t1 = new Old();
   Old t2 = new Old.named();
 }
-''', 'New');
-
-    expect(result!.matches.length, 1);
-    expect(result.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'), [
-        CharacterLocation(1, 7),
-        CharacterLocation(2, 3),
-        CharacterLocation(3, 3),
-        CharacterLocation(6, 23),
-        CharacterLocation(7, 23),
-        CharacterLocation(10, 3),
-        CharacterLocation(10, 16),
-        CharacterLocation(11, 3),
-        CharacterLocation(11, 16)
-      ])
-    ]);
+''';
+    var result = await _rename(testCode, 'New');
+    _assertTestChangeResult('''
+class New implements Other {
+  New() {}
+  New.named() {}
+}
+class Other {
+  factory Other.a() = New;
+  factory Other.b() = New.named;
+}
+void f() {
+  New t1 = new New();
+  New t2 = new New.named();
+}
+''', result!.replaceMatches.first.matches);
   }
 
   void test_rename_class_flutterWidget() async {
-    var result = await _rename(r'''
+    var testCode = '''
 import 'package:flutter/material.dart';
 
 class ^TestPage extends StatefulWidget {
@@ -249,27 +272,299 @@
   @override
   Widget build(BuildContext context) => throw 0;
 }
-''', 'NewPage');
+''';
 
-    expect(result!.matches.length, 1);
-    expect(result.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'), [
-        CharacterLocation(3, 7),
-        CharacterLocation(4, 9),
-        CharacterLocation(7, 9),
-        CharacterLocation(10, 35)
-      ])
+    var result = await _rename(testCode, 'NewPage');
+    expect(result!.replaceMatches.length, 1);
+    expect(result.replaceMatches.first.matches, [
+      ReplaceInfo('NewPage', CharacterLocation(4, 9), 8),
+      ReplaceInfo('NewPage', CharacterLocation(7, 9), 8),
+      ReplaceInfo('NewPage', CharacterLocation(10, 35), 8),
+      ReplaceInfo('NewPage', CharacterLocation(3, 7), 8)
     ]);
     expect(result.flutterWidgetRename != null, isTrue);
     expect(result.flutterWidgetRename!.name, 'NewPageState');
-    expect(result.flutterWidgetRename!.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
-          [CharacterLocation(7, 36), CharacterLocation(10, 7)])
-    ]);
+    expect(
+        result.flutterWidgetRename!.replacements.first.matches
+            .map((m) => m.startPosition)
+            .toList(),
+        [CharacterLocation(7, 36), CharacterLocation(10, 7)]);
+  }
+
+  void test_rename_constructor_add() async {
+    var testCode = '''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [new A] and [A.new]
+class A {
+  ^A() {} // marker
+  factory A._() = A;
+}
+class B extends A {
+  B() : super() {}
+}
+main() {
+  new A();
+  A.new;
+}
+''';
+
+    var result = await _rename(testCode, 'newName');
+    _assertTestChangeResult('''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [new A.newName] and [A.newName]
+class A {
+  A.newName() {} // marker
+  factory A._() = A.newName;
+}
+class B extends A {
+  B() : super.newName() {}
+}
+main() {
+  new A.newName();
+  A.newName;
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_enum() async {
+    var testCode = '''
+/// [E.new]
+enum E {
+  v1(), v2.new(), v3, v4.other();
+  const ^E(); // 0
+  const E.other() : this();
+}
+''';
+
+    var result = await _rename(testCode, 'newName');
+    _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+  v1.newName(), v2.newName(), v3.newName(), v4.other();
+  const E.newName(); // 0
+  const E.other() : this.newName();
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_enum_hasConstructor() async {
+    var testCode = '''
+/// [E.new]
+enum E {
+  v1(), v2.^new(), v3;
+
+  factory E.other() => throw 0;
+}
+''';
+
+    var result = await _rename(testCode, 'newName');
+    _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+  v1.newName(), v2.newName(), v3.newName();
+
+  factory E.other() => throw 0;
+
+  const E.newName();
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_enum_hasField() async {
+    var testCode = '''
+/// [E.new]
+enum E {
+  v1(), v2.^new(), v3;
+
+  final int foo = 0;
+}
+''';
+
+    var result = await _rename(testCode, 'newName');
+    _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+  v1.newName(), v2.newName(), v3.newName();
+
+  final int foo = 0;
+
+  const E.newName();
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_enum_hasMethod() async {
+    var testCode = '''
+/// [E.new]
+enum E {
+  v1(), v2.^new(), v3;
+
+  void foo() {}
+}
+''';
+
+    var result = await _rename(testCode, 'newName');
+    _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+  v1.newName(), v2.newName(), v3.newName();
+
+  const E.newName();
+
+  void foo() {}
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_enum_named() async {
+    var testCode = '''
+/// [E.test]
+enum E {
+  v1.^test(), v2.other();
+  const E.test(); // 0
+  const E.other() : this.test();
+}
+''';
+
+    var result = await _rename(testCode, 'newName');
+    _assertTestChangeResult('''
+/// [E.newName]
+enum E {
+  v1.newName(), v2.other();
+  const E.newName(); // 0
+  const E.other() : this.newName();
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_enum_remove() async {
+    var testCode = '''
+/// [E]
+enum E {
+  v1.test(), v2.other();
+  const E.^test(); // 0
+  const E.other() : this.test();
+}
+''';
+
+    var result = await _rename(testCode, '');
+    _assertTestChangeResult('''
+/// [E]
+enum E {
+  v1(), v2.other();
+  const E(); // 0
+  const E.other() : this();
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_named() async {
+    var testCode = '''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [A.test] and [new A.test]
+class A {
+  A.^test() {} // marker
+  factory A._() = A.test;
+}
+class B extends A {
+  B() : super.test() {}
+}
+main() {
+  new A.test();
+  A.test;
+}
+''';
+
+    var result = await _rename(testCode, 'newName');
+    _assertTestChangeResult('''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [A.newName] and [new A.newName]
+class A {
+  A.newName() {} // marker
+  factory A._() = A.newName;
+}
+class B extends A {
+  B() : super.newName() {}
+}
+main() {
+  new A.newName();
+  A.newName;
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_remove() async {
+    var testCode = '''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [A.test] and [new A.test]
+class A {
+  A.^test() {} // marker
+  factory A._() = A.test;
+}
+class B extends A {
+  B() : super.test() {}
+}
+main() {
+  new A.test();
+  A.test;
+}
+''';
+
+    var result = await _rename(testCode, '');
+    _assertTestChangeResult('''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [A] and [new A]
+class A {
+  A() {} // marker
+  factory A._() = A;
+}
+class B extends A {
+  B() : super() {}
+}
+main() {
+  new A();
+  A.new;
+}
+''', result!.replaceMatches.first.matches);
+  }
+
+  void test_rename_constructor_synthetic() async {
+    var testCode = '''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [new A] and [A.new]
+class A {
+  int field = 0;
+}
+class B extends A {
+  B() : super() {}
+}
+main() {
+  new A();
+  A.^new;
+}
+''';
+
+    var result = await _rename(testCode, 'newName');
+    _assertTestChangeResult('''
+// ignore: deprecated_new_in_comment_reference
+/// Documentation for [new A.newName] and [A.newName]
+class A {
+  int field = 0;
+
+  A.newName();
+}
+class B extends A {
+  B() : super.newName() {}
+}
+main() {
+  new A.newName();
+  A.newName;
+}
+''', result!.replaceMatches.first.matches);
   }
 
   void test_rename_field() async {
-    var result = await _rename(r'''
+    var testCode = '''
 class A{
   int get ^x => 5;
 }
@@ -277,17 +572,22 @@
 void foo() {
   var m = A().x;
 }
-''', 'y');
+''';
 
-    expect(result, isNotNull);
-    expect(result!.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
-          [CharacterLocation(2, 11), CharacterLocation(6, 15)]),
-    ]);
+    var result = await _rename(testCode, 'y');
+    _assertTestChangeResult('''
+class A{
+  int get y => 5;
+}
+
+void foo() {
+  var m = A().y;
+}
+''', result!.replaceMatches.first.matches);
   }
 
   void test_rename_field_static_private() async {
-    var result = await _rename(r'''
+    var testCode = '''
 class A{
   static const ^_val = 1234;
 }
@@ -295,17 +595,22 @@
 void foo() {
   print(A._val);
 }
-''', '_newVal');
+''';
 
-    expect(result, isNotNull);
-    expect(result!.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
-          [CharacterLocation(2, 16), CharacterLocation(6, 11)]),
-    ]);
+    var result = await _rename(testCode, '_newVal');
+    _assertTestChangeResult('''
+class A{
+  static const _newVal = 1234;
+}
+
+void foo() {
+  print(A._newVal);
+}
+''', result!.replaceMatches.first.matches);
   }
 
   void test_rename_function() async {
-    var result = await _rename(r'''
+    var testCode = '''
 test() {}
 ^foo() {}
 void f() {
@@ -313,15 +618,18 @@
   print(test());
   foo();
 }
-''', 'bar');
+''';
 
-    expect(result!.matches.length, 1);
-    expect(result.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'), [
-        CharacterLocation(2, 1),
-        CharacterLocation(6, 3),
-      ])
-    ]);
+    var result = await _rename(testCode, 'bar');
+    _assertTestChangeResult('''
+test() {}
+bar() {}
+void f() {
+  print(test);
+  print(test());
+  bar();
+}
+''', result!.replaceMatches.first.matches);
   }
 
   void test_rename_function_imported() async {
@@ -335,28 +643,27 @@
   ^foo();
 }
 ''', 'bar');
-    expect(result!.matches.length, 2);
-    expect(result.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/a.dart'), [
-        CharacterLocation(1, 1),
-      ]),
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
-          [CharacterLocation(3, 3)])
-    ]);
+
+    expect(result!.replaceMatches.length, 2);
+    expect(result.replaceMatches.first.matches,
+        [ReplaceInfo('bar', CharacterLocation(3, 3), 3)]);
+    expect(result.replaceMatches[1].matches,
+        [ReplaceInfo('bar', CharacterLocation(1, 1), 3)]);
   }
 
   void test_rename_local() async {
-    var result = await _rename(r'''
+    var testCode = '''
 void foo() {
   var ^a = 0; var b = a + 1;
 }
-''', 'bar');
+''';
 
-    expect(result!.matches.length, 1);
-    expect(
-        result.matches[0],
-        CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
-            [CharacterLocation(2, 7), CharacterLocation(2, 22)]));
+    var result = await _rename(testCode, 'bar');
+    _assertTestChangeResult('''
+void foo() {
+  var bar = 0; var b = bar + 1;
+}
+''', result!.replaceMatches.first.matches);
   }
 
   void test_rename_method_imported() async {
@@ -372,56 +679,76 @@
   var a = A().^foo();
 }
 ''', 'bar');
-    expect(result!.matches.length, 2);
-    expect(result.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/a.dart'), [
-        CharacterLocation(2, 3),
-      ]),
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
-          [CharacterLocation(3, 15)])
-    ]);
+    expect(result!.replaceMatches.length, 2);
+    expect(result.replaceMatches.first.matches,
+        [ReplaceInfo('bar', CharacterLocation(3, 15), 3)]);
+    expect(result.replaceMatches[1].matches,
+        [ReplaceInfo('bar', CharacterLocation(2, 3), 3)]);
   }
 
   void test_rename_parameter() async {
-    var result = await _rename(r'''
+    var testCode = '''
 void foo(String ^a) {
   var b = a + 1;
 }
-''', 'bar');
-    expect(result!.matches.length, 1);
-    expect(result.checkName.oldName, 'a');
+''';
+    var result = await _rename(testCode, 'bar');
+    _assertTestChangeResult('''
+void foo(String bar) {
+  var b = bar + 1;
+}
+''', result!.replaceMatches.first.matches);
   }
 
   void test_rename_propertyAccessor() async {
-    var result = await _rename(r'''
+    var testCode = '''
 get foo {}
 set foo(x) {}
 void f() {
   print(foo);
   ^foo = 1;
   foo += 2;
-''', 'bar');
-    expect(result!.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
-          [CharacterLocation(1, 5), CharacterLocation(4, 9)]),
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'), [
-        CharacterLocation(2, 5),
-        CharacterLocation(5, 3),
-        CharacterLocation(6, 3)
-      ])
-    ]);
+''';
+    var result = await _rename(testCode, 'bar');
+    _assertTestChangeResult('''
+get bar {}
+set bar(x) {}
+void f() {
+  print(bar);
+  bar = 1;
+  bar += 2;
+''', result!.replaceMatches.first.matches);
   }
 
   void test_rename_typeAlias_functionType() async {
-    var result = await _rename(r'''
+    var testCode = '''
 typedef ^F = void Function();
 void f(F a) {}
-''', 'bar');
+''';
 
-    expect(result!.matches, [
-      CiderSearchMatch(convertPath('/workspace/dart/test/lib/test.dart'),
-          [CharacterLocation(1, 9), CharacterLocation(2, 8)])
-    ]);
+    var result = await _rename(testCode, 'bar');
+    _assertTestChangeResult('''
+typedef bar = void Function();
+void f(bar a) {}
+''', result!.replaceMatches.first.matches);
+  }
+
+  // Asserts that the results of the rename is the [expectedCode].
+  void _assertTestChangeResult(
+      String expectedCode, List<ReplaceInfo> changes) async {
+    var edits = <SourceEdit>[];
+    for (var change in changes) {
+      var offset =
+          _lineInfo!.getOffsetOfLine(change.startPosition.lineNumber - 1) +
+              change.startPosition.columnNumber -
+              1;
+      edits.add(SourceEdit(offset, change.length, change.replacementText));
+    }
+    edits.sort((a, b) => a.offset.compareTo(b.offset));
+    edits = edits.reversed.toList();
+    // validate resulting code
+    var actualCode = SourceEdit.applySequence(_testCode, edits);
+    expect(actualCode, expectedCode);
   }
 
   Future<CheckNameResponse?> _checkName(String content, String newName) async {
@@ -459,6 +786,7 @@
       _correctionContext.line,
       _correctionContext.character,
     );
+    _lineInfo = canRename?.lineInfo;
     return canRename?.checkNewName(newName)?.computeRenameRanges2();
   }
 
@@ -470,8 +798,8 @@
     var lineInfo = LineInfo.fromContent(content);
     var location = lineInfo.getLocation(offset);
 
-    content = content.substring(0, offset) + content.substring(offset + 1);
-    newFile(testPath, content);
+    _testCode = content.substring(0, offset) + content.substring(offset + 1);
+    newFile(testPath, _testCode);
 
     _correctionContext = _CorrectionContext(
       content,
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index 989c73c..e333fc8 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -44,21 +44,42 @@
 const M = 1024 * 1024 /*1 MiB*/;
 const memoryCacheSize = 200 * M;
 
+class CiderSearchInfo {
+  final CharacterLocation startPosition;
+  final int length;
+  final MatchKind kind;
+
+  CiderSearchInfo(this.startPosition, this.length, this.kind);
+
+  @override
+  bool operator ==(Object other) =>
+      other is CiderSearchInfo &&
+      startPosition == other.startPosition &&
+      length == other.length &&
+      kind == other.kind;
+}
+
 class CiderSearchMatch {
   final String path;
+  @deprecated
   final List<CharacterLocation?> startPositions;
+  final List<CiderSearchInfo> references;
 
-  CiderSearchMatch(this.path, this.startPositions);
+  CiderSearchMatch(this.path, this.startPositions, this.references);
 
   @override
   bool operator ==(Object other) =>
       other is CiderSearchMatch &&
       path == other.path &&
       const ListEquality<CharacterLocation?>()
-          .equals(startPositions, other.startPositions);
+          // ignore: deprecated_member_use_from_same_package
+          .equals(startPositions, other.startPositions) &&
+      const ListEquality<CiderSearchInfo>()
+          .equals(references, other.references);
 
   @override
   String toString() {
+    // ignore: deprecated_member_use_from_same_package
     return '($path, $startPositions)';
   }
 }
@@ -191,13 +212,19 @@
           var resolved = await resolve2(path: path);
           var collector = ReferencesCollector(element);
           resolved.unit.accept(collector);
-          var offsets = collector.offsets;
-          if (offsets.isNotEmpty) {
+          var matches = collector.references;
+          if (matches.isNotEmpty) {
             var lineInfo = resolved.unit.lineInfo;
             references.add(CiderSearchMatch(
                 path,
-                offsets
-                    .map((offset) => lineInfo.getLocation(offset))
+                matches
+                    .map((match) => lineInfo.getLocation(match.offset))
+                    .toList(),
+                matches
+                    .map((match) => CiderSearchInfo(
+                        lineInfo.getLocation(match.offset),
+                        match.length,
+                        match.matchKind))
                     .toList()));
           }
         });
diff --git a/pkg/analyzer/lib/src/dart/micro/utils.dart b/pkg/analyzer/lib/src/dart/micro/utils.dart
index 9afec39b..6908497 100644
--- a/pkg/analyzer/lib/src/dart/micro/utils.dart
+++ b/pkg/analyzer/lib/src/dart/micro/utils.dart
@@ -6,6 +6,8 @@
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/dart/ast/element_locator.dart';
+import 'package:analyzer/src/dart/element/element.dart';
+import 'package:collection/src/iterable_extensions.dart';
 
 /// Return the [Element] of the given [node], or `null` if [node] is `null` or
 /// does not have an element.
@@ -34,6 +36,32 @@
   return element;
 }
 
+/// If the given [constructor] is a synthetic constructor created for a
+/// [ClassTypeAlias], return the actual constructor of a [ClassDeclaration]
+/// which is invoked.  Return `null` if a redirection cycle is detected.
+ConstructorElement? _getActualConstructorElement(
+    ConstructorElement? constructor) {
+  var seenConstructors = <ConstructorElement?>{};
+  while (constructor is ConstructorElementImpl && constructor.isSynthetic) {
+    var enclosing = constructor.enclosingElement;
+    if (enclosing.isMixinApplication) {
+      var superInvocation = constructor.constantInitializers
+          .whereType<SuperConstructorInvocation>()
+          .singleOrNull;
+      if (superInvocation != null) {
+        constructor = superInvocation.staticElement;
+      }
+    } else {
+      break;
+    }
+    // fail if a cycle is detected
+    if (!seenConstructors.add(constructor)) {
+      return null;
+    }
+  }
+  return constructor;
+}
+
 /// Return the [ImportElement] that declared [prefix] and imports [element].
 ///
 /// [libraryElement] - the [LibraryElement] where reference is.
@@ -132,9 +160,55 @@
       libraryElement, prefix, usedElement, importElementsMap);
 }
 
+class MatchInfo {
+  final int offset;
+  final int length;
+  final MatchKind matchKind;
+
+  MatchInfo(this.offset, this.length, this.matchKind);
+}
+
+/// Instances of the enum [MatchKind] represent the kind of reference that was
+/// found when a match represents a reference to an element.
+class MatchKind {
+  /// A declaration of an element.
+  static const MatchKind DECLARATION = MatchKind('DECLARATION');
+
+  /// A reference to an element in which it is being read.
+  static const MatchKind READ = MatchKind('READ');
+
+  /// A reference to an element in which it is being both read and written.
+  static const MatchKind READ_WRITE = MatchKind('READ_WRITE');
+
+  /// A reference to an element in which it is being written.
+  static const MatchKind WRITE = MatchKind('WRITE');
+
+  /// A reference to an element in which it is being invoked.
+  static const MatchKind INVOCATION = MatchKind('INVOCATION');
+
+  /// An invocation of an enum constructor from an enum constant without
+  /// arguments.
+  static const MatchKind INVOCATION_BY_ENUM_CONSTANT_WITHOUT_ARGUMENTS =
+      MatchKind('INVOCATION_BY_ENUM_CONSTANT_WITHOUT_ARGUMENTS');
+
+  /// A reference to an element in which it is referenced.
+  static const MatchKind REFERENCE = MatchKind('REFERENCE');
+
+  /// A tear-off reference to a constructor.
+  static const MatchKind REFERENCE_BY_CONSTRUCTOR_TEAR_OFF =
+      MatchKind('REFERENCE_BY_CONSTRUCTOR_TEAR_OFF');
+
+  final String name;
+
+  const MatchKind(this.name);
+
+  @override
+  String toString() => name;
+}
+
 class ReferencesCollector extends GeneralizingAstVisitor<void> {
   final Element element;
-  final List<int> offsets = [];
+  final List<MatchInfo> references = [];
 
   ReferencesCollector(this.element);
 
@@ -142,16 +216,20 @@
   void visitAssignmentExpression(AssignmentExpression node) {
     if (node.writeElement != null &&
         node.writeElement is PropertyAccessorElement) {
+      var kind = MatchKind.WRITE;
       var property = node.writeElement as PropertyAccessorElement;
       if (property.variable == element || property == element) {
         if (node.leftHandSide is SimpleIdentifier) {
-          offsets.add(node.leftHandSide.offset);
+          references.add(MatchInfo(
+              node.leftHandSide.offset, node.leftHandSide.length, kind));
         } else if (node.leftHandSide is PrefixedIdentifier) {
           var prefixIdentifier = node.leftHandSide as PrefixedIdentifier;
-          offsets.add(prefixIdentifier.identifier.offset);
+          references.add(MatchInfo(prefixIdentifier.identifier.offset,
+              prefixIdentifier.identifier.length, kind));
         } else if (node.leftHandSide is PropertyAccess) {
           var accessor = node.leftHandSide as PropertyAccess;
-          offsets.add(accessor.propertyName.offset);
+          references.add(
+              MatchInfo(accessor.propertyName.offset, accessor.length, kind));
         }
       }
     }
@@ -159,18 +237,157 @@
         node.readElement is PropertyAccessorElement) {
       var property = node.readElement as PropertyAccessorElement;
       if (property.variable == element) {
-        offsets.add(node.rightHandSide.offset);
+        references.add(MatchInfo(node.rightHandSide.offset,
+            node.rightHandSide.length, MatchKind.READ));
+      }
+    }
+  }
+
+  @override
+  visitCommentReference(CommentReference node) {
+    var expression = node.expression;
+    if (expression is Identifier) {
+      var element = expression.staticElement;
+      if (element is ConstructorElement) {
+        if (expression is PrefixedIdentifier) {
+          var offset = expression.prefix.end;
+          var length = expression.end - offset;
+          references.add(MatchInfo(offset, length, MatchKind.REFERENCE));
+          return;
+        } else {
+          var offset = expression.end;
+          references.add(MatchInfo(offset, 0, MatchKind.REFERENCE));
+          return;
+        }
+      }
+    } else if (expression is PropertyAccess) {
+      // Nothing to do?
+    } else {
+      throw UnimplementedError('Unhandled CommentReference expression type: '
+          '${expression.runtimeType}');
+    }
+  }
+
+  @override
+  visitConstructorDeclaration(ConstructorDeclaration node) {
+    var e = node.declaredElement;
+    if (e == element) {
+      if (e!.name.isEmpty) {
+        references.add(
+            MatchInfo(e.nameOffset + e.nameLength, 0, MatchKind.DECLARATION));
+      } else {
+        var offset = node.period!.offset;
+        var length = node.name!.end - offset;
+        references.add(MatchInfo(offset, length, MatchKind.DECLARATION));
+      }
+    }
+    super.visitConstructorDeclaration(node);
+  }
+
+  @override
+  void visitConstructorName(ConstructorName node) {
+    var e = node.staticElement?.declaration;
+    e = _getActualConstructorElement(e);
+    MatchKind kind;
+    int offset;
+    int length;
+    if (e == element) {
+      if (node.parent is ConstructorReference) {
+        kind = MatchKind.REFERENCE_BY_CONSTRUCTOR_TEAR_OFF;
+      } else if (node.parent is InstanceCreationExpression) {
+        kind = MatchKind.INVOCATION;
+      } else {
+        kind = MatchKind.REFERENCE;
+      }
+      if (node.name != null) {
+        offset = node.period!.offset;
+        length = node.name!.end - offset;
+      } else {
+        offset = node.type.end;
+        length = 0;
+      }
+      references.add(MatchInfo(offset, length, kind));
+    }
+    if (e!.enclosingElement == element) {
+      kind = MatchKind.REFERENCE;
+      offset = node.offset;
+      length = element.nameLength;
+      references.add(MatchInfo(offset, length, kind));
+    }
+  }
+
+  @override
+  void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+    var constructorElement = node.constructorElement;
+    if (constructorElement != null && constructorElement == element) {
+      int offset;
+      int length;
+      var constructorSelector = node.arguments?.constructorSelector;
+      if (constructorSelector != null) {
+        offset = constructorSelector.period.offset;
+        length = constructorSelector.name.end - offset;
+      } else {
+        offset = node.name.end;
+        length = 0;
+      }
+      var kind = node.arguments == null
+          ? MatchKind.INVOCATION_BY_ENUM_CONSTANT_WITHOUT_ARGUMENTS
+          : MatchKind.INVOCATION;
+      references.add(MatchInfo(offset, length, kind));
+    }
+  }
+
+  @override
+  void visitRedirectingConstructorInvocation(
+      RedirectingConstructorInvocation node) {
+    var e = node.staticElement;
+    if (e == element) {
+      if (node.constructorName != null) {
+        int offset = node.period!.offset;
+        int length = node.constructorName!.end - offset;
+        references.add(MatchInfo(offset, length, MatchKind.INVOCATION));
+      } else {
+        int offset = node.thisKeyword.end;
+        references.add(MatchInfo(offset, 0, MatchKind.INVOCATION));
       }
     }
   }
 
   @override
   void visitSimpleIdentifier(SimpleIdentifier node) {
+    if (node.inDeclarationContext()) {
+      return;
+    }
     var e = node.staticElement;
     if (e == element) {
-      offsets.add(node.offset);
+      references.add(MatchInfo(node.offset, node.length, MatchKind.REFERENCE));
     } else if (e is PropertyAccessorElement && e.variable == element) {
-      offsets.add(node.offset);
+      bool inGetterContext = node.inGetterContext();
+      bool inSetterContext = node.inSetterContext();
+      MatchKind kind;
+      if (inGetterContext && inSetterContext) {
+        kind = MatchKind.READ_WRITE;
+      } else if (inGetterContext) {
+        kind = MatchKind.READ;
+      } else {
+        kind = MatchKind.WRITE;
+      }
+      references.add(MatchInfo(node.offset, node.length, kind));
+    }
+  }
+
+  @override
+  void visitSuperConstructorInvocation(SuperConstructorInvocation node) {
+    var e = node.staticElement;
+    if (e == element) {
+      if (node.constructorName != null) {
+        int offset = node.period!.offset;
+        int length = node.constructorName!.end - offset;
+        references.add(MatchInfo(offset, length, MatchKind.INVOCATION));
+      } else {
+        int offset = node.superKeyword.end;
+        references.add(MatchInfo(offset, 0, MatchKind.INVOCATION));
+      }
     }
   }
 }
diff --git a/pkg/analyzer/lib/src/summary2/macro_application.dart b/pkg/analyzer/lib/src/summary2/macro_application.dart
index d18910f..a65e183 100644
--- a/pkg/analyzer/lib/src/summary2/macro_application.dart
+++ b/pkg/analyzer/lib/src/summary2/macro_application.dart
@@ -12,6 +12,7 @@
     as macro;
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
+import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/summary2/library_builder.dart';
 import 'package:analyzer/src/summary2/link.dart';
@@ -22,7 +23,7 @@
   final MultiMacroExecutor macroExecutor;
   final LibraryBuilder libraryBuilder;
 
-  final Map<MacroTargetElement, List<MacroApplication>> _applications =
+  final Map<MacroTargetElement, List<_MacroApplication>> _applications =
       Map.identity();
 
   final Map<ClassDeclaration, macro.ClassDeclaration> _classDeclarations = {};
@@ -147,36 +148,31 @@
     List<Annotation> annotations,
     macro.Declaration Function() getDeclaration,
   ) async {
-    final applications = <MacroApplication>[];
+    final applications = <_MacroApplication>[];
+
     for (var i = 0; i < annotations.length; i++) {
-      final annotation = annotations[i];
-      final macroElement = _importedMacroElement(annotation.name);
-      final argumentsNode = annotation.arguments;
-      if (macroElement is ClassElementImpl && argumentsNode != null) {
-        final importedLibrary = macroElement.library;
+      Future<MacroClassInstance?> instantiateSingle({
+        required ClassElementImpl macroClass,
+        required String constructorName,
+        required ArgumentList argumentsNode,
+      }) async {
+        final importedLibrary = macroClass.library;
         final macroExecutor = importedLibrary.bundleMacroExecutor;
         if (macroExecutor != null) {
-          await _runWithCatchingExceptions(
+          return await _runWithCatchingExceptions(
             () async {
               final arguments = _buildArguments(
                 annotationIndex: i,
                 node: argumentsNode,
               );
-              final declaration = getDeclaration();
-              final macroInstance = await macroExecutor.instantiate(
-                libraryUri: macroElement.librarySource.uri,
-                className: macroElement.name,
-                constructorName: '', // TODO
+              return await macroExecutor.instantiate(
+                libraryUri: macroClass.librarySource.uri,
+                className: macroClass.name,
+                constructorName: constructorName,
                 arguments: arguments,
                 identifierResolver: _IdentifierResolver(),
                 declarationKind: macro.DeclarationKind.clazz,
-                declaration: declaration,
-              );
-              applications.add(
-                MacroApplication(
-                  annotationIndex: i,
-                  instance: macroInstance,
-                ),
+                declaration: getDeclaration(),
               );
             },
             annotationIndex: i,
@@ -185,6 +181,43 @@
             },
           );
         }
+        return null;
+      }
+
+      final annotation = annotations[i];
+      final macroInstance = await _importedMacroDeclaration(
+        annotation.name,
+        whenClass: ({
+          required macroClass,
+        }) async {
+          final argumentsNode = annotation.arguments;
+          if (argumentsNode != null) {
+            return await instantiateSingle(
+              macroClass: macroClass,
+              constructorName: '', // TODO(scheglov) implement
+              argumentsNode: argumentsNode,
+            );
+          }
+        },
+        whenGetter: ({
+          required macroClass,
+          required instanceCreation,
+        }) async {
+          return await instantiateSingle(
+            macroClass: macroClass,
+            constructorName: '', // TODO(scheglov) implement
+            argumentsNode: instanceCreation.argumentList,
+          );
+        },
+      );
+
+      if (macroInstance != null) {
+        applications.add(
+          _MacroApplication(
+            annotationIndex: i,
+            instance: macroInstance,
+          ),
+        );
       }
     }
     if (applications.isNotEmpty) {
@@ -192,8 +225,19 @@
     }
   }
 
-  /// Return the macro element referenced by the [node].
-  ElementImpl? _importedMacroElement(Identifier node) {
+  /// If [node] references a macro, invokes the right callback.
+  Future<R?> _importedMacroDeclaration<R>(
+    Identifier node, {
+    required Future<R?> Function({
+      required ClassElementImpl macroClass,
+    })
+        whenClass,
+    required Future<R?> Function({
+      required ClassElementImpl macroClass,
+      required InstanceCreationExpression instanceCreation,
+    })
+        whenGetter,
+  }) async {
     final String? prefix;
     final String name;
     if (node is PrefixedIdentifier) {
@@ -224,8 +268,28 @@
 
       final lookupResult = importedLibrary.scope.lookup(name);
       final element = lookupResult.getter;
-      if (element is ClassElementImpl && element.isMacro) {
-        return element;
+      if (element is ClassElementImpl) {
+        if (element.isMacro) {
+          return await whenClass(macroClass: element);
+        }
+      } else if (element is PropertyAccessorElementImpl &&
+          element.isGetter &&
+          element.isSynthetic) {
+        final variable = element.variable;
+        final variableType = variable.type;
+        if (variable is ConstTopLevelVariableElementImpl &&
+            variableType is InterfaceType) {
+          final macroClass = variableType.element;
+          final initializer = variable.constantInitializer;
+          if (macroClass is ClassElementImpl &&
+              macroClass.isMacro &&
+              initializer is InstanceCreationExpression) {
+            return await whenGetter(
+              macroClass: macroClass,
+              instanceCreation: initializer,
+            );
+          }
+        }
       }
     }
     return null;
@@ -380,13 +444,13 @@
   }
 
   /// Run the [body], report exceptions as [MacroApplicationError]s to [onError].
-  static Future<void> _runWithCatchingExceptions<T>(
+  static Future<T?> _runWithCatchingExceptions<T>(
     Future<T> Function() body, {
     required int annotationIndex,
     required void Function(MacroApplicationError) onError,
   }) async {
     try {
-      await body();
+      return await body();
     } on MacroApplicationError catch (e) {
       onError(e);
     } on macro.RemoteException catch (e) {
@@ -406,21 +470,10 @@
         ),
       );
     }
+    return null;
   }
 }
 
-class MacroApplication {
-  final int annotationIndex;
-  final MacroClassInstance instance;
-
-  MacroApplication({
-    required this.annotationIndex,
-    required this.instance,
-  });
-
-  bool shouldExecute(macro.Phase phase) => instance.shouldExecute(phase);
-}
-
 /// Helper class for evaluating arguments for a single constructor based
 /// macro application.
 class _ArgumentEvaluation {
@@ -551,6 +604,18 @@
   }
 }
 
+class _MacroApplication {
+  final int annotationIndex;
+  final MacroClassInstance instance;
+
+  _MacroApplication({
+    required this.annotationIndex,
+    required this.instance,
+  });
+
+  bool shouldExecute(macro.Phase phase) => instance.shouldExecute(phase);
+}
+
 class _TypeResolver implements macro.TypeResolver {
   @override
   Future<macro.StaticType> resolve(macro.TypeAnnotationCode type) {
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index f0b0c235..934b7bd 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -396,8 +396,8 @@
     var element = await _findElement(6, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(bPath, [CharacterLocation(4, 11)]),
-      CiderSearchMatch(aPath, [CharacterLocation(1, 7)])
+      CiderSearchMatch(bPath, [CharacterLocation(4, 11)],
+          [CiderSearchInfo(CharacterLocation(4, 11), 1, MatchKind.REFERENCE)])
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -418,10 +418,10 @@
     var element = await _findElement(16, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(
-          aPath, [CharacterLocation(2, 7), CharacterLocation(5, 5)])
+      CiderSearchMatch(aPath, [CharacterLocation(5, 5)],
+          [CiderSearchInfo(CharacterLocation(5, 5), 3, MatchKind.WRITE)])
     ];
-    expect(result, unorderedEquals(expected));
+    expect(result, expected);
   }
 
   test_findReferences_function() async {
@@ -438,8 +438,8 @@
     var element = await _findElement(11, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(
-          aPath, [CharacterLocation(2, 3), CharacterLocation(5, 1)])
+      CiderSearchMatch(aPath, [CharacterLocation(2, 3)],
+          [CiderSearchInfo(CharacterLocation(2, 3), 3, MatchKind.REFERENCE)])
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -465,8 +465,8 @@
     var element = await _findElement(20, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(bPath, [CharacterLocation(5, 15)]),
-      CiderSearchMatch(aPath, [CharacterLocation(2, 11)])
+      CiderSearchMatch(bPath, [CharacterLocation(5, 15)],
+          [CiderSearchInfo(CharacterLocation(5, 15), 3, MatchKind.REFERENCE)])
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -485,8 +485,8 @@
     var element = await _findElement(39, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(
-          aPath, [CharacterLocation(3, 9), CharacterLocation(4, 11)])
+      CiderSearchMatch(aPath, [CharacterLocation(4, 11)],
+          [CiderSearchInfo(CharacterLocation(4, 11), 3, MatchKind.REFERENCE)])
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -519,9 +519,10 @@
     var element = await _findElement(17, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(bPath, [CharacterLocation(5, 5)]),
-      CiderSearchMatch(
-          aPath, [CharacterLocation(2, 8), CharacterLocation(7, 4)])
+      CiderSearchMatch(bPath, [CharacterLocation(5, 5)],
+          [CiderSearchInfo(CharacterLocation(5, 5), 4, MatchKind.REFERENCE)]),
+      CiderSearchMatch(aPath, [CharacterLocation(7, 4)],
+          [CiderSearchInfo(CharacterLocation(7, 4), 4, MatchKind.REFERENCE)])
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -547,8 +548,8 @@
     var element = await _findElement(21, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(bPath, [CharacterLocation(5, 5)]),
-      CiderSearchMatch(aPath, [CharacterLocation(2, 12)])
+      CiderSearchMatch(bPath, [CharacterLocation(5, 5)],
+          [CiderSearchInfo(CharacterLocation(5, 5), 5, MatchKind.WRITE)])
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -575,8 +576,8 @@
     var element = await _findElement(19, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(bPath, [CharacterLocation(4, 13)]),
-      CiderSearchMatch(aPath, [CharacterLocation(3, 9)])
+      CiderSearchMatch(bPath, [CharacterLocation(4, 13)],
+          [CiderSearchInfo(CharacterLocation(4, 13), 3, MatchKind.REFERENCE)])
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -603,8 +604,8 @@
     var element = await _findElement(20, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(bPath, [CharacterLocation(4, 3)]),
-      CiderSearchMatch(aPath, [CharacterLocation(3, 10)])
+      CiderSearchMatch(bPath, [CharacterLocation(4, 3)],
+          [CiderSearchInfo(CharacterLocation(4, 3), 3, MatchKind.WRITE)]),
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -624,8 +625,8 @@
     var element = await _findElement(10, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(
-          aPath, [CharacterLocation(1, 11), CharacterLocation(4, 11)])
+      CiderSearchMatch(aPath, [CharacterLocation(4, 11)],
+          [CiderSearchInfo(CharacterLocation(4, 11), 1, MatchKind.READ)])
     ];
     expect(result, unorderedEquals(expected));
   }
@@ -644,14 +645,20 @@
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
       CiderSearchMatch(aPath, [
-        CharacterLocation(1, 11),
         CharacterLocation(2, 8),
         CharacterLocation(4, 12)
+      ], [
+        CiderSearchInfo(CharacterLocation(2, 8), 5, MatchKind.WRITE),
+        CiderSearchInfo(CharacterLocation(4, 12), 5, MatchKind.WRITE)
       ])
     ];
     expect(result.map((e) => e.path),
         unorderedEquals(expected.map((e) => e.path)));
-    expect(result.map((e) => e.startPositions),
+    // ignore: deprecated_member_use_from_same_package
+    expect(
+        // ignore: deprecated_member_use_from_same_package
+        result.map((e) => e.startPositions),
+        // ignore: deprecated_member_use_from_same_package
         unorderedEquals(expected.map((e) => e.startPositions)));
   }
 
@@ -672,8 +679,8 @@
     var element = await _findElement(8, aPath);
     var result = await fileResolver.findReferences2(element);
     var expected = <CiderSearchMatch>[
-      CiderSearchMatch(bPath, [CharacterLocation(3, 8)]),
-      CiderSearchMatch(aPath, [CharacterLocation(1, 9)])
+      CiderSearchMatch(bPath, [CharacterLocation(3, 8)],
+          [CiderSearchInfo(CharacterLocation(3, 8), 4, MatchKind.REFERENCE)])
     ];
     expect(result, unorderedEquals(expected));
   }
diff --git a/pkg/analyzer/test/src/summary/macro_test.dart b/pkg/analyzer/test/src/summary/macro_test.dart
index 1fdc7e6..6f9fc4e 100644
--- a/pkg/analyzer/test/src/summary/macro_test.dart
+++ b/pkg/analyzer/test/src/summary/macro_test.dart
@@ -63,6 +63,130 @@
     );
   }
 
+  test_application_getter_withoutPrefix_withoutArguments() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+import 'dart:async';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
+
+macro class MyMacro implements ClassTypesMacro {
+  FutureOr<void> buildTypesForClass(clazz, builder) {
+    builder.declareType(
+      'MyClass',
+      DeclarationCode.fromString('class MyClass {}'),
+    );
+  }
+}
+
+const myMacro = MyMacro();
+''');
+
+    var library = await buildLibrary(r'''
+import 'a.dart';
+
+@myMacro
+class A {}
+''', preBuildSequence: [
+      {'package:test/a.dart'}
+    ]);
+
+    checkElementText(
+        library,
+        r'''
+library
+  imports
+    package:test/a.dart
+  definingUnit
+    classes
+      class A @33
+        metadata
+          Annotation
+            atSign: @ @18
+            name: SimpleIdentifier
+              token: myMacro @19
+              staticElement: package:test/a.dart::@getter::myMacro
+              staticType: null
+            element: package:test/a.dart::@getter::myMacro
+        constructors
+          synthetic @-1
+  parts
+    package:test/_macro_types.dart
+      classes
+        class MyClass @6
+          constructors
+            synthetic @-1
+  exportScope
+    A: package:test/test.dart;A
+    MyClass: package:test/test.dart;package:test/_macro_types.dart;MyClass
+''',
+        withExportScope: true);
+  }
+
+  test_application_getter_withPrefix_withoutArguments() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+import 'dart:async';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
+
+macro class MyMacro implements ClassTypesMacro {
+  FutureOr<void> buildTypesForClass(clazz, builder) {
+    builder.declareType(
+      'MyClass',
+      DeclarationCode.fromString('class MyClass {}'),
+    );
+  }
+}
+
+const myMacro = MyMacro();
+''');
+
+    var library = await buildLibrary(r'''
+import 'a.dart' as prefix;
+
+@prefix.myMacro
+class A {}
+''', preBuildSequence: [
+      {'package:test/a.dart'}
+    ]);
+
+    checkElementText(
+        library,
+        r'''
+library
+  imports
+    package:test/a.dart as prefix @19
+  definingUnit
+    classes
+      class A @50
+        metadata
+          Annotation
+            atSign: @ @28
+            name: PrefixedIdentifier
+              prefix: SimpleIdentifier
+                token: prefix @29
+                staticElement: self::@prefix::prefix
+                staticType: null
+              period: . @35
+              identifier: SimpleIdentifier
+                token: myMacro @36
+                staticElement: package:test/a.dart::@getter::myMacro
+                staticType: null
+              staticElement: package:test/a.dart::@getter::myMacro
+              staticType: null
+            element: package:test/a.dart::@getter::myMacro
+        constructors
+          synthetic @-1
+  parts
+    package:test/_macro_types.dart
+      classes
+        class MyClass @6
+          constructors
+            synthetic @-1
+  exportScope
+    A: package:test/test.dart;A
+    MyClass: package:test/test.dart;package:test/_macro_types.dart;MyClass
+''',
+        withExportScope: true);
+  }
+
   test_application_newInstance_withoutPrefix() async {
     newFile('$testPackageLibPath/a.dart', r'''
 import 'dart:async';
diff --git a/pkg/compiler/lib/src/common/codegen.dart b/pkg/compiler/lib/src/common/codegen.dart
index 6da4ba4..7ded407 100644
--- a/pkg/compiler/lib/src/common/codegen.dart
+++ b/pkg/compiler/lib/src/common/codegen.dart
@@ -11,7 +11,7 @@
 import '../common.dart';
 import '../common/elements.dart';
 import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnit;
 import '../elements/entities.dart';
 import '../elements/types.dart' show DartType, InterfaceType;
 import '../inferrer/abstract_value_domain.dart';
@@ -110,42 +110,39 @@
     source.begin(tag);
     MemberEntity member = source.readMember();
     Set<DynamicUse> dynamicUses = source
-        .readList(() => DynamicUse.readFromDataSource(source),
-            emptyAsNull: true)
+        .readListOrNull(() => DynamicUse.readFromDataSource(source))
         ?.toSet();
     Set<StaticUse> staticUses = source
-        .readList(() => StaticUse.readFromDataSource(source), emptyAsNull: true)
+        .readListOrNull(() => StaticUse.readFromDataSource(source))
         ?.toSet();
     Set<TypeUse> typeUses = source
-        .readList(() => TypeUse.readFromDataSource(source), emptyAsNull: true)
+        .readListOrNull(() => TypeUse.readFromDataSource(source))
         ?.toSet();
     Set<ConstantUse> constantUses = source
-        .readList(() => ConstantUse.readFromDataSource(source),
-            emptyAsNull: true)
+        .readListOrNull(() => ConstantUse.readFromDataSource(source))
         ?.toSet();
     Set<Pair<DartType, DartType>> typeVariableBoundsSubtypeChecks =
-        source.readList(() {
+        source.readListOrNull(() {
       return Pair(source.readDartType(), source.readDartType());
-    }, emptyAsNull: true)?.toSet();
+    })?.toSet();
     Set<String> constSymbols = source.readStrings(emptyAsNull: true)?.toSet();
-    List<Set<ClassEntity>> specializedGetInterceptors = source.readList(() {
+    List<Set<ClassEntity>> specializedGetInterceptors =
+        source.readListOrNull(() {
       return source.readClasses().toSet();
-    }, emptyAsNull: true);
+    });
     bool usesInterceptor = source.readBool();
     int asyncMarkersValue = source.readIntOrNull();
     EnumSet<AsyncMarker> asyncMarkers =
         asyncMarkersValue != null ? EnumSet.fromValue(asyncMarkersValue) : null;
     Set<GenericInstantiation> genericInstantiations = source
-        .readList(() => GenericInstantiation.readFromDataSource(source),
-            emptyAsNull: true)
+        .readListOrNull(() => GenericInstantiation.readFromDataSource(source))
         ?.toSet();
-    List<NativeBehavior> nativeBehaviors = source.readList(
-        () => NativeBehavior.readFromDataSource(source),
-        emptyAsNull: true);
+    List<NativeBehavior> nativeBehaviors =
+        source.readListOrNull(() => NativeBehavior.readFromDataSource(source));
     Set<FunctionEntity> nativeMethods =
         source.readMembersOrNull<FunctionEntity>()?.toSet();
     Set<Selector> oneShotInterceptors = source
-        .readList(() => Selector.readFromDataSource(source), emptyAsNull: true)
+        .readListOrNull(() => Selector.readFromDataSource(source))
         ?.toSet();
     source.end(tag);
     return _CodegenImpact.internal(
@@ -2208,7 +2205,8 @@
   }
 
   List<T> readList<T extends js.Node>({bool emptyAsNull = false}) {
-    return source.readList(read, emptyAsNull: emptyAsNull);
+    // TODO(48820): Is [emptyAsNull] unused?
+    return emptyAsNull ? source.readListOrNull(read) : source.readList(read);
   }
 }
 
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index c482566..acbb3fc 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -55,7 +55,7 @@
 import 'phase/modular_analysis.dart' as modular_analysis;
 import 'resolution/enqueuer.dart';
 import 'serialization/task.dart';
-import 'serialization/serialization.dart';
+import 'serialization/serialization.dart' show DataSourceIndices;
 import 'serialization/strategies.dart';
 import 'universe/selector.dart' show Selector;
 import 'universe/codegen_world_builder.dart';
diff --git a/pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart b/pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart
index 275d178..0ecaced 100644
--- a/pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart
+++ b/pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.10
-
 import 'dart:collection';
 
 import 'nodes.dart';
@@ -19,7 +17,7 @@
 
   /// The [CombinerType] which should be used to combine [imports]. Either
   /// [imports] will be a singleton, or [combinerType] will be non-null.
-  final CombinerType combinerType;
+  final CombinerType? combinerType;
 
   /// The [ImportEntity]s underlying this [Constraint].
   final Set<ImportEntity> imports;
@@ -81,8 +79,9 @@
     for (var import in imports) {
       var libraryUri = import.enclosingLibraryUri;
       var prefix = import.name;
-      var uriNodes = importsByUriAndPrefix[libraryUri] ??= {};
-      uriNodes[prefix] = import;
+      Map<String, ImportEntity> uriNodes =
+          importsByUriAndPrefix[libraryUri] ??= {};
+      uriNodes[prefix!] = import;
     }
 
     // A helper function for looking up an [ImportEntity] from a
@@ -93,17 +92,17 @@
         throw 'Uri for constraint not found $uri';
       }
       var prefix = node.prefix;
-      if (!importsByUriAndPrefix[uri].containsKey(prefix)) {
+      if (!importsByUriAndPrefix[uri]!.containsKey(prefix)) {
         throw 'Prefix: $prefix not found for uri: $uri';
       }
-      return importsByUriAndPrefix[uri][prefix];
+      return importsByUriAndPrefix[uri]![prefix]!;
     }
 
     // 2) Create a [Constraint] for each [NamedNode]. Also,
     // index each [Constraint] by [NamedNode].
     Map<NamedNode, Constraint> nodeToConstraintMap = {};
     for (var constraint in nodes.named) {
-      CombinerType combinerType = null;
+      CombinerType? combinerType = null;
       Set<ImportEntity> imports = {};
       if (constraint is ReferenceNode) {
         imports.add(_lookupReference(constraint));
@@ -123,8 +122,8 @@
     // 3) Build a graph of [Constraint]s by processing user constraints and
     // intializing each [Constraint]'s predecessor / successor members.
     void createEdge(NamedNode successorNode, NamedNode predecessorNode) {
-      var successor = nodeToConstraintMap[successorNode];
-      var predecessor = nodeToConstraintMap[predecessorNode];
+      var successor = nodeToConstraintMap[successorNode]!;
+      var predecessor = nodeToConstraintMap[predecessorNode]!;
       successor.predecessors.add(predecessor);
       predecessor.successors.add(successor);
     }
@@ -189,7 +188,8 @@
         // reprocessing constraints when we need to consider new transitive
         // children.
         if (processed.containsKey(predecessor) &&
-            processed[predecessor].containsAll(predecessorTransitiveChildren)) {
+            processed[predecessor]!
+                .containsAll(predecessorTransitiveChildren)) {
           continue;
         }
         (processed[predecessor] ??= {}).addAll(predecessorTransitiveChildren);
diff --git a/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart b/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
index a32133a..50abe03 100644
--- a/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
+++ b/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.10
-
 /// A [Node] is an abstract base class for all [Node]s parsed from json
 /// constraints.
 abstract class Node {
@@ -76,7 +74,7 @@
 enum CombinerType { and, or }
 
 CombinerType parseCombinerType(Map<String, dynamic> nodeJson) {
-  String type = nodeJson['type'];
+  String? type = nodeJson['type'];
   switch (type) {
     case 'and':
       return CombinerType.and;
@@ -94,7 +92,6 @@
     case CombinerType.or:
       return 'or';
   }
-  throw 'Unreachable';
 }
 
 T _jsonLookup<T>(Map<String, dynamic> nodeJson, String key) {
@@ -136,8 +133,8 @@
     String name = _jsonLookup(nodeJson, 'name');
     List<dynamic> referencesJson = _jsonLookup(nodeJson, 'nodes');
     Set<ReferenceNode> references = {};
-    for (String reference in referencesJson) {
-      references.add(nameMap[reference]);
+    for (final reference in referencesJson) {
+      references.add(nameMap[reference as String] as ReferenceNode);
     }
     return CombinerNode(name, parseCombinerType(nodeJson), references);
   }
@@ -159,10 +156,7 @@
   final NamedNode predecessor;
   final NamedNode successor;
 
-  RelativeOrderNode({this.predecessor, this.successor}) {
-    // TODO(joshualitt) make these both required parameters.
-    assert(this.predecessor != null && this.successor != null);
-  }
+  RelativeOrderNode({required this.predecessor, required this.successor});
 
   @override
   Map<String, dynamic> toJson() {
@@ -203,8 +197,8 @@
       Map<String, dynamic> nodeJson, Map<String, NamedNode> nameMap) {
     List<dynamic> referencesJson = _jsonLookup(nodeJson, 'nodes');
     Set<NamedNode> nodes = {};
-    for (String reference in referencesJson) {
-      nodes.add(nameMap[reference]);
+    for (final reference in referencesJson) {
+      nodes.add(nameMap[reference as String]!);
     }
     return FuseNode(nodes);
   }
@@ -221,7 +215,7 @@
 
 class ProgramSplitBuilder {
   final Map<String, NamedNode> namedNodes = {};
-  ReferenceNodeNamer _referenceNodeNamer;
+  ReferenceNodeNamer? _referenceNodeNamer;
 
   /// 'uri#prefix' will become a key to reference this node in other builder
   /// calls.
@@ -236,7 +230,7 @@
   ReferenceNodeNamer get referenceNodeNamer =>
       _referenceNodeNamer ?? _uriAndPrefixNamer;
 
-  NamedNode _addNamedNode(NamedNode node) {
+  T _addNamedNode<T extends NamedNode>(T node) {
     if (namedNodes.containsKey(node.name)) {
       throw 'Node with name ${node.name} already exists: '
           '${namedNodes[node.name]}';
@@ -249,7 +243,7 @@
     if (!namedNodes.containsKey(nodeName)) {
       throw 'Missing reference node for $nodeName';
     }
-    return namedNodes[nodeName];
+    return namedNodes[nodeName]!;
   }
 
   ReferenceNode _lookupReferenceNode(String nodeName) {
@@ -257,7 +251,7 @@
     if (node is! ReferenceNode) {
       throw 'node $nodeName is not a ReferenceNode.';
     }
-    return node as ReferenceNode;
+    return node;
   }
 
   /// Returns a [ReferenceNode] referencing [importUriAndPrefix].
diff --git a/pkg/compiler/lib/src/deferred_load/program_split_constraints/parser.dart b/pkg/compiler/lib/src/deferred_load/program_split_constraints/parser.dart
index b798f7b..0d2efa6 100644
--- a/pkg/compiler/lib/src/deferred_load/program_split_constraints/parser.dart
+++ b/pkg/compiler/lib/src/deferred_load/program_split_constraints/parser.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.10
-
 import 'dart:convert';
 
 import 'nodes.dart';
@@ -35,12 +33,13 @@
   /// Reads a program split constraints json file string and returns a [Nodes]
   /// object reflecting the parsed constraints.
   ConstraintData read(String programSplitJson) {
-    List<dynamic> doc = json.decode(programSplitJson);
+    List<dynamic> allConstraints = json.decode(programSplitJson);
     List<Map<String, dynamic>> referenceConstraints = [];
     List<Map<String, dynamic>> combinerConstraints = [];
     List<Map<String, dynamic>> fuseConstraints = [];
     List<Map<String, dynamic>> relativeOrderConstraints = [];
-    for (Map<String, dynamic> constraint in doc) {
+    for (final c in allConstraints) {
+      final constraint = c as Map<String, dynamic>;
       switch (constraint['type']) {
         case 'reference':
           referenceConstraints.add(constraint);
diff --git a/pkg/compiler/lib/src/inferrer/trivial.dart b/pkg/compiler/lib/src/inferrer/trivial.dart
index e66532e..8745ab9 100644
--- a/pkg/compiler/lib/src/inferrer/trivial.dart
+++ b/pkg/compiler/lib/src/inferrer/trivial.dart
@@ -9,7 +9,7 @@
 import '../elements/names.dart';
 import '../elements/types.dart' show DartType;
 import '../ir/static_type.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import '../universe/selector.dart';
 import '../universe/world_builder.dart';
 import '../universe/use.dart';
diff --git a/pkg/compiler/lib/src/io/position_information.dart b/pkg/compiler/lib/src/io/position_information.dart
index 58afd06..ee6cfd7 100644
--- a/pkg/compiler/lib/src/io/position_information.dart
+++ b/pkg/compiler/lib/src/io/position_information.dart
@@ -13,7 +13,7 @@
 import '../js/js.dart' as js;
 import '../js/js_debug.dart';
 import '../js/js_source_mapping.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import '../util/util.dart';
 import 'code_output.dart' show BufferedCodeOutput;
 import 'source_information.dart';
@@ -42,9 +42,8 @@
         () => SourceLocation.readFromDataSource(source));
     SourceLocation innerPosition = source.readCached<SourceLocation>(
         () => SourceLocation.readFromDataSource(source));
-    List<FrameContext> inliningContext = source.readList(
-        () => FrameContext.readFromDataSource(source),
-        emptyAsNull: true);
+    List<FrameContext> inliningContext =
+        source.readListOrNull(() => FrameContext.readFromDataSource(source));
     source.end(tag);
     return PositionSourceInformation(
         startPosition, innerPosition, inliningContext);
diff --git a/pkg/compiler/lib/src/io/source_information.dart b/pkg/compiler/lib/src/io/source_information.dart
index 7c1d64e..0171346 100644
--- a/pkg/compiler/lib/src/io/source_information.dart
+++ b/pkg/compiler/lib/src/io/source_information.dart
@@ -10,7 +10,7 @@
 import '../common.dart';
 import '../elements/entities.dart';
 import '../js/js.dart' show JavaScriptNodeSourceInformation;
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import '../universe/call_structure.dart';
 import 'source_file.dart';
 import 'position_information.dart';
diff --git a/pkg/compiler/lib/src/ir/impact_data.dart b/pkg/compiler/lib/src/ir/impact_data.dart
index 38886b0..d60cebe 100644
--- a/pkg/compiler/lib/src/ir/impact_data.dart
+++ b/pkg/compiler/lib/src/ir/impact_data.dart
@@ -1072,87 +1072,65 @@
 
   ImpactData.fromDataSource(DataSourceReader source) {
     source.begin(tag);
-    _superInitializers = source.readList(
-        () => _SuperInitializer.fromDataSource(source),
-        emptyAsNull: true);
-    _superSets =
-        source.readList(() => source.readMemberNode(), emptyAsNull: true);
-    _superGets =
-        source.readList(() => source.readMemberNode(), emptyAsNull: true);
-    _superInvocations = source.readList(
-        () => _SuperInvocation.fromDataSource(source),
-        emptyAsNull: true);
-    _instanceSets = source.readList(
-        () => _InstanceAccess.fromDataSource(source),
-        emptyAsNull: true);
-    _dynamicSets = source.readList(() => _DynamicAccess.fromDataSource(source),
-        emptyAsNull: true);
-    _instanceGets = source.readList(
-        () => _InstanceAccess.fromDataSource(source),
-        emptyAsNull: true);
-    _dynamicGets = source.readList(() => _DynamicAccess.fromDataSource(source),
-        emptyAsNull: true);
-    _functionInvocations = source.readList(
-        () => _FunctionInvocation.fromDataSource(source),
-        emptyAsNull: true);
-    _instanceInvocations = source.readList(
-        () => _InstanceInvocation.fromDataSource(source),
-        emptyAsNull: true);
-    _dynamicInvocations = source.readList(
-        () => _DynamicInvocation.fromDataSource(source),
-        emptyAsNull: true);
-    _localFunctionInvocations = source.readList(
-        () => _LocalFunctionInvocation.fromDataSource(source),
-        emptyAsNull: true);
-    _staticInvocations = source.readList(
-        () => _StaticInvocation.fromDataSource(source),
-        emptyAsNull: true);
-    _constructorInvocations = source.readList(
-        () => _ConstructorInvocation.fromDataSource(source),
-        emptyAsNull: true);
+    _superInitializers =
+        source.readListOrNull(() => _SuperInitializer.fromDataSource(source));
+    _superSets = source.readListOrNull(() => source.readMemberNode());
+    _superGets = source.readListOrNull(() => source.readMemberNode());
+    _superInvocations =
+        source.readListOrNull(() => _SuperInvocation.fromDataSource(source));
+    _instanceSets =
+        source.readListOrNull(() => _InstanceAccess.fromDataSource(source));
+    _dynamicSets =
+        source.readListOrNull(() => _DynamicAccess.fromDataSource(source));
+    _instanceGets =
+        source.readListOrNull(() => _InstanceAccess.fromDataSource(source));
+    _dynamicGets =
+        source.readListOrNull(() => _DynamicAccess.fromDataSource(source));
+    _functionInvocations =
+        source.readListOrNull(() => _FunctionInvocation.fromDataSource(source));
+    _instanceInvocations =
+        source.readListOrNull(() => _InstanceInvocation.fromDataSource(source));
+    _dynamicInvocations =
+        source.readListOrNull(() => _DynamicInvocation.fromDataSource(source));
+    _localFunctionInvocations = source
+        .readListOrNull(() => _LocalFunctionInvocation.fromDataSource(source));
+    _staticInvocations =
+        source.readListOrNull(() => _StaticInvocation.fromDataSource(source));
+    _constructorInvocations = source
+        .readListOrNull(() => _ConstructorInvocation.fromDataSource(source));
     _features = EnumSet<_Feature>.fromValue(source.readInt());
-    _typeUses = source.readList(() => _TypeUse.fromDataSource(source),
-        emptyAsNull: true);
-    _redirectingInitializers = source.readList(
-        () => _RedirectingInitializer.fromDataSource(source),
-        emptyAsNull: true);
+    _typeUses = source.readListOrNull(() => _TypeUse.fromDataSource(source));
+    _redirectingInitializers = source
+        .readListOrNull(() => _RedirectingInitializer.fromDataSource(source));
     _fieldInitializers = source.readMemberNodes<ir.Field>(emptyAsNull: true);
     _fieldConstantInitializers =
         source.readMemberNodeMap(source.readTreeNodes, emptyAsNull: true);
-    _typeLiterals = source.readList(() => _TypeLiteral.fromDataSource(source),
-        emptyAsNull: true);
+    _typeLiterals =
+        source.readListOrNull(() => _TypeLiteral.fromDataSource(source));
     _localFunctions = source.readTreeNodes(emptyAsNull: true);
-    _genericInstantiations = source.readList(
-        () => _GenericInstantiation.fromDataSource(source),
-        emptyAsNull: true);
-    _staticSets = source.readList(() => _StaticAccess.fromDataSource(source),
-        emptyAsNull: true);
-    _staticGets = source.readList(() => _StaticAccess.fromDataSource(source),
-        emptyAsNull: true);
-    _staticTearOffs = source.readList(
-        () => _StaticAccess.fromDataSource(source),
-        emptyAsNull: true);
-    _mapLiterals = source.readList(() => _MapLiteral.fromDataSource(source),
-        emptyAsNull: true);
-    _listLiterals = source.readList(
-        () => _ContainerLiteral.fromDataSource(source),
-        emptyAsNull: true);
-    _setLiterals = source.readList(
-        () => _ContainerLiteral.fromDataSource(source),
-        emptyAsNull: true);
+    _genericInstantiations = source
+        .readListOrNull(() => _GenericInstantiation.fromDataSource(source));
+    _staticSets =
+        source.readListOrNull(() => _StaticAccess.fromDataSource(source));
+    _staticGets =
+        source.readListOrNull(() => _StaticAccess.fromDataSource(source));
+    _staticTearOffs =
+        source.readListOrNull(() => _StaticAccess.fromDataSource(source));
+    _mapLiterals =
+        source.readListOrNull(() => _MapLiteral.fromDataSource(source));
+    _listLiterals =
+        source.readListOrNull(() => _ContainerLiteral.fromDataSource(source));
+    _setLiterals =
+        source.readListOrNull(() => _ContainerLiteral.fromDataSource(source));
     _symbolLiterals = source.readStrings(emptyAsNull: true)?.toSet();
     _stringLiterals = source.readStrings(emptyAsNull: true)?.toSet();
-    _boolLiterals =
-        source.readList(() => source.readBool(), emptyAsNull: true)?.toSet();
-    _doubleLiterals = source
-        .readList(() => source.readDoubleValue(), emptyAsNull: true)
-        ?.toSet();
-    _intLiterals = source
-        .readList(() => source.readIntegerValue(), emptyAsNull: true)
-        ?.toSet();
-    _runtimeTypeUses = source.readList(
-        () => _RuntimeTypeUse.fromDataSource(source),
-        emptyAsNull: true);
+    _boolLiterals = source.readListOrNull(() => source.readBool())?.toSet();
+    _doubleLiterals =
+        source.readListOrNull(() => source.readDoubleValue())?.toSet();
+    _intLiterals =
+        source.readListOrNull(() => source.readIntegerValue())?.toSet();
+    _runtimeTypeUses =
+        source.readListOrNull(() => _RuntimeTypeUse.fromDataSource(source));
 
     // TODO(johnniwinther): Remove these when CFE provides constants.
     _constructorNodes =
diff --git a/pkg/compiler/lib/src/js_backend/specialized_checks.dart b/pkg/compiler/lib/src/js_backend/specialized_checks.dart
index 78d1786..3c6558b 100644
--- a/pkg/compiler/lib/src/js_backend/specialized_checks.dart
+++ b/pkg/compiler/lib/src/js_backend/specialized_checks.dart
@@ -5,7 +5,7 @@
 // @dart = 2.10
 
 import '../common/elements.dart' show ElementEnvironment, JCommonElements;
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnitData;
 import '../elements/entities.dart';
 import '../elements/types.dart';
 import '../js_backend/interceptor_data.dart' show InterceptorData;
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index e4ae932..55c36df 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -19,7 +19,7 @@
 import '../common/elements.dart';
 import '../common/names.dart';
 import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show LateOutputUnitDataBuilder;
 import '../elements/entities.dart';
 import '../elements/entity_utils.dart' as utils;
 import '../elements/indexed.dart';
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index 95fb87e..effb47c 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -14,7 +14,8 @@
 import '../common/tasks.dart';
 import '../common/work.dart';
 import '../compiler.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart'
+    show LateOutputUnitDataBuilder, OutputUnitData;
 import '../dump_info.dart';
 import '../elements/entities.dart';
 import '../enqueue.dart';
diff --git a/pkg/compiler/lib/src/js_model/js_world.dart b/pkg/compiler/lib/src/js_model/js_world.dart
index a90587d..9c1f429 100644
--- a/pkg/compiler/lib/src/js_model/js_world.dart
+++ b/pkg/compiler/lib/src/js_model/js_world.dart
@@ -11,7 +11,8 @@
 import '../common.dart';
 import '../common/elements.dart' show JCommonElements, JElementEnvironment;
 import '../common/names.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart'
+    show LateOutputUnitDataBuilder, OutputUnitData;
 import '../elements/entities.dart';
 import '../elements/entity_utils.dart' as utils;
 import '../elements/names.dart';
diff --git a/pkg/compiler/lib/src/js_model/js_world_builder.dart b/pkg/compiler/lib/src/js_model/js_world_builder.dart
index 3449c01..72efd4f 100644
--- a/pkg/compiler/lib/src/js_model/js_world_builder.dart
+++ b/pkg/compiler/lib/src/js_model/js_world_builder.dart
@@ -11,7 +11,7 @@
 import '../common/elements.dart';
 import '../constants/constant_system.dart' as constant_system;
 import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnit, OutputUnitData;
 import '../elements/entities.dart';
 import '../elements/indexed.dart';
 import '../elements/names.dart';
diff --git a/pkg/compiler/lib/src/js_model/type_recipe.dart b/pkg/compiler/lib/src/js_model/type_recipe.dart
index 6b3025e..f503312 100644
--- a/pkg/compiler/lib/src/js_model/type_recipe.dart
+++ b/pkg/compiler/lib/src/js_model/type_recipe.dart
@@ -10,7 +10,7 @@
 import '../elements/types.dart';
 import '../diagnostics/invariant.dart';
 import '../diagnostics/spannable.dart' show CURRENT_ELEMENT_SPANNABLE;
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import '../util/util.dart' show Hashing;
 
 abstract class TypeRecipeDomain {
diff --git a/pkg/compiler/lib/src/native/behavior.dart b/pkg/compiler/lib/src/native/behavior.dart
index cde763a..7dd67d5 100644
--- a/pkg/compiler/lib/src/native/behavior.dart
+++ b/pkg/compiler/lib/src/native/behavior.dart
@@ -13,7 +13,7 @@
 import '../js_backend/native_data.dart' show NativeBasicData;
 import '../js_model/js_world_builder.dart' show JsToFrontendMap;
 import '../options.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import '../universe/side_effects.dart' show SideEffects;
 import 'js.dart';
 
diff --git a/pkg/compiler/lib/src/ordered_typeset.dart b/pkg/compiler/lib/src/ordered_typeset.dart
index 148fc9a..62b0eef 100644
--- a/pkg/compiler/lib/src/ordered_typeset.dart
+++ b/pkg/compiler/lib/src/ordered_typeset.dart
@@ -12,7 +12,7 @@
 import 'common.dart';
 import 'elements/entities.dart';
 import 'elements/types.dart';
-import 'serialization/serialization.dart';
+import 'serialization/serialization_interfaces.dart';
 
 /// An ordered set of the supertypes of a class. The supertypes of a class are
 /// ordered by decreasing hierarchy depth and by the order they are extended,
diff --git a/pkg/compiler/lib/src/serialization/serialization.dart b/pkg/compiler/lib/src/serialization/serialization.dart
index af54708..a863d05 100644
--- a/pkg/compiler/lib/src/serialization/serialization.dart
+++ b/pkg/compiler/lib/src/serialization/serialization.dart
@@ -12,7 +12,7 @@
 import '../closure.dart';
 import '../constants/constant_system.dart' as constant_system;
 import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnit;
 import '../diagnostics/source_span.dart';
 import '../elements/entities.dart';
 import '../elements/indexed.dart';
diff --git a/pkg/compiler/lib/src/serialization/serialization_interfaces.dart b/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
index 161aa37..a2ee9dd 100644
--- a/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
+++ b/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
@@ -5,6 +5,7 @@
 import 'package:kernel/ast.dart' as ir show DartType, Member, TreeNode;
 
 import '../elements/entities.dart';
+import '../elements/types.dart' show DartType;
 
 export 'tags.dart';
 
@@ -62,9 +63,18 @@
   void writeDartTypeNode(ir.DartType value);
   void writeDartTypeNodeOrNull(ir.DartType? value);
 
+  void writeDartType(DartType value);
+  void writeDartTypeOrNull(DartType? value);
+  void writeDartTypesOrNull(Iterable<DartType>? values);
+  void writeDartTypes(Iterable<DartType> values);
+
   void inMemberContext(ir.Member context, void f());
   void writeTreeNodeMapInContext<V>(Map<ir.TreeNode, V>? map, void f(V value),
       {bool allowNull = false});
+
+  void writeCached<E extends Object>(E value, void f(E value));
+  void writeList<E extends Object>(Iterable<E> values, void f(E value),
+      {bool allowNull = false});
 }
 
 /// Migrated interface for methods of DataSourceReader.
@@ -92,7 +102,16 @@
   ir.DartType readDartTypeNode();
   ir.DartType? readDartTypeNodeOrNull();
 
+  DartType readDartType();
+  DartType? readDartTypeOrNull();
+  List<DartType> readDartTypes();
+  List<DartType>? readDartTypesOrNull();
+
   T inMemberContext<T>(ir.Member context, T f());
   Map<K, V> readTreeNodeMapInContext<K extends ir.TreeNode, V>(V f());
   Map<K, V>? readTreeNodeMapInContextOrNull<K extends ir.TreeNode, V>(V f());
+
+  E readCached<E extends Object>(E f());
+  List<E> readList<E extends Object>(E f());
+  List<E>? readListOrNull<E extends Object>(E f());
 }
diff --git a/pkg/compiler/lib/src/serialization/sink.dart b/pkg/compiler/lib/src/serialization/sink.dart
index ca1eddd..67ec6b5 100644
--- a/pkg/compiler/lib/src/serialization/sink.dart
+++ b/pkg/compiler/lib/src/serialization/sink.dart
@@ -138,6 +138,7 @@
 
   /// Writes a reference to [value] to this data sink. If [value] has not yet
   /// been serialized, [f] is called to serialize the value itself.
+  @override
   void writeCached<E>(E value, void f(E value)) {
     IndexedSink sink = _generalCaches[E] ??= _createSink<E>();
     sink.write(value, (v) => f(v));
@@ -160,6 +161,7 @@
   ///
   /// This is a convenience method to be used together with
   /// [DataSourceReader.readList].
+  @override
   void writeList<E>(Iterable<E> values, void f(E value),
       {bool allowNull = false}) {
     if (values == null) {
@@ -603,12 +605,14 @@
   }
 
   /// Writes the type [value] to this data sink.
+  @override
   void writeDartType(DartType value) {
     _writeDataKind(DataKind.dartType);
     value.writeToDataSink(this, []);
   }
 
   /// Writes the optional type [value] to this data sink.
+  @override
   void writeDartTypeOrNull(DartType /*?*/ value) {
     _writeDataKind(DataKind.dartType);
     if (value == null) {
@@ -623,6 +627,7 @@
   ///
   /// This is a convenience method to be used together with
   /// [DataSourceReader.readDartTypesOrNull].
+  @override
   void writeDartTypesOrNull(Iterable<DartType> /*?*/ values) {
     if (values == null) {
       writeInt(0);
@@ -635,6 +640,7 @@
   ///
   /// This is a convenience method to be used together with
   /// [DataSourceReader.readDartTypes].
+  @override
   void writeDartTypes(Iterable<DartType> values) {
     writeInt(values.length);
     for (DartType value in values) {
diff --git a/pkg/compiler/lib/src/serialization/source.dart b/pkg/compiler/lib/src/serialization/source.dart
index b5c8689..806731c 100644
--- a/pkg/compiler/lib/src/serialization/source.dart
+++ b/pkg/compiler/lib/src/serialization/source.dart
@@ -197,6 +197,7 @@
 
   /// Reads a reference to an [E] value from this data source. If the value has
   /// not yet been deserialized, [f] is called to deserialize the value itself.
+  @override
   E readCached<E>(E f()) {
     IndexedSource source = _generalCaches[E] ??= _createSource<E>();
     return source.read(f);
@@ -215,16 +216,27 @@
     return null;
   }
 
-  /// Reads a list of [E] values from this data source. If [emptyAsNull] is
-  /// `true`, `null` is returned instead of an empty list.
+  /// Reads a list of [E] values from this data source.
   ///
   /// This is a convenience method to be used together with
   /// [DataSinkWriter.writeList].
-  List<E> readList<E>(E f(), {bool emptyAsNull = false}) {
+  @override
+  List<E> readList<E>(E f()) {
+    return readListOrNull<E>(f) ?? List<E>.empty();
+  }
+
+  /// Reads a list of [E] values from this data source.
+  /// `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSinkWriter.writeList].
+  @override
+  List<E> /*?*/ readListOrNull<E>(E f()) {
     int count = readInt();
-    if (count == 0 && emptyAsNull) return null;
-    List<E> list = List<E>.filled(count, null);
-    for (int i = 0; i < count; i++) {
+    if (count == 0) return null;
+    final first = f();
+    List<E> list = List<E>.filled(count, first);
+    for (int i = 1; i < count; i++) {
       list[i] = f();
     }
     return list;
@@ -658,6 +670,7 @@
   }
 
   /// Reads a type from this data source.
+  @override
   DartType /*!*/ readDartType() {
     _checkDataKind(DataKind.dartType);
     final type = DartType.readFromDataSource(this, []);
@@ -665,6 +678,7 @@
   }
 
   /// Reads a nullable type from this data source.
+  @override
   DartType /*?*/ readDartTypeOrNull() {
     _checkDataKind(DataKind.dartType);
     return DartType.readFromDataSourceOrNull(this, []);
@@ -674,6 +688,7 @@
   ///
   /// This is a convenience method to be used together with
   /// [DataSinkWriter.writeDartTypes].
+  @override
   List<DartType> readDartTypes() {
     // Share the list when empty.
     return readDartTypesOrNull() ?? const [];
@@ -684,6 +699,7 @@
   ///
   /// This is a convenience method to be used together with
   /// [DataSinkWriter.writeDartTypes].
+  @override
   List<DartType> /*?*/ readDartTypesOrNull() {
     int count = readInt();
     if (count == 0) return null;
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index d897f20..3755c74 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -14,7 +14,7 @@
 import '../common/names.dart';
 import '../constants/constant_system.dart' as constant_system;
 import '../constants/values.dart';
-import '../deferred_load/output_unit.dart';
+import '../deferred_load/output_unit.dart' show OutputUnit;
 import '../dump_info.dart';
 import '../elements/entities.dart';
 import '../elements/jumps.dart';
diff --git a/pkg/compiler/lib/src/ssa/codegen_helpers.dart b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
index ca162ab..3600c44 100644
--- a/pkg/compiler/lib/src/ssa/codegen_helpers.dart
+++ b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
@@ -787,6 +787,10 @@
     // at use in the check.
     if (instruction.usedBy.isEmpty) {
       visitInstruction(instruction);
+    } else {
+      // The name argument can be generated at use. If present, it is either a
+      // string constant or a reference to a string.
+      analyzeInputs(instruction, 1);
     }
   }
 
@@ -1280,6 +1284,8 @@
       // TODO(sra): Check if a.x="s" can avoid or specialize a write barrier.
       if (instruction is HFieldSet) return true;
 
+      if (instruction is HLateCheck) return true;
+
       // TODO(sra): Determine if other uses result in faster JavaScript code.
       return false;
     }
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index 36f104e..72dff8e 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -3701,12 +3701,15 @@
 /// A check for a late sentinel to determine if a late field may be read from or
 /// written to.
 abstract class HLateCheck extends HCheck {
-  final HInstruction name;
-
-  HLateCheck(HInstruction input, this.name, AbstractValue type)
+  HLateCheck(HInstruction input, HInstruction /*?*/ name, AbstractValue type)
       : super([input, if (name != null) name], type);
 
-  bool get hasName => name != null;
+  bool get hasName => inputs.length > 1;
+
+  HInstruction get name {
+    if (hasName) return inputs[1];
+    throw StateError('HLateCheck.name: no name');
+  }
 
   @override
   bool isControlFlow() => true;
diff --git a/pkg/compiler/lib/src/universe/class_hierarchy.dart b/pkg/compiler/lib/src/universe/class_hierarchy.dart
index edaba36..80505f7 100644
--- a/pkg/compiler/lib/src/universe/class_hierarchy.dart
+++ b/pkg/compiler/lib/src/universe/class_hierarchy.dart
@@ -9,7 +9,7 @@
 import '../elements/entities.dart';
 import '../elements/types.dart' show InterfaceType;
 import '../kernel/element_map.dart' show KernelToElementMap;
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import 'class_set.dart';
 
 // TODO(johnniwinther): Move more methods from `JClosedWorld` to
diff --git a/pkg/compiler/lib/src/universe/class_set.dart b/pkg/compiler/lib/src/universe/class_set.dart
index b538a40..a527f69 100644
--- a/pkg/compiler/lib/src/universe/class_set.dart
+++ b/pkg/compiler/lib/src/universe/class_set.dart
@@ -10,7 +10,7 @@
 
 import '../elements/entities.dart' show ClassEntity;
 import '../elements/indexed.dart' show IndexedClass;
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import '../util/enumset.dart' show EnumSet;
 
 /// Enum for the different kinds of instantiation of a class.
@@ -546,12 +546,12 @@
       DataSourceReader source, Map<ClassEntity, ClassHierarchyNode> nodeMap) {
     source.begin(tag);
     ClassHierarchyNode node = nodeMap[source.readClass()];
-    List<ClassHierarchyNode> subtypes = source.readList(() {
+    List<ClassHierarchyNode> subtypes = source.readListOrNull(() {
       return nodeMap[source.readClass()];
-    }, emptyAsNull: true);
-    List<ClassHierarchyNode> mixinApplications = source.readList(() {
+    });
+    List<ClassHierarchyNode> mixinApplications = source.readListOrNull(() {
       return nodeMap[source.readClass()];
-    }, emptyAsNull: true);
+    });
     source.end(tag);
     return ClassSet(node)
       .._subtypes = subtypes
diff --git a/pkg/compiler/lib/src/universe/feature.dart b/pkg/compiler/lib/src/universe/feature.dart
index 213c7bf..b1a01a6 100644
--- a/pkg/compiler/lib/src/universe/feature.dart
+++ b/pkg/compiler/lib/src/universe/feature.dart
@@ -16,7 +16,7 @@
 
 import '../elements/types.dart';
 import '../ir/runtime_type_analysis.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import '../util/util.dart';
 
 /// A language feature that may be seen in the program.
diff --git a/pkg/compiler/lib/src/universe/member_usage.dart b/pkg/compiler/lib/src/universe/member_usage.dart
index 2356b7a..21027d0 100644
--- a/pkg/compiler/lib/src/universe/member_usage.dart
+++ b/pkg/compiler/lib/src/universe/member_usage.dart
@@ -10,7 +10,7 @@
 import '../constants/values.dart';
 import '../elements/entities.dart';
 import '../js_model/closure.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 import '../util/enumset.dart';
 import 'call_structure.dart';
 
diff --git a/pkg/compiler/lib/src/universe/side_effects.dart b/pkg/compiler/lib/src/universe/side_effects.dart
index a8cf6a2..9533a2b 100644
--- a/pkg/compiler/lib/src/universe/side_effects.dart
+++ b/pkg/compiler/lib/src/universe/side_effects.dart
@@ -7,7 +7,7 @@
 library universe.side_effects;
 
 import '../elements/entities.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
 
 class SideEffects {
   /// Tag used for identifying serialized [SideEffects] objects in a debugging
diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart
index 276eee7..7c9e97e5 100644
--- a/pkg/compiler/lib/src/world.dart
+++ b/pkg/compiler/lib/src/world.dart
@@ -8,7 +8,7 @@
 
 import 'closure.dart';
 import 'common/elements.dart' show JCommonElements, JElementEnvironment;
-import 'deferred_load/output_unit.dart';
+import 'deferred_load/output_unit.dart' show OutputUnitData;
 import 'elements/entities.dart';
 import 'elements/names.dart';
 import 'elements/types.dart';
diff --git a/pkg/compiler/test/deferred/constant_emission_test_helper.dart b/pkg/compiler/test/deferred/constant_emission_test_helper.dart
index e7bb164..d5d7aa0 100644
--- a/pkg/compiler/test/deferred/constant_emission_test_helper.dart
+++ b/pkg/compiler/test/deferred/constant_emission_test_helper.dart
@@ -9,7 +9,7 @@
 
 import 'package:compiler/src/compiler.dart';
 import 'package:compiler/src/constants/values.dart';
-import 'package:compiler/src/deferred_load/output_unit.dart';
+import 'package:compiler/src/deferred_load/output_unit.dart' show OutputUnit;
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/elements/types.dart';
 import 'package:compiler/src/js_emitter/model.dart';
diff --git a/pkg/compiler/test/deferred/load_graph_segmentation_test.dart b/pkg/compiler/test/deferred/load_graph_segmentation_test.dart
index 67954ca..8fc553a 100644
--- a/pkg/compiler/test/deferred/load_graph_segmentation_test.dart
+++ b/pkg/compiler/test/deferred/load_graph_segmentation_test.dart
@@ -10,7 +10,7 @@
 
 import 'package:async_helper/async_helper.dart';
 import 'package:compiler/src/compiler.dart';
-import 'package:compiler/src/deferred_load/output_unit.dart';
+import 'package:compiler/src/deferred_load/output_unit.dart' show OutputUnit;
 import 'package:compiler/src/js_emitter/startup_emitter/fragment_merger.dart';
 import 'package:expect/expect.dart';
 import '../helpers/memory_compiler.dart';
diff --git a/pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart b/pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart
index 92c1cb6..fe2a251 100644
--- a/pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart
+++ b/pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart
@@ -8,7 +8,8 @@
 import 'package:compiler/src/closure.dart';
 import 'package:compiler/src/common.dart';
 import 'package:compiler/src/compiler.dart';
-import 'package:compiler/src/deferred_load/output_unit.dart';
+import 'package:compiler/src/deferred_load/output_unit.dart'
+    show OutputUnit, OutputUnitData;
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/ir/util.dart';
 import 'package:compiler/src/js_model/element_map.dart';
diff --git a/pkg/compiler/test/dump_info/data/deferred/main.dart b/pkg/compiler/test/dump_info/data/deferred/main.dart
index 7e1cee2..58ffa26 100644
--- a/pkg/compiler/test/dump_info/data/deferred/main.dart
+++ b/pkg/compiler/test/dump_info/data/deferred/main.dart
@@ -4,7 +4,92 @@
 
 // @dart = 2.7
 
-/*library: library=[{
+/*library: 
+ constant=[
+  {
+  "id": "constant/B.C_Deferred = A.lib__funky$closure();\n",
+  "kind": "constant",
+  "name": null,
+  "size": 39,
+  "outputUnit": "outputUnit/1",
+  "code": "B.C_Deferred = A.lib__funky$closure();\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 131,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n"
+},
+  {
+  "id": "constant/B.C__RootZone = new A._RootZone();\n",
+  "kind": "constant",
+  "name": null,
+  "size": 35,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C__RootZone = new A._RootZone();\n"
+},
+  {
+  "id": "constant/B.C__StringStackTrace = new A._StringStackTrace();\n",
+  "kind": "constant",
+  "name": null,
+  "size": 51,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C__StringStackTrace = new A._StringStackTrace();\n"
+},
+  {
+  "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 49,
+  "outputUnit": "outputUnit/main",
+  "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
+},
+  {
+  "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 41,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSArray_methods = J.JSArray.prototype;\n"
+},
+  {
+  "id": "constant/B.JSInt_methods = J.JSInt.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 37,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSInt_methods = J.JSInt.prototype;\n"
+},
+  {
+  "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 43,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSString_methods = J.JSString.prototype;\n"
+},
+  {
+  "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 59,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
+}],
+ deferredFiles=[{
+  "main.dart": {
+    "name": "<unnamed>",
+    "imports": {
+      "lib": [
+        "out_1.part.js"
+      ]
+    }
+  }
+}],
+ dependencies=[{}],
+ library=[{
   "id": "library/memory:sdk/tests/web/native/main.dart::",
   "kind": "library",
   "name": "<unnamed>",
@@ -13,7 +98,27 @@
     "function/memory:sdk/tests/web/native/main.dart::main"
   ],
   "canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}]*/
+}],
+ outputUnits=[
+  {
+  "id": "outputUnit/1",
+  "kind": "outputUnit",
+  "name": "1",
+  "size": 1063,
+  "filename": "out_1.part.js",
+  "imports": [
+    "lib"
+  ]
+},
+  {
+  "id": "outputUnit/main",
+  "kind": "outputUnit",
+  "name": "main",
+  "size": 183730,
+  "filename": "out",
+  "imports": []
+}]
+*/
 
 import 'lib.dart' deferred as lib;
 
diff --git a/pkg/compiler/test/dump_info/data/deferred_future/main.dart b/pkg/compiler/test/dump_info/data/deferred_future/main.dart
index 10e2e59..5500fb6 100644
--- a/pkg/compiler/test/dump_info/data/deferred_future/main.dart
+++ b/pkg/compiler/test/dump_info/data/deferred_future/main.dart
@@ -2,7 +2,100 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-/*library: library=[{
+/*library: 
+ constant=[
+  {
+  "id": "constant/B.C_A = new A.A();\n",
+  "kind": "constant",
+  "name": null,
+  "size": 19,
+  "outputUnit": "outputUnit/1",
+  "code": "B.C_A = new A.A();\n"
+},
+  {
+  "id": "constant/B.C_Deferred = B.C_A;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 22,
+  "outputUnit": "outputUnit/1",
+  "code": "B.C_Deferred = B.C_A;\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 131,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n"
+},
+  {
+  "id": "constant/B.C__RootZone = new A._RootZone();\n",
+  "kind": "constant",
+  "name": null,
+  "size": 35,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C__RootZone = new A._RootZone();\n"
+},
+  {
+  "id": "constant/B.C__StringStackTrace = new A._StringStackTrace();\n",
+  "kind": "constant",
+  "name": null,
+  "size": 51,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C__StringStackTrace = new A._StringStackTrace();\n"
+},
+  {
+  "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 49,
+  "outputUnit": "outputUnit/main",
+  "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
+},
+  {
+  "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 41,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSArray_methods = J.JSArray.prototype;\n"
+},
+  {
+  "id": "constant/B.JSInt_methods = J.JSInt.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 37,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSInt_methods = J.JSInt.prototype;\n"
+},
+  {
+  "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 43,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSString_methods = J.JSString.prototype;\n"
+},
+  {
+  "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 59,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
+}],
+ deferredFiles=[{
+  "main.dart": {
+    "name": "<unnamed>",
+    "imports": {
+      "lib1": [
+        "out_1.part.js"
+      ]
+    }
+  }
+}],
+ dependencies=[{}],
+ library=[{
   "id": "library/memory:sdk/tests/web/native/main.dart::",
   "kind": "library",
   "name": "<unnamed>",
@@ -11,7 +104,27 @@
     "function/memory:sdk/tests/web/native/main.dart::main"
   ],
   "canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}]*/
+}],
+ outputUnits=[
+  {
+  "id": "outputUnit/1",
+  "kind": "outputUnit",
+  "name": "1",
+  "size": 846,
+  "filename": "out_1.part.js",
+  "imports": [
+    "lib1"
+  ]
+},
+  {
+  "id": "outputUnit/main",
+  "kind": "outputUnit",
+  "name": "main",
+  "size": 190176,
+  "filename": "out",
+  "imports": []
+}]
+*/
 
 // @dart = 2.7
 
diff --git a/pkg/compiler/test/dump_info/data/js_members.dart b/pkg/compiler/test/dump_info/data/js_members.dart
index 6f18324..46efe6b 100644
--- a/pkg/compiler/test/dump_info/data/js_members.dart
+++ b/pkg/compiler/test/dump_info/data/js_members.dart
@@ -1,4 +1,128 @@
-/*library: library=[{
+/*library: 
+ constant=[
+  {
+  "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 131,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST0 = function() {\n  var toStringFunction = Object.prototype.toString;\n  function getTag(o) {\n    var s = toStringFunction.call(o);\n    return s.substring(8, s.length - 1);\n  }\n  function getUnknownTag(object, tag) {\n    if (/^HTML[A-Z].*Element$/.test(tag)) {\n      var name = toStringFunction.call(object);\n      if (name == \"[object Object]\") return null;\n      return \"HTMLElement\";\n    }\n  }\n  function getUnknownTagGenericBrowser(object, tag) {\n    if (self.HTMLElement && object instanceof HTMLElement) return \"HTMLElement\";\n    return getUnknownTag(object, tag);\n  }\n  function prototypeForTag(tag) {\n    if (typeof window == \"undefined\") return null;\n    if (typeof window[tag] == \"undefined\") return null;\n    var constructor = window[tag];\n    if (typeof constructor != \"function\") return null;\n    return constructor.prototype;\n  }\n  function discriminator(tag) { return null; }\n  var isBrowser = typeof navigator == \"object\";\n  return {\n    getTag: getTag,\n    getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,\n    prototypeForTag: prototypeForTag,\n    discriminator: discriminator };\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 1133,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST0 = function() {\n  var toStringFunction = Object.prototype.toString;\n  function getTag(o) {\n    var s = toStringFunction.call(o);\n    return s.substring(8, s.length - 1);\n  }\n  function getUnknownTag(object, tag) {\n    if (/^HTML[A-Z].*Element$/.test(tag)) {\n      var name = toStringFunction.call(object);\n      if (name == \"[object Object]\") return null;\n      return \"HTMLElement\";\n    }\n  }\n  function getUnknownTagGenericBrowser(object, tag) {\n    if (self.HTMLElement && object instanceof HTMLElement) return \"HTMLElement\";\n    return getUnknownTag(object, tag);\n  }\n  function prototypeForTag(tag) {\n    if (typeof window == \"undefined\") return null;\n    if (typeof window[tag] == \"undefined\") return null;\n    var constructor = window[tag];\n    if (typeof constructor != \"function\") return null;\n    return constructor.prototype;\n  }\n  function discriminator(tag) { return null; }\n  var isBrowser = typeof navigator == \"object\";\n  return {\n    getTag: getTag,\n    getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,\n    prototypeForTag: prototypeForTag,\n    discriminator: discriminator };\n};\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST1 = function(hooks) {\n  if (typeof dartExperimentalFixupGetTag != \"function\") return hooks;\n  hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 167,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST1 = function(hooks) {\n  if (typeof dartExperimentalFixupGetTag != \"function\") return hooks;\n  hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);\n};\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST2 = function(hooks) {\n  var getTag = hooks.getTag;\n  var prototypeForTag = hooks.prototypeForTag;\n  function getTagFixed(o) {\n    var tag = getTag(o);\n    if (tag == \"Document\") {\n      if (!!o.xmlVersion) return \"!Document\";\n      return \"!HTMLDocument\";\n    }\n    return tag;\n  }\n  function prototypeForTagFixed(tag) {\n    if (tag == \"Document\") return null;\n    return prototypeForTag(tag);\n  }\n  hooks.getTag = getTagFixed;\n  hooks.prototypeForTag = prototypeForTagFixed;\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 491,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST2 = function(hooks) {\n  var getTag = hooks.getTag;\n  var prototypeForTag = hooks.prototypeForTag;\n  function getTagFixed(o) {\n    var tag = getTag(o);\n    if (tag == \"Document\") {\n      if (!!o.xmlVersion) return \"!Document\";\n      return \"!HTMLDocument\";\n    }\n    return tag;\n  }\n  function prototypeForTagFixed(tag) {\n    if (tag == \"Document\") return null;\n    return prototypeForTag(tag);\n  }\n  hooks.getTag = getTagFixed;\n  hooks.prototypeForTag = prototypeForTagFixed;\n};\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST3 = function(hooks) { return hooks; }\n;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 52,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST3 = function(hooks) { return hooks; }\n;\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST4 = function(hooks) {\n  var userAgent = typeof navigator == \"object\" ? navigator.userAgent : \"\";\n  if (userAgent.indexOf(\"Trident/\") == -1) return hooks;\n  var getTag = hooks.getTag;\n  var quickMap = {\n    \"BeforeUnloadEvent\": \"Event\",\n    \"DataTransfer\": \"Clipboard\",\n    \"HTMLDDElement\": \"HTMLElement\",\n    \"HTMLDTElement\": \"HTMLElement\",\n    \"HTMLPhraseElement\": \"HTMLElement\",\n    \"Position\": \"Geoposition\"\n  };\n  function getTagIE(o) {\n    var tag = getTag(o);\n    var newTag = quickMap[tag];\n    if (newTag) return newTag;\n    if (tag == \"Object\") {\n      if (window.DataView && (o instanceof window.DataView)) return \"DataView\";\n    }\n    return tag;\n  }\n  function prototypeForTagIE(tag) {\n    var constructor = window[tag];\n    if (constructor == null) return null;\n    return constructor.prototype;\n  }\n  hooks.getTag = getTagIE;\n  hooks.prototypeForTag = prototypeForTagIE;\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 900,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST4 = function(hooks) {\n  var userAgent = typeof navigator == \"object\" ? navigator.userAgent : \"\";\n  if (userAgent.indexOf(\"Trident/\") == -1) return hooks;\n  var getTag = hooks.getTag;\n  var quickMap = {\n    \"BeforeUnloadEvent\": \"Event\",\n    \"DataTransfer\": \"Clipboard\",\n    \"HTMLDDElement\": \"HTMLElement\",\n    \"HTMLDTElement\": \"HTMLElement\",\n    \"HTMLPhraseElement\": \"HTMLElement\",\n    \"Position\": \"Geoposition\"\n  };\n  function getTagIE(o) {\n    var tag = getTag(o);\n    var newTag = quickMap[tag];\n    if (newTag) return newTag;\n    if (tag == \"Object\") {\n      if (window.DataView && (o instanceof window.DataView)) return \"DataView\";\n    }\n    return tag;\n  }\n  function prototypeForTagIE(tag) {\n    var constructor = window[tag];\n    if (constructor == null) return null;\n    return constructor.prototype;\n  }\n  hooks.getTag = getTagIE;\n  hooks.prototypeForTag = prototypeForTagIE;\n};\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST5 = function(hooks) {\n  var userAgent = typeof navigator == \"object\" ? navigator.userAgent : \"\";\n  if (userAgent.indexOf(\"Firefox\") == -1) return hooks;\n  var getTag = hooks.getTag;\n  var quickMap = {\n    \"BeforeUnloadEvent\": \"Event\",\n    \"DataTransfer\": \"Clipboard\",\n    \"GeoGeolocation\": \"Geolocation\",\n    \"Location\": \"!Location\",\n    \"WorkerMessageEvent\": \"MessageEvent\",\n    \"XMLDocument\": \"!Document\"};\n  function getTagFirefox(o) {\n    var tag = getTag(o);\n    return quickMap[tag] || tag;\n  }\n  hooks.getTag = getTagFirefox;\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 548,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST5 = function(hooks) {\n  var userAgent = typeof navigator == \"object\" ? navigator.userAgent : \"\";\n  if (userAgent.indexOf(\"Firefox\") == -1) return hooks;\n  var getTag = hooks.getTag;\n  var quickMap = {\n    \"BeforeUnloadEvent\": \"Event\",\n    \"DataTransfer\": \"Clipboard\",\n    \"GeoGeolocation\": \"Geolocation\",\n    \"Location\": \"!Location\",\n    \"WorkerMessageEvent\": \"MessageEvent\",\n    \"XMLDocument\": \"!Document\"};\n  function getTagFirefox(o) {\n    var tag = getTag(o);\n    return quickMap[tag] || tag;\n  }\n  hooks.getTag = getTagFirefox;\n};\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST6 = function(getTagFallback) {\n  return function(hooks) {\n    if (typeof navigator != \"object\") return hooks;\n    var ua = navigator.userAgent;\n    if (ua.indexOf(\"DumpRenderTree\") >= 0) return hooks;\n    if (ua.indexOf(\"Chrome\") >= 0) {\n      function confirm(p) {\n        return typeof window == \"object\" && window[p] && window[p].name == p;\n      }\n      if (confirm(\"Window\") && confirm(\"HTMLElement\")) return hooks;\n    }\n    hooks.getTag = getTagFallback;\n  };\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 482,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST6 = function(getTagFallback) {\n  return function(hooks) {\n    if (typeof navigator != \"object\") return hooks;\n    var ua = navigator.userAgent;\n    if (ua.indexOf(\"DumpRenderTree\") >= 0) return hooks;\n    if (ua.indexOf(\"Chrome\") >= 0) {\n      function confirm(p) {\n        return typeof window == \"object\" && window[p] && window[p].name == p;\n      }\n      if (confirm(\"Window\") && confirm(\"HTMLElement\")) return hooks;\n    }\n    hooks.getTag = getTagFallback;\n  };\n};\n"
+},
+  {
+  "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 49,
+  "outputUnit": "outputUnit/main",
+  "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
+},
+  {
+  "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 41,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSArray_methods = J.JSArray.prototype;\n"
+},
+  {
+  "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 43,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSString_methods = J.JSString.prototype;\n"
+},
+  {
+  "id": "constant/B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 63,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;\n"
+},
+  {
+  "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 59,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
+},
+  {
+  "id": "constant/B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 69,
+  "outputUnit": "outputUnit/main",
+  "code": "B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;\n"
+},
+  {
+  "id": "constant/B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 73,
+  "outputUnit": "outputUnit/main",
+  "code": "B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;\n"
+}],
+ deferredFiles=[{}],
+ dependencies=[{}],
+ library=[{
   "id": "library/memory:sdk/tests/web/native/main.dart::",
   "kind": "library",
   "name": "js_parameters_test",
@@ -9,7 +133,16 @@
     "function/memory:sdk/tests/web/native/main.dart::main"
   ],
   "canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}]*/
+}],
+ outputUnits=[{
+  "id": "outputUnit/main",
+  "kind": "outputUnit",
+  "name": "main",
+  "size": 112396,
+  "filename": "out",
+  "imports": []
+}]
+*/
 @JS()
 library js_parameters_test;
 
diff --git a/pkg/compiler/test/dump_info/data/members.dart b/pkg/compiler/test/dump_info/data/members.dart
index 6494321..4ac2296 100644
--- a/pkg/compiler/test/dump_info/data/members.dart
+++ b/pkg/compiler/test/dump_info/data/members.dart
@@ -1,4 +1,64 @@
-/*library: library=[{
+/*library: 
+ constant=[
+  {
+  "id": "constant/B.C_A = new A.A();\n",
+  "kind": "constant",
+  "name": null,
+  "size": 19,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_A = new A.A();\n"
+},
+  {
+  "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n",
+  "kind": "constant",
+  "name": null,
+  "size": 131,
+  "outputUnit": "outputUnit/main",
+  "code": "B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n"
+},
+  {
+  "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 49,
+  "outputUnit": "outputUnit/main",
+  "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
+},
+  {
+  "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 41,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSArray_methods = J.JSArray.prototype;\n"
+},
+  {
+  "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 43,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JSString_methods = J.JSString.prototype;\n"
+},
+  {
+  "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
+  "kind": "constant",
+  "name": null,
+  "size": 59,
+  "outputUnit": "outputUnit/main",
+  "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
+},
+  {
+  "id": "constant/B.List_A = A._setArrayType(makeConstList([B.C_A]), A.findType(\"JSArray<A>\"));\n",
+  "kind": "constant",
+  "name": null,
+  "size": 78,
+  "outputUnit": "outputUnit/main",
+  "code": "B.List_A = A._setArrayType(makeConstList([B.C_A]), A.findType(\"JSArray<A>\"));\n"
+}],
+ deferredFiles=[{}],
+ dependencies=[{}],
+ library=[{
   "id": "library/memory:sdk/tests/web/native/main.dart::",
   "kind": "library",
   "name": "<unnamed>",
@@ -12,7 +72,16 @@
     "function/memory:sdk/tests/web/native/main.dart::main"
   ],
   "canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}]*/
+}],
+ outputUnits=[{
+  "id": "outputUnit/main",
+  "kind": "outputUnit",
+  "name": "main",
+  "size": 91101,
+  "filename": "out",
+  "imports": []
+}]
+*/
 /*class: C:class=[{
   "id": "class/memory:sdk/tests/web/native/main.dart::C",
   "kind": "class",
diff --git a/pkg/compiler/test/dump_info/dump_info_test.dart b/pkg/compiler/test/dump_info/dump_info_test.dart
index 411f65f..87e0585 100644
--- a/pkg/compiler/test/dump_info/dump_info_test.dart
+++ b/pkg/compiler/test/dump_info/dump_info_test.dart
@@ -66,6 +66,23 @@
     features.addElement(
         Tags.library, indentedEncoder.convert(libraryInfo.accept(converter)));
 
+    // Store program-wide information on the main library.
+    var name = '${library.canonicalUri.pathSegments.last}';
+    if (name.startsWith('main')) {
+      for (final constantInfo in dumpInfoState.info.constants) {
+        features.addElement(Tags.constant,
+            indentedEncoder.convert(constantInfo.accept(converter)));
+      }
+      features.addElement(Tags.dependencies,
+          indentedEncoder.convert(dumpInfoState.info.dependencies));
+      for (final outputUnit in dumpInfoState.info.outputUnits) {
+        features.addElement(Tags.outputUnits,
+            indentedEncoder.convert(outputUnit.accept(converter)));
+      }
+      features.addElement(Tags.deferredFiles,
+          indentedEncoder.convert(dumpInfoState.info.deferredFiles));
+    }
+
     final id = LibraryId(library.canonicalUri);
     actualMap[id] =
         ActualData<Features>(id, features, library.canonicalUri, -1, library);
diff --git a/pkg/compiler/test/helpers/program_lookup.dart b/pkg/compiler/test/helpers/program_lookup.dart
index b575f55..600335d 100644
--- a/pkg/compiler/test/helpers/program_lookup.dart
+++ b/pkg/compiler/test/helpers/program_lookup.dart
@@ -5,7 +5,7 @@
 // @dart = 2.7
 
 import 'package:compiler/src/common/elements.dart';
-import 'package:compiler/src/deferred_load/output_unit.dart';
+import 'package:compiler/src/deferred_load/output_unit.dart' show OutputUnit;
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/js/js.dart' as js;
 import 'package:compiler/src/js_backend/namer.dart';
diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md
index 895c2ab..c962060 100644
--- a/pkg/kernel/binary.md
+++ b/pkg/kernel/binary.md
@@ -1371,7 +1371,7 @@
 type YieldStatement extends Statement {
   Byte tag = 77;
   FileOffset fileOffset;
-  Byte flags (isYieldStar);
+  Byte flags (isYieldStar, isNative);
   Expression expression;
 }
 
diff --git a/pkg/vm/lib/transformations/continuation.dart b/pkg/vm/lib/transformations/continuation.dart
index f158e8e..4201896 100644
--- a/pkg/vm/lib/transformations/continuation.dart
+++ b/pkg/vm/lib/transformations/continuation.dart
@@ -158,9 +158,16 @@
           return node;
         }
       case AsyncMarker.AsyncStar:
-        return new AsyncStarFunctionRewriter(
-                helper, node, staticTypeContext, desugarAsync)
-            .rewrite();
+        if (desugarAsync) {
+          return new AsyncStarFunctionRewriter(
+                  helper, node, staticTypeContext, desugarAsync)
+              .rewrite();
+        } else {
+          node.transformOrRemoveChildren(new RecursiveContinuationRewriter(
+              helper, staticTypeContext, desugarAsync,
+              desugarAwaitFor: true));
+          return node;
+        }
     }
   }
 
diff --git a/runtime/vm/code_descriptors.h b/runtime/vm/code_descriptors.h
index 9251781..e268ff0 100644
--- a/runtime/vm/code_descriptors.h
+++ b/runtime/vm/code_descriptors.h
@@ -77,7 +77,9 @@
   };
 
   explicit ExceptionHandlerList(const Function& function)
-      : list_(), has_async_handler_(function.IsCompactAsyncFunction()) {}
+      : list_(),
+        has_async_handler_(function.IsCompactAsyncFunction() ||
+                           function.IsCompactAsyncStarFunction()) {}
 
   intptr_t Length() const { return list_.length(); }
 
diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc
index c56be1c..771887e 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm.cc
@@ -2519,6 +2519,36 @@
   }
 }
 
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+  // Collect the longest descending sequences of registers and
+  // push them with a single STMDB instruction.
+  RegList pending_regs = 0;
+  Register lowest_pending_reg = kNumberOfCpuRegisters;
+  intptr_t num_pending_regs = 0;
+  for (Register reg : regs) {
+    if (reg >= lowest_pending_reg) {
+      ASSERT(pending_regs != 0);
+      if (num_pending_regs > 1) {
+        PushList(pending_regs);
+      } else {
+        Push(lowest_pending_reg);
+      }
+      pending_regs = 0;
+      num_pending_regs = 0;
+    }
+    pending_regs |= (1 << reg);
+    lowest_pending_reg = reg;
+    ++num_pending_regs;
+  }
+  if (pending_regs != 0) {
+    if (num_pending_regs > 1) {
+      PushList(pending_regs);
+    } else {
+      Push(lowest_pending_reg);
+    }
+  }
+}
+
 void Assembler::PushNativeCalleeSavedRegisters() {
   // Save new context and C++ ABI callee-saved registers.
   PushList(kAbiPreservedCpuRegs);
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index f7f856e..821426e 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -1137,6 +1137,8 @@
   void PushRegisters(const RegisterSet& regs);
   void PopRegisters(const RegisterSet& regs);
 
+  void PushRegistersInOrder(std::initializer_list<Register> regs);
+
   // Push all registers which are callee-saved according to the ARM ABI.
   void PushNativeCalleeSavedRegisters();
 
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.cc b/runtime/vm/compiler/assembler/assembler_arm64.cc
index efdeb2d..8d90c0f 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64.cc
@@ -2368,6 +2368,22 @@
   ASSERT(vprev == kNoVRegister);
 }
 
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+  // Use STP to push registers in pairs.
+  Register pending_reg = kNoRegister;
+  for (Register reg : regs) {
+    if (pending_reg != kNoRegister) {
+      PushPair(reg, pending_reg);
+      pending_reg = kNoRegister;
+    } else {
+      pending_reg = reg;
+    }
+  }
+  if (pending_reg != kNoRegister) {
+    Push(pending_reg);
+  }
+}
+
 void Assembler::PushNativeCalleeSavedRegisters() {
   // Save the callee-saved registers.
   // We use str instead of the Push macro because we will be pushing the PP
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index 980c22c..116083a 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -524,6 +524,8 @@
   void PushRegisters(const RegisterSet& registers);
   void PopRegisters(const RegisterSet& registers);
 
+  void PushRegistersInOrder(std::initializer_list<Register> regs);
+
   // Push all registers which are callee-saved according to the ARM64 ABI.
   void PushNativeCalleeSavedRegisters();
 
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.cc b/runtime/vm/compiler/assembler/assembler_ia32.cc
index e004bb5..2ead117 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.cc
+++ b/runtime/vm/compiler/assembler/assembler_ia32.cc
@@ -1873,6 +1873,12 @@
   popl(r);
 }
 
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+  for (Register reg : regs) {
+    PushRegister(reg);
+  }
+}
+
 void Assembler::AddImmediate(Register reg, const Immediate& imm) {
   const intptr_t value = imm.value();
   if (value == 0) {
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.h b/runtime/vm/compiler/assembler/assembler_ia32.h
index bc35841..48f6a49 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.h
+++ b/runtime/vm/compiler/assembler/assembler_ia32.h
@@ -710,6 +710,8 @@
     PopRegister(r1);
   }
 
+  void PushRegistersInOrder(std::initializer_list<Register> regs);
+
   void AddImmediate(Register reg, const Immediate& imm);
   void AddImmediate(Register reg, int32_t value) {
     AddImmediate(reg, Immediate(value));
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.cc b/runtime/vm/compiler/assembler/assembler_riscv.cc
index b9bf437..c87a472 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.cc
+++ b/runtime/vm/compiler/assembler/assembler_riscv.cc
@@ -2173,6 +2173,7 @@
   }
   ASSERT(offset == 0);
 }
+
 void Assembler::PopRegisters(const RegisterSet& regs) {
   // The order in which the registers are pushed must match the order
   // in which the registers are encoded in the safepoint's stack map.
@@ -2201,6 +2202,16 @@
   addi(SP, SP, size);
 }
 
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+  intptr_t offset = regs.size() * target::kWordSize;
+  subi(SP, SP, offset);
+  for (Register reg : regs) {
+    ASSERT(reg != SP);
+    offset -= target::kWordSize;
+    sx(reg, Address(SP, offset));
+  }
+}
+
 void Assembler::PushNativeCalleeSavedRegisters() {
   RegisterSet regs(kAbiPreservedCpuRegs, kAbiPreservedFpuRegs);
   intptr_t size = (regs.CpuRegisterCount() * target::kWordSize) +
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.h b/runtime/vm/compiler/assembler/assembler_riscv.h
index 68ec777..9ae181f 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.h
+++ b/runtime/vm/compiler/assembler/assembler_riscv.h
@@ -778,6 +778,8 @@
   void PushRegisters(const RegisterSet& registers);
   void PopRegisters(const RegisterSet& registers);
 
+  void PushRegistersInOrder(std::initializer_list<Register> regs);
+
   // Push all registers which are callee-saved according to the ARM64 ABI.
   void PushNativeCalleeSavedRegisters();
 
diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc
index ade5233..38a6af8 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.cc
+++ b/runtime/vm/compiler/assembler/assembler_x64.cc
@@ -1887,6 +1887,12 @@
   }
 }
 
+void Assembler::PushRegistersInOrder(std::initializer_list<Register> regs) {
+  for (Register reg : regs) {
+    PushRegister(reg);
+  }
+}
+
 static const RegisterSet kVolatileRegisterSet(
     CallingConventions::kVolatileCpuRegisters,
     CallingConventions::kVolatileXmmRegisters);
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index c85db24..b906f6e 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -890,6 +890,8 @@
   void PushRegisters(const RegisterSet& registers);
   void PopRegisters(const RegisterSet& registers);
 
+  void PushRegistersInOrder(std::initializer_list<Register> regs);
+
   void CheckCodePointer();
 
   void EnterFrame(intptr_t frame_space);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index 7b14f31..c03025e 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -376,7 +376,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index 67fed8a..362e199 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -366,7 +366,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index c23ff8a..257243a 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -453,7 +453,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
index 2c40fdc..c129e1b 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
@@ -360,7 +360,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index e6c3b1e..59db090 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -372,7 +372,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 768d5c4..4a8bc6c 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -6901,16 +6901,25 @@
 }
 
 const Code& ReturnInstr::GetReturnStub(FlowGraphCompiler* compiler) const {
-  ASSERT(compiler->parsed_function().function().IsCompactAsyncFunction());
-  if (!value()->Type()->CanBeFuture()) {
-    return Code::ZoneHandle(compiler->zone(),
-                            compiler->isolate_group()
-                                ->object_store()
-                                ->return_async_not_future_stub());
+  const Function& function = compiler->parsed_function().function();
+  ASSERT(function.IsSuspendableFunction());
+  if (function.IsCompactAsyncFunction()) {
+    if (!value()->Type()->CanBeFuture()) {
+      return Code::ZoneHandle(compiler->zone(),
+                              compiler->isolate_group()
+                                  ->object_store()
+                                  ->return_async_not_future_stub());
+    }
+    return Code::ZoneHandle(
+        compiler->zone(),
+        compiler->isolate_group()->object_store()->return_async_stub());
+  } else if (function.IsCompactAsyncStarFunction()) {
+    return Code::ZoneHandle(
+        compiler->zone(),
+        compiler->isolate_group()->object_store()->return_async_star_stub());
+  } else {
+    UNREACHABLE();
   }
-  return Code::ZoneHandle(
-      compiler->zone(),
-      compiler->isolate_group()->object_store()->return_async_stub());
 }
 
 void NativeReturnInstr::EmitReturnMoves(FlowGraphCompiler* compiler) {
@@ -7230,10 +7239,12 @@
       LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
   switch (stub_id_) {
     case StubId::kInitAsync:
+    case StubId::kInitAsyncStar:
       locs->set_in(0, Location::RegisterLocation(
                           InitSuspendableFunctionStubABI::kTypeArgsReg));
       break;
-    case StubId::kAwaitAsync:
+    case StubId::kAwait:
+    case StubId::kYieldAsyncStar:
       locs->set_in(0, Location::RegisterLocation(SuspendStubABI::kArgumentReg));
       break;
   }
@@ -7248,15 +7259,21 @@
     case StubId::kInitAsync:
       stub = object_store->init_async_stub();
       break;
-    case StubId::kAwaitAsync:
-      stub = object_store->await_async_stub();
+    case StubId::kAwait:
+      stub = object_store->await_stub();
+      break;
+    case StubId::kInitAsyncStar:
+      stub = object_store->init_async_star_stub();
+      break;
+    case StubId::kYieldAsyncStar:
+      stub = object_store->yield_async_star_stub();
       break;
   }
   compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
                              locs(), deopt_id(), env());
 
 #if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_IA32)
-  if (stub_id_ == StubId::kAwaitAsync) {
+  if ((stub_id_ == StubId::kAwait) || (stub_id_ == StubId::kYieldAsyncStar)) {
     // On x86 (X64 and IA32) mismatch between calls and returns
     // significantly regresses performance. So suspend stub
     // does not return directly to the caller. Instead, a small
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index d0bbaed..6b6c9019 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -9567,8 +9567,10 @@
 class Call1ArgStubInstr : public TemplateDefinition<1, Throws> {
  public:
   enum class StubId {
+    kAwait,
     kInitAsync,
-    kAwaitAsync,
+    kInitAsyncStar,
+    kYieldAsyncStar,
   };
 
   Call1ArgStubInstr(const InstructionSource& source,
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index cf3345c..493238e 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -484,7 +484,7 @@
     ASSERT(result == CallingConventions::kReturnFpuReg);
   }
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index a6a35de..4d0bf7c 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -411,7 +411,7 @@
     ASSERT(result == CallingConventions::kReturnFpuReg);
   }
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index 3a4a935..f2ebdda 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -233,7 +233,7 @@
   Register result = locs()->in(0).reg();
   ASSERT(result == EAX);
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_printer.cc b/runtime/vm/compiler/backend/il_printer.cc
index a4ed678..76b1c00 100644
--- a/runtime/vm/compiler/backend/il_printer.cc
+++ b/runtime/vm/compiler/backend/il_printer.cc
@@ -1362,8 +1362,14 @@
     case StubId::kInitAsync:
       name = "InitAsync";
       break;
-    case StubId::kAwaitAsync:
-      name = "AwaitAsync";
+    case StubId::kAwait:
+      name = "Await";
+      break;
+    case StubId::kInitAsyncStar:
+      name = "InitAsyncStar";
+      break;
+    case StubId::kYieldAsyncStar:
+      name = "YieldAsyncStar";
       break;
   }
   f->Printf("%s(", name);
diff --git a/runtime/vm/compiler/backend/il_riscv.cc b/runtime/vm/compiler/backend/il_riscv.cc
index d646861..74459f7 100644
--- a/runtime/vm/compiler/backend/il_riscv.cc
+++ b/runtime/vm/compiler/backend/il_riscv.cc
@@ -464,7 +464,7 @@
     ASSERT(result == CallingConventions::kReturnFpuReg);
   }
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index 75475b1..170932f 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -338,7 +338,7 @@
     ASSERT(result == CallingConventions::kReturnFpuReg);
   }
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc
index 708308f..f2cf0ab 100644
--- a/runtime/vm/compiler/backend/range_analysis.cc
+++ b/runtime/vm/compiler/backend/range_analysis.cc
@@ -2814,7 +2814,7 @@
     case Slot::Kind::kFunctionType_parameter_types:
     case Slot::Kind::kFunctionType_type_parameters:
     case Slot::Kind::kInstance_native_fields_array:
-    case Slot::Kind::kSuspendState_future:
+    case Slot::Kind::kSuspendState_function_data:
     case Slot::Kind::kSuspendState_then_callback:
     case Slot::Kind::kSuspendState_error_callback:
     case Slot::Kind::kTypedDataView_typed_data:
diff --git a/runtime/vm/compiler/backend/slot.cc b/runtime/vm/compiler/backend/slot.cc
index 77d0153..74e10bc 100644
--- a/runtime/vm/compiler/backend/slot.cc
+++ b/runtime/vm/compiler/backend/slot.cc
@@ -243,7 +243,7 @@
     case Slot::Kind::kFunctionType_named_parameter_names:
     case Slot::Kind::kFunctionType_parameter_types:
     case Slot::Kind::kFunctionType_type_parameters:
-    case Slot::Kind::kSuspendState_future:
+    case Slot::Kind::kSuspendState_function_data:
     case Slot::Kind::kSuspendState_then_callback:
     case Slot::Kind::kSuspendState_error_callback:
     case Slot::Kind::kType_arguments:
diff --git a/runtime/vm/compiler/backend/slot.h b/runtime/vm/compiler/backend/slot.h
index 12609d6..e4efe29 100644
--- a/runtime/vm/compiler/backend/slot.h
+++ b/runtime/vm/compiler/backend/slot.h
@@ -73,7 +73,7 @@
   V(ImmutableLinkedHashBase, UntaggedLinkedHashBase, index,                    \
     TypedDataUint32Array, VAR)                                                 \
   V(Instance, UntaggedInstance, native_fields_array, Dynamic, VAR)             \
-  V(SuspendState, UntaggedSuspendState, future, Dynamic, VAR)                  \
+  V(SuspendState, UntaggedSuspendState, function_data, Dynamic, VAR)           \
   V(SuspendState, UntaggedSuspendState, then_callback, Closure, VAR)           \
   V(SuspendState, UntaggedSuspendState, error_callback, Closure, VAR)          \
   V(Type, UntaggedType, arguments, TypeArguments, FINAL)                       \
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index ab59d68..6bbd861 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -684,6 +684,24 @@
     body += B->Call1ArgStub(TokenPosition::kNoSource,
                             Call1ArgStubInstr::StubId::kInitAsync);
     body += Drop();
+  } else if (dart_function.IsCompactAsyncStarFunction()) {
+    const auto& result_type =
+        AbstractType::Handle(Z, dart_function.result_type());
+    auto& type_args = TypeArguments::ZoneHandle(Z);
+    if (result_type.IsType() &&
+        (result_type.type_class() == IG->object_store()->stream_class())) {
+      ASSERT(result_type.IsFinalized());
+      type_args = result_type.arguments();
+    }
+
+    body += TranslateInstantiatedTypeArguments(type_args);
+    body += B->Call1ArgStub(TokenPosition::kNoSource,
+                            Call1ArgStubInstr::StubId::kInitAsyncStar);
+    body += Drop();
+    body += NullConstant();
+    body += B->Call1ArgStub(TokenPosition::kNoSource,
+                            Call1ArgStubInstr::StubId::kYieldAsyncStar);
+    body += Drop();
   }
   return body;
 }
@@ -4322,7 +4340,8 @@
 
 Fragment StreamingFlowGraphBuilder::BuildAwaitExpression(
     TokenPosition* position) {
-  ASSERT(parsed_function()->function().IsCompactAsyncFunction());
+  ASSERT(parsed_function()->function().IsCompactAsyncFunction() ||
+         parsed_function()->function().IsCompactAsyncStarFunction());
   Fragment instructions;
 
   const TokenPosition pos = ReadPosition();  // read file offset.
@@ -4330,7 +4349,7 @@
 
   instructions += BuildExpression();  // read operand.
 
-  instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwaitAsync);
+  instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwait);
   return instructions;
 }
 
@@ -5228,8 +5247,83 @@
   const TokenPosition pos = ReadPosition();  // read position.
   if (position != nullptr) *position = pos;
 
-  uint8_t flags = ReadByte();          // read flags.
-  ASSERT(flags == kNativeYieldFlags);  // Must have been desugared.
+  const uint8_t flags = ReadByte();  // read flags.
+
+  if ((flags & kYieldStatementFlagNative) == 0) {
+    Fragment instructions;
+    // Generate the following code for yield <expr>:
+    //
+    // _AsyncStarStreamController controller = :suspend_state._functionData;
+    // if (controller.add(<expr>)) {
+    //   return;
+    // }
+    // suspend();
+    //
+    // Generate the following code for yield* <expr>:
+    //
+    // _AsyncStarStreamController controller = :suspend_state._functionData;
+    // controller.addStream(<expr>);
+    // if (suspend()) {
+    //   return;
+    // }
+    //
+
+    // Load :suspend_state variable using low-level FP-relative load
+    // in order to avoid confusing SSA construction (which cannot
+    // track its value as it is modified implicitly by stubs).
+    LocalVariable* suspend_state = parsed_function()->suspend_state_var();
+    ASSERT(suspend_state != nullptr);
+    instructions += IntConstant(0);
+    instructions += B->LoadFpRelativeSlot(
+        compiler::target::frame_layout.FrameSlotForVariable(suspend_state) *
+            compiler::target::kWordSize,
+        CompileType::Dynamic(), kTagged);
+    instructions += LoadNativeField(Slot::SuspendState_function_data());
+
+    instructions += BuildExpression();  // read expression.
+
+    auto& add_method = Function::ZoneHandle(Z);
+    const bool is_yield_star = (flags & kYieldStatementFlagYieldStar) != 0;
+    if (is_yield_star) {
+      add_method =
+          IG->object_store()->async_star_stream_controller_add_stream();
+    } else {
+      add_method = IG->object_store()->async_star_stream_controller_add();
+    }
+    instructions += StaticCall(pos, add_method, 2, ICData::kNoRebind);
+
+    if (is_yield_star) {
+      // Discard result of _AsyncStarStreamController.addStream().
+      instructions += Drop();
+      // Suspend and test value passed to the resumed async* body.
+      instructions += NullConstant();
+      instructions +=
+          B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kYieldAsyncStar);
+    } else {
+      // Test value returned by _AsyncStarStreamController.add().
+    }
+
+    TargetEntryInstr* exit;
+    TargetEntryInstr* continue_execution;
+    instructions += BranchIfTrue(&exit, &continue_execution, false);
+
+    Fragment do_exit(exit);
+    do_exit += TranslateFinallyFinalizers(nullptr, -1);
+    do_exit += NullConstant();
+    do_exit += Return(TokenPosition::kNoSource);
+
+    instructions = Fragment(instructions.entry, continue_execution);
+    if (!is_yield_star) {
+      instructions += NullConstant();
+      instructions +=
+          B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kYieldAsyncStar);
+      instructions += Drop();
+    }
+
+    return instructions;
+  }
+
+  ASSERT(flags == kYieldStatementFlagNative);  // Must have been desugared.
 
   // Setup yield/continue point:
   //
@@ -5476,6 +5570,16 @@
           function.set_is_inlinable(false);
           function.set_is_visible(true);
           ASSERT(function.IsCompactAsyncFunction());
+        } else if (function_node_helper.async_marker_ ==
+                   FunctionNodeHelper::kAsyncStar) {
+          if (!FLAG_precompiled_mode) {
+            FATAL("Compact async* functions are only supported in AOT mode.");
+          }
+          function.set_modifier(UntaggedFunction::kAsyncGen);
+          function.set_is_debuggable(true);
+          function.set_is_inlinable(false);
+          function.set_is_visible(true);
+          ASSERT(function.IsCompactAsyncStarFunction());
         } else {
           ASSERT((function_node_helper.async_marker_ ==
                   FunctionNodeHelper::kSync) ||
@@ -5514,6 +5618,7 @@
             function.set_is_inlinable(!FLAG_lazy_async_stacks);
           }
           ASSERT(!function.IsCompactAsyncFunction());
+          ASSERT(!function.IsCompactAsyncStarFunction());
         }
 
         // If the start token position is synthetic, the end token position
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 6f0e43c..86576be 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -834,7 +834,7 @@
   V(LinkedHashBase_getIndex, LinkedHashBase_index)                             \
   V(LinkedHashBase_getUsedData, LinkedHashBase_used_data)                      \
   V(ObjectArrayLength, Array_length)                                           \
-  V(SuspendState_getFuture, SuspendState_future)                               \
+  V(SuspendState_getFunctionData, SuspendState_function_data)                  \
   V(SuspendState_getThenCallback, SuspendState_then_callback)                  \
   V(SuspendState_getErrorCallback, SuspendState_error_callback)                \
   V(TypedDataViewOffsetInBytes, TypedDataView_offset_in_bytes)                 \
@@ -852,7 +852,7 @@
   V(NativeFinalizer_setCallback, NativeFinalizer_callback)                     \
   V(LinkedHashBase_setData, LinkedHashBase_data)                               \
   V(LinkedHashBase_setIndex, LinkedHashBase_index)                             \
-  V(SuspendState_setFuture, SuspendState_future)                               \
+  V(SuspendState_setFunctionData, SuspendState_function_data)                  \
   V(SuspendState_setThenCallback, SuspendState_then_callback)                  \
   V(SuspendState_setErrorCallback, SuspendState_error_callback)                \
   V(WeakProperty_setKey, WeakProperty_key)                                     \
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index c20ee54..6363a5e 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -89,7 +89,7 @@
   scope_->set_begin_token_pos(function.token_pos());
   scope_->set_end_token_pos(function.end_token_pos());
 
-  if (function.IsCompactAsyncFunction()) {
+  if (function.IsSuspendableFunction()) {
     LocalVariable* suspend_state_var =
         MakeVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
                      Symbols::SuspendStateVar(), AbstractType::dynamic_type());
@@ -1276,15 +1276,16 @@
       word flags = helper_.ReadByte();  // read flags.
       VisitExpression();                // read expression.
 
-      ASSERT(flags == kNativeYieldFlags);
-      if (depth_.function_ == 0) {
-        AddSwitchVariable();
-        // Promote all currently visible local variables into the context.
-        // TODO(27590) CaptureLocalVariables promotes to many variables into
-        // the scope. Mark those variables as stack_local.
-        // TODO(27590) we don't need to promote those variables that are
-        // not used across yields.
-        scope_->CaptureLocalVariables(current_function_scope_);
+      if ((flags & kYieldStatementFlagNative) != 0) {
+        if (depth_.function_ == 0) {
+          AddSwitchVariable();
+          // Promote all currently visible local variables into the context.
+          // TODO(27590) CaptureLocalVariables promotes to many variables into
+          // the scope. Mark those variables as stack_local.
+          // TODO(27590) we don't need to promote those variables that are
+          // not used across yields.
+          scope_->CaptureLocalVariables(current_function_scope_);
+        }
       }
       return;
     }
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index f1ce6f5..e887d24 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -83,8 +83,10 @@
   V(::, copyRangeFromUint8ListToOneByteString,                                 \
     CopyRangeFromUint8ListToOneByteString, 0x19a1bf41)                         \
   V(_StringBase, _interpolate, StringBaseInterpolate, 0x7da2a580)              \
-  V(_SuspendState, get:_future, SuspendState_getFuture, 0x0e2a7e73)            \
-  V(_SuspendState, set:_future, SuspendState_setFuture, 0x179923b0)            \
+  V(_SuspendState, get:_functionData, SuspendState_getFunctionData,            \
+    0x7290026e)                                                                \
+  V(_SuspendState, set:_functionData, SuspendState_setFunctionData,            \
+    0x2b6668ab)                                                                \
   V(_SuspendState, get:_thenCallback, SuspendState_getThenCallback,            \
     0xff1dccec)                                                                \
   V(_SuspendState, set:_thenCallback, SuspendState_setThenCallback,            \
@@ -95,7 +97,9 @@
     0x4935f88c)                                                                \
   V(_SuspendState, _createAsyncCallbacks, SuspendState_createAsyncCallbacks,   \
     0x4add6c13)                                                                \
-  V(_SuspendState, _resume, SuspendState_resume, 0x93d8c5e8)                   \
+  V(_SuspendState, _createAsyncStarCallback,                                   \
+    SuspendState_createAsyncStarCallback, 0xfa7537e4)                          \
+  V(_SuspendState, _resume, SuspendState_resume, 0xc738e9d2)                   \
   V(_IntegerImplementation, toDouble, IntegerToDouble, 0x97728b46)             \
   V(_Double, _add, DoubleAdd, 0xea666327)                                      \
   V(_Double, _sub, DoubleSub, 0x28474c2e)                                      \
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 267337f..31c7822 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -992,7 +992,7 @@
  public:
   static word frame_size_offset();
   static word pc_offset();
-  static word future_offset();
+  static word function_data_offset();
   static word then_callback_offset();
   static word error_callback_offset();
   static word payload_offset();
@@ -1239,9 +1239,14 @@
   static word random_offset();
 
   static word suspend_state_init_async_entry_point_offset();
-  static word suspend_state_await_async_entry_point_offset();
+  static word suspend_state_await_entry_point_offset();
   static word suspend_state_return_async_entry_point_offset();
   static word suspend_state_return_async_not_future_entry_point_offset();
+
+  static word suspend_state_init_async_star_entry_point_offset();
+  static word suspend_state_yield_async_star_entry_point_offset();
+  static word suspend_state_return_async_star_entry_point_offset();
+
   static word suspend_state_handle_exception_entry_point_offset();
 
   static word OffsetFromThread(const dart::Object& object);
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 738ed65..2fc188c 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -248,7 +248,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -256,9 +257,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    780;
+    792;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    784;
+    796;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -281,7 +282,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 820;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 832;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -292,13 +293,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 856;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 824;
+    Thread_double_truncate_round_supported_offset = 836;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 852;
+    Thread_service_extension_stream_offset = 860;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -314,7 +315,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    800;
+    812;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -336,13 +337,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    788;
+    800;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    816;
+    828;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 856;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 864;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -384,11 +385,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 804;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 796;
+    Thread_saved_shadow_call_stack_offset = 808;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    804;
+    816;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -409,7 +410,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 764;
+    Thread_suspend_state_await_entry_point_offset = 764;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 760;
 static constexpr dart::compiler::target::word
@@ -417,7 +418,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 776;
+    Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 788;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -432,13 +439,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 808;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 820;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word Thread_random_offset = 832;
+    Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word Thread_random_offset = 840;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 840;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 848;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -863,7 +870,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -871,9 +879,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -897,7 +905,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -908,13 +916,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1688;
+    Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -930,7 +938,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -952,14 +960,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -1001,11 +1009,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1632;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -1026,7 +1034,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1528;
+    Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -1034,7 +1042,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -1050,13 +1064,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+    Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -1481,7 +1495,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -1489,9 +1504,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    748;
+    760;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    752;
+    764;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -1514,7 +1529,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 800;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -1525,13 +1540,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 816;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 824;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 792;
+    Thread_double_truncate_round_supported_offset = 804;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 820;
+    Thread_service_extension_stream_offset = 828;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -1547,7 +1562,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    768;
+    780;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -1569,13 +1584,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    756;
+    768;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    784;
+    796;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 824;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 832;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -1617,11 +1632,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 772;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 764;
+    Thread_saved_shadow_call_stack_offset = 776;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    772;
+    784;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -1642,7 +1657,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 732;
+    Thread_suspend_state_await_entry_point_offset = 732;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
@@ -1650,7 +1665,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 740;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 744;
+    Thread_suspend_state_init_async_star_entry_point_offset = 744;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 748;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 752;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 756;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -1665,13 +1686,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 776;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 788;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 780;
-static constexpr dart::compiler::target::word Thread_random_offset = 800;
+    Thread_callback_stack_return_offset = 792;
+static constexpr dart::compiler::target::word Thread_random_offset = 808;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 808;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 816;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2093,7 +2114,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -2101,9 +2123,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -2127,7 +2149,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2138,13 +2160,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1712;
+    Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1752;
+    Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -2160,7 +2182,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -2182,14 +2204,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -2231,11 +2253,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1656;
+    Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -2256,7 +2278,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1592;
+    Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -2264,7 +2286,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -2280,13 +2308,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+    Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2713,7 +2741,8 @@
     SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -2721,9 +2750,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -2747,7 +2776,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2758,13 +2787,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1688;
+    Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -2780,7 +2809,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -2802,14 +2831,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -2851,11 +2880,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1632;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -2876,7 +2905,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1528;
+    Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -2884,7 +2913,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -2900,13 +2935,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+    Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3332,7 +3367,8 @@
     SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -3340,9 +3376,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -3366,7 +3402,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -3377,13 +3413,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1712;
+    Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1752;
+    Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -3399,7 +3435,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -3421,14 +3457,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -3470,11 +3506,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1656;
+    Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -3495,7 +3531,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1592;
+    Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -3503,7 +3539,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -3519,13 +3561,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+    Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3951,7 +3993,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -3959,9 +4002,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    820;
+    832;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    824;
+    836;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -3984,7 +4027,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 860;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 872;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -3995,13 +4038,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 888;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 896;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 864;
+    Thread_double_truncate_round_supported_offset = 876;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 892;
+    Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -4017,7 +4060,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    840;
+    852;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -4039,13 +4082,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    828;
+    840;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    856;
+    868;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 896;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 904;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -4087,11 +4130,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 844;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 836;
+    Thread_saved_shadow_call_stack_offset = 848;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    844;
+    856;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -4112,7 +4155,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 804;
+    Thread_suspend_state_await_entry_point_offset = 804;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 800;
 static constexpr dart::compiler::target::word
@@ -4120,7 +4163,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 816;
+    Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 828;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -4135,13 +4184,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 848;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 860;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word Thread_random_offset = 872;
+    Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 880;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 888;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -4568,7 +4617,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -4576,9 +4626,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -4602,7 +4652,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -4613,13 +4663,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1736;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1760;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1704;
+    Thread_double_truncate_round_supported_offset = 1728;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1744;
+    Thread_service_extension_stream_offset = 1768;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -4635,7 +4685,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1656;
+    1680;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -4657,14 +4707,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1688;
+    1712;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1752;
+    1776;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -4706,11 +4756,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1640;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1664;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1648;
+    Thread_saved_shadow_call_stack_offset = 1672;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -4731,7 +4781,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1584;
+    Thread_suspend_state_await_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
@@ -4739,7 +4789,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1632;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -4755,13 +4811,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word Thread_random_offset = 1712;
+    Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word Thread_random_offset = 1736;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1720;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1744;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -5183,7 +5239,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -5191,9 +5248,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    780;
+    792;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    784;
+    796;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -5216,7 +5273,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 820;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 832;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -5227,13 +5284,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 856;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 824;
+    Thread_double_truncate_round_supported_offset = 836;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 852;
+    Thread_service_extension_stream_offset = 860;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -5249,7 +5306,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    800;
+    812;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -5271,13 +5328,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    788;
+    800;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    816;
+    828;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 856;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 864;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -5319,11 +5376,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 804;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 796;
+    Thread_saved_shadow_call_stack_offset = 808;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    804;
+    816;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -5344,7 +5401,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 764;
+    Thread_suspend_state_await_entry_point_offset = 764;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 760;
 static constexpr dart::compiler::target::word
@@ -5352,7 +5409,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 776;
+    Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 788;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -5367,13 +5430,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 808;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 820;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word Thread_random_offset = 832;
+    Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word Thread_random_offset = 840;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 840;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 848;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -5792,7 +5855,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -5800,9 +5864,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -5826,7 +5890,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -5837,13 +5901,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1688;
+    Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -5859,7 +5923,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -5881,14 +5945,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -5930,11 +5994,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1632;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -5955,7 +6019,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1528;
+    Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -5963,7 +6027,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -5979,13 +6049,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+    Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -6404,7 +6474,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -6412,9 +6483,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    748;
+    760;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    752;
+    764;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -6437,7 +6508,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 800;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -6448,13 +6519,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 816;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 824;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 792;
+    Thread_double_truncate_round_supported_offset = 804;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 820;
+    Thread_service_extension_stream_offset = 828;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -6470,7 +6541,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    768;
+    780;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -6492,13 +6563,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    756;
+    768;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    784;
+    796;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 824;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 832;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -6540,11 +6611,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 772;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 764;
+    Thread_saved_shadow_call_stack_offset = 776;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    772;
+    784;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -6565,7 +6636,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 732;
+    Thread_suspend_state_await_entry_point_offset = 732;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
@@ -6573,7 +6644,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 740;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 744;
+    Thread_suspend_state_init_async_star_entry_point_offset = 744;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 748;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 752;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 756;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -6588,13 +6665,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 776;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 788;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 780;
-static constexpr dart::compiler::target::word Thread_random_offset = 800;
+    Thread_callback_stack_return_offset = 792;
+static constexpr dart::compiler::target::word Thread_random_offset = 808;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 808;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 816;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7010,7 +7087,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -7018,9 +7096,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -7044,7 +7122,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -7055,13 +7133,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1712;
+    Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1752;
+    Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -7077,7 +7155,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -7099,14 +7177,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -7148,11 +7226,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1656;
+    Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -7173,7 +7251,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1592;
+    Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -7181,7 +7259,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -7197,13 +7281,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+    Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7624,7 +7708,8 @@
     SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -7632,9 +7717,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -7658,7 +7743,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -7669,13 +7754,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1688;
+    Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -7691,7 +7776,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -7713,14 +7798,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -7762,11 +7847,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1632;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -7787,7 +7872,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1528;
+    Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -7795,7 +7880,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -7811,13 +7902,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+    Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8237,7 +8328,8 @@
     SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -8245,9 +8337,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -8271,7 +8363,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -8282,13 +8374,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1712;
+    Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1752;
+    Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -8304,7 +8396,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -8326,14 +8418,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -8375,11 +8467,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1656;
+    Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -8400,7 +8492,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1592;
+    Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -8408,7 +8500,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -8424,13 +8522,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+    Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8850,7 +8948,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -8858,9 +8957,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    820;
+    832;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    824;
+    836;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -8883,7 +8982,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 860;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 872;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -8894,13 +8993,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 888;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 896;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 864;
+    Thread_double_truncate_round_supported_offset = 876;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 892;
+    Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -8916,7 +9015,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    840;
+    852;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -8938,13 +9037,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    828;
+    840;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    856;
+    868;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 896;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 904;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -8986,11 +9085,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 844;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 836;
+    Thread_saved_shadow_call_stack_offset = 848;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    844;
+    856;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -9011,7 +9110,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 804;
+    Thread_suspend_state_await_entry_point_offset = 804;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 800;
 static constexpr dart::compiler::target::word
@@ -9019,7 +9118,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 816;
+    Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 828;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -9034,13 +9139,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 848;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 860;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word Thread_random_offset = 872;
+    Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 880;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 888;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -9461,7 +9566,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -9469,9 +9575,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -9495,7 +9601,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -9506,13 +9612,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1736;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1760;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1704;
+    Thread_double_truncate_round_supported_offset = 1728;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1744;
+    Thread_service_extension_stream_offset = 1768;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -9528,7 +9634,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1656;
+    1680;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -9550,14 +9656,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1688;
+    1712;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1752;
+    1776;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -9599,11 +9705,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1640;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1664;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1648;
+    Thread_saved_shadow_call_stack_offset = 1672;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -9624,7 +9730,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1584;
+    Thread_suspend_state_await_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
@@ -9632,7 +9738,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1632;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -9648,13 +9760,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word Thread_random_offset = 1712;
+    Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word Thread_random_offset = 1736;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1720;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1744;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -10112,8 +10224,8 @@
     AOT_SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    12;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     24;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -10122,9 +10234,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 780;
+    AOT_Thread_active_exception_offset = 792;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 784;
+    AOT_Thread_active_stacktrace_offset = 796;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -10148,7 +10260,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 200;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    820;
+    832;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -10161,13 +10273,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 140;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    848;
+    856;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 824;
+    AOT_Thread_double_truncate_round_supported_offset = 836;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 852;
+    AOT_Thread_service_extension_stream_offset = 860;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10184,7 +10296,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 800;
+    AOT_Thread_execution_state_offset = 812;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -10206,14 +10318,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 788;
+    AOT_Thread_global_object_pool_offset = 800;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 816;
+    AOT_Thread_exit_through_ffi_offset = 828;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    856;
+    864;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -10257,11 +10369,11 @@
     112;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 804;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 796;
+    AOT_Thread_saved_shadow_call_stack_offset = 808;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 804;
+    AOT_Thread_safepoint_state_offset = 816;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -10283,7 +10395,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 764;
+    AOT_Thread_suspend_state_await_entry_point_offset = 764;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 760;
 static constexpr dart::compiler::target::word
@@ -10291,7 +10403,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 776;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 788;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -10308,14 +10426,14 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    808;
+    820;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 832;
+    AOT_Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 840;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 328;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    840;
+    848;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -10803,8 +10921,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -10813,9 +10931,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -10839,7 +10957,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -10852,13 +10970,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1688;
+    AOT_Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10875,7 +10993,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -10897,14 +11015,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -10949,11 +11067,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -10975,7 +11093,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -10983,7 +11101,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -11000,14 +11124,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+    AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -11500,8 +11624,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -11510,9 +11634,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1624;
+    AOT_Thread_active_exception_offset = 1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1632;
+    AOT_Thread_active_stacktrace_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -11536,7 +11660,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -11549,13 +11673,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1744;
+    1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1712;
+    AOT_Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1752;
+    AOT_Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -11572,7 +11696,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1664;
+    AOT_Thread_execution_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -11594,14 +11718,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1640;
+    AOT_Thread_global_object_pool_offset = 1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1696;
+    AOT_Thread_exit_through_ffi_offset = 1720;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -11646,11 +11770,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1648;
+    1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1656;
+    AOT_Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1672;
+    AOT_Thread_safepoint_state_offset = 1696;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -11672,7 +11796,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -11680,7 +11804,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -11697,14 +11827,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+    AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1728;
+    1752;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -12194,8 +12324,8 @@
     AOT_SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     40;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -12204,9 +12334,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -12230,7 +12360,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -12243,13 +12373,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1688;
+    AOT_Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -12266,7 +12396,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -12288,14 +12418,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -12340,11 +12470,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -12366,7 +12496,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -12374,7 +12504,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -12391,14 +12527,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+    AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -12887,8 +13023,8 @@
     AOT_SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     40;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -12897,9 +13033,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1624;
+    AOT_Thread_active_exception_offset = 1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1632;
+    AOT_Thread_active_stacktrace_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -12923,7 +13059,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -12936,13 +13072,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1744;
+    1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1712;
+    AOT_Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1752;
+    AOT_Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -12959,7 +13095,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1664;
+    AOT_Thread_execution_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -12981,14 +13117,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1640;
+    AOT_Thread_global_object_pool_offset = 1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1696;
+    AOT_Thread_exit_through_ffi_offset = 1720;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -13033,11 +13169,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1648;
+    1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1656;
+    AOT_Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1672;
+    AOT_Thread_safepoint_state_offset = 1696;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -13059,7 +13195,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -13067,7 +13203,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -13084,14 +13226,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+    AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1728;
+    1752;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -13581,8 +13723,8 @@
     AOT_SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    12;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     24;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -13591,9 +13733,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 820;
+    AOT_Thread_active_exception_offset = 832;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 824;
+    AOT_Thread_active_stacktrace_offset = 836;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -13617,7 +13759,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 200;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    860;
+    872;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -13630,13 +13772,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 140;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    888;
+    896;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 864;
+    AOT_Thread_double_truncate_round_supported_offset = 876;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 892;
+    AOT_Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -13653,7 +13795,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 840;
+    AOT_Thread_execution_state_offset = 852;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -13675,14 +13817,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 828;
+    AOT_Thread_global_object_pool_offset = 840;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 856;
+    AOT_Thread_exit_through_ffi_offset = 868;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    896;
+    904;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -13726,11 +13868,11 @@
     112;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 844;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 836;
+    AOT_Thread_saved_shadow_call_stack_offset = 848;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 844;
+    AOT_Thread_safepoint_state_offset = 856;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -13752,7 +13894,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 804;
+    AOT_Thread_suspend_state_await_entry_point_offset = 804;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 800;
 static constexpr dart::compiler::target::word
@@ -13760,7 +13902,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 816;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 828;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -13777,14 +13925,14 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    848;
+    860;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 872;
+    AOT_Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 328;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    880;
+    888;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -14274,8 +14422,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -14284,9 +14432,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1616;
+    AOT_Thread_active_exception_offset = 1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1624;
+    AOT_Thread_active_stacktrace_offset = 1648;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -14310,7 +14458,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -14323,13 +14471,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1736;
+    1760;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1704;
+    AOT_Thread_double_truncate_round_supported_offset = 1728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1744;
+    AOT_Thread_service_extension_stream_offset = 1768;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -14346,7 +14494,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1656;
+    AOT_Thread_execution_state_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -14368,14 +14516,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1632;
+    AOT_Thread_global_object_pool_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1688;
+    AOT_Thread_exit_through_ffi_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1752;
+    1776;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -14420,11 +14568,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1648;
+    AOT_Thread_saved_shadow_call_stack_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1664;
+    AOT_Thread_safepoint_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -14446,7 +14594,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1584;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
@@ -14454,7 +14602,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -14471,14 +14625,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1712;
+    AOT_Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1736;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1720;
+    1744;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -14963,8 +15117,8 @@
     AOT_SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    12;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     24;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -14973,9 +15127,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 780;
+    AOT_Thread_active_exception_offset = 792;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 784;
+    AOT_Thread_active_stacktrace_offset = 796;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -14999,7 +15153,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 200;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    820;
+    832;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -15012,13 +15166,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 140;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    848;
+    856;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 824;
+    AOT_Thread_double_truncate_round_supported_offset = 836;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 852;
+    AOT_Thread_service_extension_stream_offset = 860;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -15035,7 +15189,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 800;
+    AOT_Thread_execution_state_offset = 812;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -15057,14 +15211,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 788;
+    AOT_Thread_global_object_pool_offset = 800;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 816;
+    AOT_Thread_exit_through_ffi_offset = 828;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    856;
+    864;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -15108,11 +15262,11 @@
     112;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 804;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 796;
+    AOT_Thread_saved_shadow_call_stack_offset = 808;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 804;
+    AOT_Thread_safepoint_state_offset = 816;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -15134,7 +15288,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 764;
+    AOT_Thread_suspend_state_await_entry_point_offset = 764;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 760;
 static constexpr dart::compiler::target::word
@@ -15142,7 +15296,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 776;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 788;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -15159,14 +15319,14 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    808;
+    820;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 832;
+    AOT_Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 840;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 328;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    840;
+    848;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -15647,8 +15807,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -15657,9 +15817,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -15683,7 +15843,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -15696,13 +15856,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1688;
+    AOT_Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -15719,7 +15879,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -15741,14 +15901,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -15793,11 +15953,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -15819,7 +15979,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -15827,7 +15987,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -15844,14 +16010,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+    AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -16337,8 +16503,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -16347,9 +16513,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1624;
+    AOT_Thread_active_exception_offset = 1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1632;
+    AOT_Thread_active_stacktrace_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -16373,7 +16539,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -16386,13 +16552,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1744;
+    1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1712;
+    AOT_Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1752;
+    AOT_Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -16409,7 +16575,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1664;
+    AOT_Thread_execution_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -16431,14 +16597,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1640;
+    AOT_Thread_global_object_pool_offset = 1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1696;
+    AOT_Thread_exit_through_ffi_offset = 1720;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -16483,11 +16649,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1648;
+    1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1656;
+    AOT_Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1672;
+    AOT_Thread_safepoint_state_offset = 1696;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -16509,7 +16675,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -16517,7 +16683,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -16534,14 +16706,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+    AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1728;
+    1752;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -17024,8 +17196,8 @@
     AOT_SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     40;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -17034,9 +17206,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -17060,7 +17232,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -17073,13 +17245,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1688;
+    AOT_Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -17096,7 +17268,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -17118,14 +17290,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -17170,11 +17342,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -17196,7 +17368,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -17204,7 +17376,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -17221,14 +17399,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+    AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -17710,8 +17888,8 @@
     AOT_SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     40;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -17720,9 +17898,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1624;
+    AOT_Thread_active_exception_offset = 1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1632;
+    AOT_Thread_active_stacktrace_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -17746,7 +17924,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -17759,13 +17937,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1744;
+    1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1712;
+    AOT_Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1752;
+    AOT_Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -17782,7 +17960,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1664;
+    AOT_Thread_execution_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -17804,14 +17982,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1640;
+    AOT_Thread_global_object_pool_offset = 1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1696;
+    AOT_Thread_exit_through_ffi_offset = 1720;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -17856,11 +18034,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1648;
+    1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1656;
+    AOT_Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1672;
+    AOT_Thread_safepoint_state_offset = 1696;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -17882,7 +18060,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -17890,7 +18068,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -17907,14 +18091,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+    AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1728;
+    1752;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -18397,8 +18581,8 @@
     AOT_SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    12;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     24;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -18407,9 +18591,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 820;
+    AOT_Thread_active_exception_offset = 832;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 824;
+    AOT_Thread_active_stacktrace_offset = 836;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -18433,7 +18617,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 200;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    860;
+    872;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -18446,13 +18630,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 140;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    888;
+    896;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 864;
+    AOT_Thread_double_truncate_round_supported_offset = 876;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 892;
+    AOT_Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -18469,7 +18653,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 840;
+    AOT_Thread_execution_state_offset = 852;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -18491,14 +18675,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 828;
+    AOT_Thread_global_object_pool_offset = 840;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 856;
+    AOT_Thread_exit_through_ffi_offset = 868;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    896;
+    904;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -18542,11 +18726,11 @@
     112;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 844;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 836;
+    AOT_Thread_saved_shadow_call_stack_offset = 848;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 844;
+    AOT_Thread_safepoint_state_offset = 856;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -18568,7 +18752,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 804;
+    AOT_Thread_suspend_state_await_entry_point_offset = 804;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 800;
 static constexpr dart::compiler::target::word
@@ -18576,7 +18760,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 816;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 828;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -18593,14 +18783,14 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    848;
+    860;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 872;
+    AOT_Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 328;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    880;
+    888;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -19083,8 +19273,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -19093,9 +19283,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1616;
+    AOT_Thread_active_exception_offset = 1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1624;
+    AOT_Thread_active_stacktrace_offset = 1648;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -19119,7 +19309,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -19132,13 +19322,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1736;
+    1760;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1704;
+    AOT_Thread_double_truncate_round_supported_offset = 1728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1744;
+    AOT_Thread_service_extension_stream_offset = 1768;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -19155,7 +19345,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1656;
+    AOT_Thread_execution_state_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -19177,14 +19367,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1632;
+    AOT_Thread_global_object_pool_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1688;
+    AOT_Thread_exit_through_ffi_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1752;
+    1776;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -19229,11 +19419,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1648;
+    AOT_Thread_saved_shadow_call_stack_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1664;
+    AOT_Thread_safepoint_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -19255,7 +19445,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1584;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
@@ -19263,7 +19453,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -19280,14 +19476,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1712;
+    AOT_Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1736;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1720;
+    1744;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index 8fa14a3..04aa47b 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -192,7 +192,7 @@
   FIELD(SubtypeTestCache, cache_offset)                                        \
   FIELD(SuspendState, error_callback_offset)                                   \
   FIELD(SuspendState, frame_size_offset)                                       \
-  FIELD(SuspendState, future_offset)                                           \
+  FIELD(SuspendState, function_data_offset)                                    \
   FIELD(SuspendState, payload_offset)                                          \
   FIELD(SuspendState, pc_offset)                                               \
   FIELD(SuspendState, then_callback_offset)                                    \
@@ -281,10 +281,13 @@
                                                                                \
   FIELD(Thread, stack_overflow_shared_without_fpu_regs_stub_offset)            \
   FIELD(Thread, store_buffer_block_offset)                                     \
-  FIELD(Thread, suspend_state_await_async_entry_point_offset)                  \
+  FIELD(Thread, suspend_state_await_entry_point_offset)                        \
   FIELD(Thread, suspend_state_init_async_entry_point_offset)                   \
   FIELD(Thread, suspend_state_return_async_entry_point_offset)                 \
   FIELD(Thread, suspend_state_return_async_not_future_entry_point_offset)      \
+  FIELD(Thread, suspend_state_init_async_star_entry_point_offset)              \
+  FIELD(Thread, suspend_state_yield_async_star_entry_point_offset)             \
+  FIELD(Thread, suspend_state_return_async_star_entry_point_offset)            \
   FIELD(Thread, suspend_state_handle_exception_entry_point_offset)             \
   FIELD(Thread, top_exit_frame_info_offset)                                    \
   FIELD(Thread, top_offset)                                                    \
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index 1049101..fd5b486 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -112,8 +112,8 @@
 void StubCodeCompiler::GenerateInitInstanceFieldStub(Assembler* assembler) {
   __ EnterStubFrame();
   __ PushObject(NullObject());  // Make room for result.
-  __ PushRegister(InitInstanceFieldABI::kInstanceReg);
-  __ PushRegister(InitInstanceFieldABI::kFieldReg);
+  __ PushRegistersInOrder(
+      {InitInstanceFieldABI::kInstanceReg, InitInstanceFieldABI::kFieldReg});
   __ CallRuntime(kInitInstanceFieldRuntimeEntry, /*argument_count=*/2);
   __ Drop(2);
   __ PopRegister(InitInstanceFieldABI::kResultReg);
@@ -130,11 +130,9 @@
   const Register kScratchReg = InitLateInstanceFieldInternalRegs::kScratchReg;
 
   __ EnterStubFrame();
-  // Save for later.
-  __ PushRegisterPair(kInstanceReg, kFieldReg);
-
+  // Save kFieldReg and kInstanceReg for later.
   // Call initializer function.
-  __ PushRegister(kInstanceReg);
+  __ PushRegistersInOrder({kFieldReg, kInstanceReg, kInstanceReg});
 
   static_assert(
       InitInstanceFieldABI::kResultReg == CallingConventions::kReturnReg,
@@ -219,8 +217,8 @@
 void StubCodeCompiler::GenerateReThrowStub(Assembler* assembler) {
   __ EnterStubFrame();
   __ PushObject(NullObject());  // Make room for (unused) result.
-  __ PushRegister(ReThrowABI::kExceptionReg);
-  __ PushRegister(ReThrowABI::kStackTraceReg);
+  __ PushRegistersInOrder(
+      {ReThrowABI::kExceptionReg, ReThrowABI::kStackTraceReg});
   __ CallRuntime(kReThrowRuntimeEntry, /*argument_count=*/2);
   __ Breakpoint();
 }
@@ -235,11 +233,11 @@
 
 void StubCodeCompiler::GenerateAssertSubtypeStub(Assembler* assembler) {
   __ EnterStubFrame();
-  __ PushRegister(AssertSubtypeABI::kInstantiatorTypeArgumentsReg);
-  __ PushRegister(AssertSubtypeABI::kFunctionTypeArgumentsReg);
-  __ PushRegister(AssertSubtypeABI::kSubTypeReg);
-  __ PushRegister(AssertSubtypeABI::kSuperTypeReg);
-  __ PushRegister(AssertSubtypeABI::kDstNameReg);
+  __ PushRegistersInOrder({AssertSubtypeABI::kInstantiatorTypeArgumentsReg,
+                           AssertSubtypeABI::kFunctionTypeArgumentsReg,
+                           AssertSubtypeABI::kSubTypeReg,
+                           AssertSubtypeABI::kSuperTypeReg,
+                           AssertSubtypeABI::kDstNameReg});
   __ CallRuntime(kSubtypeCheckRuntimeEntry, /*argument_count=*/5);
   __ Drop(5);  // Drop unused result as well as arguments.
   __ LeaveStubFrame();
@@ -261,8 +259,8 @@
       target::kWordSize * AssertAssignableStubABI::kInstantiatorTAVSlotFromFp));
   __ pushl(Address(EBP, target::kWordSize *
                             AssertAssignableStubABI::kFunctionTAVSlotFromFp));
-  __ PushRegister(AssertAssignableStubABI::kDstNameReg);
-  __ PushRegister(AssertAssignableStubABI::kSubtypeTestReg);
+  __ PushRegistersInOrder({AssertAssignableStubABI::kDstNameReg,
+                           AssertAssignableStubABI::kSubtypeTestReg});
   __ PushObject(Smi::ZoneHandle(Smi::New(kTypeCheckFromInline)));
   __ CallRuntime(kTypeCheckRuntimeEntry, /*argument_count=*/7);
   __ Drop(8);
@@ -274,9 +272,9 @@
 static void BuildInstantiateTypeRuntimeCall(Assembler* assembler) {
   __ EnterStubFrame();
   __ PushObject(Object::null_object());
-  __ PushRegister(InstantiateTypeABI::kTypeReg);
-  __ PushRegister(InstantiateTypeABI::kInstantiatorTypeArgumentsReg);
-  __ PushRegister(InstantiateTypeABI::kFunctionTypeArgumentsReg);
+  __ PushRegistersInOrder({InstantiateTypeABI::kTypeReg,
+                           InstantiateTypeABI::kInstantiatorTypeArgumentsReg,
+                           InstantiateTypeABI::kFunctionTypeArgumentsReg});
   __ CallRuntime(kInstantiateTypeRuntimeEntry, /*argument_count=*/3);
   __ Drop(3);
   __ PopRegister(InstantiateTypeABI::kResultTypeReg);
@@ -416,11 +414,10 @@
 void StubCodeCompiler::GenerateInstanceOfStub(Assembler* assembler) {
   __ EnterStubFrame();
   __ PushObject(NullObject());  // Make room for the result.
-  __ PushRegister(TypeTestABI::kInstanceReg);
-  __ PushRegister(TypeTestABI::kDstTypeReg);
-  __ PushRegister(TypeTestABI::kInstantiatorTypeArgumentsReg);
-  __ PushRegister(TypeTestABI::kFunctionTypeArgumentsReg);
-  __ PushRegister(TypeTestABI::kSubtypeTestCacheReg);
+  __ PushRegistersInOrder({TypeTestABI::kInstanceReg, TypeTestABI::kDstTypeReg,
+                           TypeTestABI::kInstantiatorTypeArgumentsReg,
+                           TypeTestABI::kFunctionTypeArgumentsReg,
+                           TypeTestABI::kSubtypeTestCacheReg});
   __ CallRuntime(kInstanceofRuntimeEntry, /*argument_count=*/5);
   __ Drop(5);
   __ PopRegister(TypeTestABI::kInstanceOfResultReg);
@@ -816,10 +813,9 @@
 static void InvokeTypeCheckFromTypeTestStub(Assembler* assembler,
                                             TypeCheckMode mode) {
   __ PushObject(NullObject());  // Make room for result.
-  __ PushRegister(TypeTestABI::kInstanceReg);
-  __ PushRegister(TypeTestABI::kDstTypeReg);
-  __ PushRegister(TypeTestABI::kInstantiatorTypeArgumentsReg);
-  __ PushRegister(TypeTestABI::kFunctionTypeArgumentsReg);
+  __ PushRegistersInOrder({TypeTestABI::kInstanceReg, TypeTestABI::kDstTypeReg,
+                           TypeTestABI::kInstantiatorTypeArgumentsReg,
+                           TypeTestABI::kFunctionTypeArgumentsReg});
   __ PushObject(NullObject());
   __ PushRegister(TypeTestABI::kSubtypeTestCacheReg);
   __ PushImmediate(target::ToRawSmi(mode));
@@ -1015,8 +1011,8 @@
   __ Comment("Closure allocation via runtime");
   __ EnterStubFrame();
   __ PushObject(NullObject());  // Space on the stack for the return value.
-  __ PushRegister(AllocateClosureABI::kFunctionReg);
-  __ PushRegister(AllocateClosureABI::kContextReg);
+  __ PushRegistersInOrder(
+      {AllocateClosureABI::kFunctionReg, AllocateClosureABI::kContextReg});
   __ CallRuntime(kAllocateClosureRuntimeEntry, 2);
   __ PopRegister(AllocateClosureABI::kContextReg);
   __ PopRegister(AllocateClosureABI::kFunctionReg);
@@ -1287,7 +1283,7 @@
   const Register kTemp = SuspendStubABI::kTempReg;
   const Register kFrameSize = SuspendStubABI::kFrameSizeReg;
   const Register kSuspendState = SuspendStubABI::kSuspendStateReg;
-  const Register kFuture = SuspendStubABI::kFutureReg;
+  const Register kFunctionData = SuspendStubABI::kFunctionDataReg;
   const Register kSrcFrame = SuspendStubABI::kSrcFrameReg;
   const Register kDstFrame = SuspendStubABI::kDstFrameReg;
   Label alloc_slow_case, alloc_done, init_done, old_gen_object, call_await;
@@ -1308,7 +1304,7 @@
   __ CompareClassId(kSuspendState, kSuspendStateCid, kTemp);
   __ BranchIf(EQUAL, &init_done);
 
-  __ MoveRegister(kFuture, kSuspendState);
+  __ MoveRegister(kFunctionData, kSuspendState);
   __ Comment("Allocate SuspendState");
 
   // Check for allocation tracing.
@@ -1361,8 +1357,8 @@
       FieldAddress(kSuspendState, target::SuspendState::frame_size_offset()));
   __ StoreCompressedIntoObjectNoBarrier(
       kSuspendState,
-      FieldAddress(kSuspendState, target::SuspendState::future_offset()),
-      kFuture);
+      FieldAddress(kSuspendState, target::SuspendState::function_data_offset()),
+      kFunctionData);
 
   {
 #if defined(TARGET_ARCH_ARM64) || defined(TARGET_ARCH_RISCV32) ||              \
@@ -1444,8 +1440,7 @@
 #endif
 
   // Push arguments for _SuspendState._await* method.
-  __ PushRegister(kSuspendState);
-  __ PushRegister(kArgument);
+  __ PushRegistersInOrder({kSuspendState, kArgument});
 
   // Write barrier.
   __ BranchIfBit(kSuspendState, target::ObjectAlignment::kNewObjectBitPosition,
@@ -1470,12 +1465,12 @@
 #endif
   __ Bind(&alloc_slow_case);
   __ Comment("SuspendState Allocation slow case");
-  __ PushRegister(kArgument);   // Save argument.
-  __ PushRegister(kFrameSize);  // Save frame size.
+  // Save argument and frame size.
+  __ PushRegistersInOrder({kArgument, kFrameSize});
   __ PushObject(NullObject());  // Make space on stack for the return value.
   __ SmiTag(kFrameSize);
-  __ PushRegister(kFrameSize);  // Pass frame size to runtime entry.
-  __ PushRegister(kFuture);     // Pass future.
+  // Pass frame size and function data to runtime entry.
+  __ PushRegistersInOrder({kFrameSize, kFunctionData});
   __ CallRuntime(kAllocateSuspendStateRuntimeEntry, 2);
   __ Drop(2);                     // Drop arguments
   __ PopRegister(kSuspendState);  // Get result.
@@ -1502,10 +1497,15 @@
   __ Jump(&call_await);
 }
 
-void StubCodeCompiler::GenerateAwaitAsyncStub(Assembler* assembler) {
+void StubCodeCompiler::GenerateAwaitStub(Assembler* assembler) {
+  GenerateSuspendStub(assembler,
+                      target::Thread::suspend_state_await_entry_point_offset());
+}
+
+void StubCodeCompiler::GenerateYieldAsyncStarStub(Assembler* assembler) {
   GenerateSuspendStub(
       assembler,
-      target::Thread::suspend_state_await_async_entry_point_offset());
+      target::Thread::suspend_state_yield_async_star_entry_point_offset());
 }
 
 void StubCodeCompiler::GenerateInitSuspendableFunctionStub(
@@ -1531,6 +1531,12 @@
       assembler, target::Thread::suspend_state_init_async_entry_point_offset());
 }
 
+void StubCodeCompiler::GenerateInitAsyncStarStub(Assembler* assembler) {
+  GenerateInitSuspendableFunctionStub(
+      assembler,
+      target::Thread::suspend_state_init_async_star_entry_point_offset());
+}
+
 void StubCodeCompiler::GenerateResumeStub(Assembler* assembler) {
   const Register kSuspendState = ResumeStubABI::kSuspendStateReg;
   const Register kTemp = ResumeStubABI::kTempReg;
@@ -1636,8 +1642,7 @@
 #endif
   __ EnterStubFrame();
   __ PushObject(NullObject());  // Make room for (unused) result.
-  __ PushRegister(kException);
-  __ PushRegister(kStackTrace);
+  __ PushRegistersInOrder({kException, kStackTrace});
   __ CallRuntime(kReThrowRuntimeEntry, /*argument_count=*/2);
   __ Breakpoint();
 }
@@ -1654,8 +1659,7 @@
   __ LeaveDartFrame();
 
   __ EnterStubFrame();
-  __ PushRegister(kSuspendState);
-  __ PushRegister(CallingConventions::kReturnReg);
+  __ PushRegistersInOrder({kSuspendState, CallingConventions::kReturnReg});
   __ Call(Address(THR, return_entry_point_offset));
   __ LeaveStubFrame();
   __ Ret();
@@ -1674,6 +1678,12 @@
           suspend_state_return_async_not_future_entry_point_offset());
 }
 
+void StubCodeCompiler::GenerateReturnAsyncStarStub(Assembler* assembler) {
+  GenerateReturnStub(
+      assembler,
+      target::Thread::suspend_state_return_async_star_entry_point_offset());
+}
+
 void StubCodeCompiler::GenerateAsyncExceptionHandlerStub(Assembler* assembler) {
   const Register kSuspendState = AsyncExceptionHandlerStubABI::kSuspendStateReg;
   ASSERT(kSuspendState != kExceptionObjectReg);
@@ -1694,9 +1704,8 @@
 
   __ LeaveDartFrame();
   __ EnterStubFrame();
-  __ PushRegister(kSuspendState);
-  __ PushRegister(kExceptionObjectReg);
-  __ PushRegister(kStackTraceObjectReg);
+  __ PushRegistersInOrder(
+      {kSuspendState, kExceptionObjectReg, kStackTraceObjectReg});
   __ Call(Address(
       THR,
       target::Thread::suspend_state_handle_exception_entry_point_offset()));
@@ -1712,8 +1721,7 @@
   __ LeaveDartFrame();
   __ EnterStubFrame();
   __ PushObject(NullObject());  // Make room for (unused) result.
-  __ PushRegister(kExceptionObjectReg);
-  __ PushRegister(kStackTraceObjectReg);
+  __ PushRegistersInOrder({kExceptionObjectReg, kStackTraceObjectReg});
   __ CallRuntime(kReThrowRuntimeEntry, /*argument_count=*/2);
   __ Breakpoint();
 }
diff --git a/runtime/vm/compiler/stub_code_compiler_arm.cc b/runtime/vm/compiler/stub_code_compiler_arm.cc
index 177186a..c252342 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm.cc
@@ -507,8 +507,8 @@
                                           bool with_fpu_regs) {
   auto perform_runtime_call = [&]() {
     ASSERT(!GenericCheckBoundInstr::UseUnboxedRepresentation());
-    __ PushRegister(RangeErrorABI::kLengthReg);
-    __ PushRegister(RangeErrorABI::kIndexReg);
+    __ PushRegistersInOrder(
+        {RangeErrorABI::kLengthReg, RangeErrorABI::kIndexReg});
     __ CallRuntime(kRangeErrorRuntimeEntry, /*argument_count=*/2);
     __ Breakpoint();
   };
@@ -1849,11 +1849,10 @@
 
   __ LoadObject(AllocateObjectABI::kResultReg, NullObject());
 
-  // Pushes result slot, then parameter class.
-  __ PushRegisterPair(kClsReg, AllocateObjectABI::kResultReg);
-
-  // Should be Object::null() if class is non-parameterized.
-  __ Push(AllocateObjectABI::kTypeArgumentsReg);
+  // Pushes result slot, then parameter class and type arguments.
+  // Type arguments should be Object::null() if class is non-parameterized.
+  __ PushRegistersInOrder({AllocateObjectABI::kResultReg, kClsReg,
+                           AllocateObjectABI::kTypeArgumentsReg});
 
   __ CallRuntime(kAllocateObjectRuntimeEntry, 2);
 
diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc
index a3cb533..0779276 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc
@@ -723,8 +723,8 @@
       __ Bind(&length);
       __ SmiTag(RangeErrorABI::kLengthReg);
     }
-    __ PushRegister(RangeErrorABI::kLengthReg);
-    __ PushRegister(RangeErrorABI::kIndexReg);
+    __ PushRegistersInOrder(
+        {RangeErrorABI::kLengthReg, RangeErrorABI::kIndexReg});
     __ CallRuntime(kRangeErrorRuntimeEntry, /*argument_count=*/2);
     __ Breakpoint();
   };
diff --git a/runtime/vm/compiler/stub_code_compiler_riscv.cc b/runtime/vm/compiler/stub_code_compiler_riscv.cc
index 55fc441..9fcc71b 100644
--- a/runtime/vm/compiler/stub_code_compiler_riscv.cc
+++ b/runtime/vm/compiler/stub_code_compiler_riscv.cc
@@ -440,8 +440,7 @@
   __ Bind(&no_type_args);
 
   // Push type arguments & extracted method.
-  __ PushRegister(T3);
-  __ PushRegister(T1);
+  __ PushRegistersInOrder({T3, T1});
 
   // Allocate context.
   {
@@ -563,8 +562,8 @@
       __ SmiTag(RangeErrorABI::kLengthReg);
     }
 #endif  // XLEN != 32
-    __ PushRegister(RangeErrorABI::kLengthReg);
-    __ PushRegister(RangeErrorABI::kIndexReg);
+    __ PushRegistersInOrder(
+        {RangeErrorABI::kLengthReg, RangeErrorABI::kIndexReg});
     __ CallRuntime(kRangeErrorRuntimeEntry, /*argument_count=*/2);
     __ Breakpoint();
   };
@@ -732,8 +731,7 @@
   // calling into the runtime.
   __ EnterStubFrame();
   // Setup space on stack for return value and preserve arguments descriptor.
-  __ PushRegister(S4);
-  __ PushRegister(ZR);
+  __ PushRegistersInOrder({S4, ZR});
   __ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
   // Get Code object result and restore arguments descriptor array.
   __ PopRegister(CODE_REG);
@@ -753,9 +751,9 @@
   // Create a stub frame as we are pushing some objects on the stack before
   // calling into the runtime.
   __ EnterStubFrame();
-  __ PushRegister(ZR);  // Result slot.
-  __ PushRegister(A0);  // Preserve receiver.
-  __ PushRegister(S5);  // Old cache value (also 2nd return value).
+  // Setup result slot, preserve receiver and
+  // push old cache value (also 2nd return value).
+  __ PushRegistersInOrder({ZR, A0, S5});
   __ CallRuntime(kFixCallersTargetMonomorphicRuntimeEntry, 2);
   __ PopRegister(S5);        // Get target cache object.
   __ PopRegister(A0);        // Restore receiver.
@@ -928,8 +926,9 @@
   if (kind == kLazyDeoptFromReturn) {
     __ PushRegister(T1);  // Preserve result as first local.
   } else if (kind == kLazyDeoptFromThrow) {
-    __ PushRegister(T1);  // Preserve exception as first local.
-    __ PushRegister(T2);  // Preserve stacktrace as second local.
+    // Preserve exception as first local.
+    // Preserve stacktrace as second local.
+    __ PushRegistersInOrder({T1, T2});
   }
   {
     __ mv(A0, FP);  // Pass last FP as parameter in R0.
@@ -963,8 +962,9 @@
   if (kind == kLazyDeoptFromReturn) {
     __ PushRegister(T1);  // Preserve result, it will be GC-d here.
   } else if (kind == kLazyDeoptFromThrow) {
-    __ PushRegister(T1);  // Preserve exception, it will be GC-d here.
-    __ PushRegister(T2);  // Preserve stacktrace, it will be GC-d here.
+    // Preserve exception, it will be GC-d here.
+    // Preserve stacktrace, it will be GC-d here.
+    __ PushRegistersInOrder({T1, T2});
   }
 
   __ PushRegister(ZR);  // Space for the result.
@@ -1035,10 +1035,9 @@
   __ add(TMP, TMP, FP);
   __ LoadFromOffset(A0, TMP,
                     target::frame_layout.param_end_from_fp * target::kWordSize);
-  __ PushRegister(ZR);  // Result slot.
-  __ PushRegister(A0);  // Receiver.
-  __ PushRegister(S5);  // ICData/MegamorphicCache.
-  __ PushRegister(S4);  // Arguments descriptor.
+  // Push: result slot, receiver, ICData/MegamorphicCache,
+  // arguments descriptor.
+  __ PushRegistersInOrder({ZR, A0, S5, S4});
 
   // Adjust arguments count.
   __ LoadCompressedSmiFieldFromOffset(
@@ -2069,10 +2068,8 @@
   // Load the function.
   __ LoadCompressedFieldFromOffset(TMP, A0, target::Closure::function_offset());
 
-  __ PushRegister(ZR);   // Result slot.
-  __ PushRegister(A0);   // Receiver.
-  __ PushRegister(TMP);  // Function
-  __ PushRegister(S4);   // Arguments descriptor.
+  // Push result slot, receiver, function, arguments descriptor.
+  __ PushRegistersInOrder({ZR, A0, TMP, S4});
 
   // Adjust arguments count.
   __ LoadCompressedSmiFieldFromOffset(
@@ -2382,8 +2379,7 @@
   __ EnterStubFrame();
   // Preserve IC data object and arguments descriptor array and
   // setup space on stack for result (target code object).
-  __ PushRegister(ARGS_DESC_REG);  // Preserve arguments descriptor array.
-  __ PushRegister(IC_DATA_REG);    // Preserve IC Data.
+  __ PushRegistersInOrder({ARGS_DESC_REG, IC_DATA_REG});
   if (save_entry_point) {
     __ SmiTag(T6);
     __ PushRegister(T6);
@@ -2667,8 +2663,8 @@
 void StubCodeCompiler::GenerateLazyCompileStub(Assembler* assembler) {
   // Preserve arg desc.
   __ EnterStubFrame();
-  __ PushRegister(ARGS_DESC_REG);  // Save arg. desc.
-  __ PushRegister(T0);             // Pass function.
+  // Save arguments descriptor and pass function.
+  __ PushRegistersInOrder({ARGS_DESC_REG, T0});
   __ CallRuntime(kCompileFunctionRuntimeEntry, 1);
   __ PopRegister(T0);             // Restore argument.
   __ PopRegister(ARGS_DESC_REG);  // Restore arg desc.
@@ -3371,11 +3367,9 @@
   __ lx(CODE_REG,
         Address(THR, target::Thread::switchable_call_miss_stub_offset()));
   __ EnterStubFrame();
-  __ PushRegister(A0);  // Preserve receiver.
-
-  __ PushRegister(ZR);  // Result slot.
-  __ PushRegister(ZR);  // Arg0: stub out.
-  __ PushRegister(A0);  // Arg1: Receiver
+  // Preserve receiver, setup result slot,
+  // pass Arg0: stub out and Arg1: Receiver.
+  __ PushRegistersInOrder({A0, ZR, ZR, A0});
   __ CallRuntime(kSwitchableCallMissRuntimeEntry, 2);
   __ Drop(1);
   __ PopRegister(CODE_REG);     // result = stub
@@ -3409,11 +3403,9 @@
 
   __ Bind(&miss);
   __ EnterStubFrame();
-  __ PushRegister(A0);  // Preserve receiver.
-
-  __ PushRegister(ZR);  // Result slot.
-  __ PushRegister(ZR);  // Arg0: Stub out.
-  __ PushRegister(A0);  // Arg1: Receiver
+  // Preserve receiver, setup result slot,
+  // pass Arg0: Stub out and Arg1: Receiver.
+  __ PushRegistersInOrder({A0, ZR, ZR, A0});
   __ CallRuntime(kSwitchableCallMissRuntimeEntry, 2);
   __ Drop(1);
   __ PopRegister(CODE_REG);  // result = stub
@@ -3471,10 +3463,10 @@
   // A runtime call to instantiate the type arguments is required.
   __ Bind(&call_runtime);
   __ EnterStubFrame();
-  __ PushRegisterPair(InstantiationABI::kUninstantiatedTypeArgumentsReg,
-                      NULL_REG);
-  __ PushRegisterPair(InstantiationABI::kFunctionTypeArgumentsReg,
-                      InstantiationABI::kInstantiatorTypeArgumentsReg);
+  __ PushRegistersInOrder({NULL_REG,
+                           InstantiationABI::kUninstantiatedTypeArgumentsReg,
+                           InstantiationABI::kInstantiatorTypeArgumentsReg,
+                           InstantiationABI::kFunctionTypeArgumentsReg});
   __ CallRuntime(kInstantiateTypeArgumentsRuntimeEntry, 3);
   __ Drop(3);  // Drop 2 type vectors, and uninstantiated type.
   __ PopRegister(InstantiationABI::kResultTypeArgumentsReg);
diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc
index 0dc8e25..ebbf71e 100644
--- a/runtime/vm/compiler/stub_code_compiler_x64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_x64.cc
@@ -657,8 +657,8 @@
       __ Bind(&length);
       __ SmiTag(RangeErrorABI::kLengthReg);
     }
-    __ PushRegister(RangeErrorABI::kLengthReg);
-    __ PushRegister(RangeErrorABI::kIndexReg);
+    __ PushRegistersInOrder(
+        {RangeErrorABI::kLengthReg, RangeErrorABI::kIndexReg});
     __ CallRuntime(kRangeErrorRuntimeEntry, /*argument_count=*/2);
     __ Breakpoint();
   };
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index 722f126..b63efec 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -532,18 +532,18 @@
   static const Register kResultReg = R0;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = R0;
   static const Register kTempReg = R1;
   static const Register kFrameSizeReg = R2;
   static const Register kSuspendStateReg = R3;
-  static const Register kFutureReg = R4;
+  static const Register kFunctionDataReg = R4;
   static const Register kSrcFrameReg = R8;
   static const Register kDstFrameReg = R9;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = R0;
 };
@@ -563,7 +563,8 @@
   static const Register kStackTraceReg = R4;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = R2;
 };
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index da0c132..8ec2b3e 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -366,18 +366,18 @@
   static const Register kResultReg = R0;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = R0;
   static const Register kTempReg = R1;
   static const Register kFrameSizeReg = R2;
   static const Register kSuspendStateReg = R3;
-  static const Register kFutureReg = R4;
+  static const Register kFunctionDataReg = R4;
   static const Register kSrcFrameReg = R5;
   static const Register kDstFrameReg = R6;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = R0;
 };
@@ -397,7 +397,8 @@
   static const Register kStackTraceReg = R4;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = R2;
 };
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index 2fa9890..1169aa4 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -260,16 +260,16 @@
   static const Register kResultReg = EAX;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = EAX;
   static const Register kTempReg = EDX;
   static const Register kFrameSizeReg = ECX;
   static const Register kSuspendStateReg = EBX;
-  static const Register kFutureReg = EDI;
+  static const Register kFunctionDataReg = EDI;
   // Can reuse THR.
   static const Register kSrcFrameReg = ESI;
-  // Can reuse kFutureReg.
+  // Can reuse kFunctionDataReg.
   static const Register kDstFrameReg = EDI;
 
   // Number of bytes to skip after
@@ -278,7 +278,7 @@
   static const intptr_t kResumePcDistance = 5;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = EAX;
 };
@@ -298,7 +298,8 @@
   static const Register kStackTraceReg = EDI;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = EBX;
 };
diff --git a/runtime/vm/constants_riscv.h b/runtime/vm/constants_riscv.h
index 8d7a085..4fb57fc 100644
--- a/runtime/vm/constants_riscv.h
+++ b/runtime/vm/constants_riscv.h
@@ -378,18 +378,18 @@
   static constexpr Register kResultReg = A0;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = A0;
   static const Register kTempReg = T0;
   static const Register kFrameSizeReg = T1;
   static const Register kSuspendStateReg = T2;
-  static const Register kFutureReg = T3;
+  static const Register kFunctionDataReg = T3;
   static const Register kSrcFrameReg = T4;
   static const Register kDstFrameReg = T5;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = A0;
 };
@@ -409,7 +409,8 @@
   static const Register kStackTraceReg = T4;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = T1;
 };
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index 1f22126..51828ea 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -335,13 +335,13 @@
   static const Register kResultReg = RAX;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = RAX;
   static const Register kTempReg = RDX;
   static const Register kFrameSizeReg = RCX;
   static const Register kSuspendStateReg = RBX;
-  static const Register kFutureReg = R8;
+  static const Register kFunctionDataReg = R8;
   static const Register kSrcFrameReg = RSI;
   static const Register kDstFrameReg = RDI;
 
@@ -351,7 +351,7 @@
   static const intptr_t kResumePcDistance = 5;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = RAX;
 };
@@ -371,7 +371,8 @@
   static const Register kStackTraceReg = RDI;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = RBX;
 };
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h
index d9b9ddf..bb496ef 100644
--- a/runtime/vm/kernel.h
+++ b/runtime/vm/kernel.h
@@ -56,8 +56,6 @@
   int value_;
 };
 
-const uint8_t kNativeYieldFlags = 0x2;
-
 enum LogicalOperator { kAnd, kOr };
 
 struct ProgramBinary {
diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h
index 6d7b33e..08d9da7 100644
--- a/runtime/vm/kernel_binary.h
+++ b/runtime/vm/kernel_binary.h
@@ -213,6 +213,12 @@
 };
 
 // Keep in sync with package:kernel/lib/ast.dart
+enum YieldStatementFlags {
+  kYieldStatementFlagYieldStar = 1 << 0,
+  kYieldStatementFlagNative = 1 << 1,
+};
+
+// Keep in sync with package:kernel/lib/ast.dart
 enum class NamedTypeFlags : uint8_t {
   kIsRequired = 1 << 0,
 };
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 3dcbc81..a9835fa 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -1377,15 +1377,19 @@
 
   // Build implemented interface types
   intptr_t interface_count = helper_.ReadListLength();
-  const Array& interfaces =
-      Array::Handle(Z, Array::New(interface_count, Heap::kOld));
-  for (intptr_t i = 0; i < interface_count; i++) {
-    const AbstractType& type =
-        T.BuildTypeWithoutFinalization();  // read ith type.
-    interfaces.SetAt(i, type);
+  if (interface_count == 0) {
+    klass->set_interfaces(Object::empty_array());
+  } else {
+    const Array& interfaces =
+        Array::Handle(Z, Array::New(interface_count, Heap::kOld));
+    for (intptr_t i = 0; i < interface_count; i++) {
+      const AbstractType& type =
+          T.BuildTypeWithoutFinalization();  // read ith type.
+      interfaces.SetAt(i, type);
+    }
+    klass->set_interfaces(interfaces);
   }
   class_helper->SetJustRead(ClassHelper::kImplementedClasses);
-  klass->set_interfaces(interfaces);
 
   if (class_helper->is_abstract()) klass->set_is_abstract();
 
@@ -2039,6 +2043,16 @@
     function.set_is_inlinable(false);
     function.set_is_visible(true);
     ASSERT(function.IsCompactAsyncFunction());
+  } else if (function_node_helper.async_marker_ ==
+             FunctionNodeHelper::kAsyncStar) {
+    if (!FLAG_precompiled_mode) {
+      FATAL("Compact async* functions are only supported in AOT mode.");
+    }
+    function.set_modifier(UntaggedFunction::kAsyncGen);
+    function.set_is_debuggable(true);
+    function.set_is_inlinable(false);
+    function.set_is_visible(true);
+    ASSERT(function.IsCompactAsyncStarFunction());
   } else {
     ASSERT(function_node_helper.async_marker_ == FunctionNodeHelper::kSync);
     function.set_is_debuggable(function_node_helper.dart_async_marker_ ==
@@ -2063,6 +2077,7 @@
         break;
     }
     ASSERT(!function.IsCompactAsyncFunction());
+    ASSERT(!function.IsCompactAsyncStarFunction());
   }
 
   if (!native_name.IsNull()) {
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index a9fffe2..da4f734 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -26036,7 +26036,7 @@
                     "symbolize stack traces in the precompiled runtime.");
 
 SuspendStatePtr SuspendState::New(intptr_t frame_size,
-                                  const Instance& future,
+                                  const Instance& function_data,
                                   Heap::Space space) {
   SuspendState& result = SuspendState::Handle();
   {
@@ -26047,7 +26047,7 @@
     result ^= raw;
     result.set_frame_size(frame_size);
     result.set_pc(0);
-    result.set_future(future);
+    result.set_function_data(function_data);
   }
   return result.ptr();
 }
@@ -26061,8 +26061,8 @@
   StoreNonPointer(&untag()->pc_, pc);
 }
 
-void SuspendState::set_future(const Instance& future) const {
-  untag()->set_future(future.ptr());
+void SuspendState::set_function_data(const Instance& function_data) const {
+  untag()->set_function_data(function_data.ptr());
 }
 
 const char* SuspendState::ToCString() const {
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 0ea4197..b5eaa99 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -3171,7 +3171,7 @@
   // Returns true if parameters of this function are copied into the frame
   // in the function prologue.
   bool MakesCopyOfParameters() const {
-    return HasOptionalParameters() || IsCompactAsyncFunction();
+    return HasOptionalParameters() || IsSuspendableFunction();
   }
 
 #if defined(DART_PRECOMPILED_RUNTIME)
@@ -3570,12 +3570,25 @@
     return modifier() == UntaggedFunction::kAsync;
   }
 
-  // TODO(alexmarkov): replace this predicate with IsAsyncFunction() after
-  // old async functions are removed.
+  // TODO(dartbug.com/48378): replace this predicate with IsAsyncFunction()
+  // after old async functions are removed.
   bool IsCompactAsyncFunction() const {
     return IsAsyncFunction() && is_debuggable();
   }
 
+  // TODO(dartbug.com/48378): replace this predicate with IsAsyncGenerator()
+  // after old async* functions are removed.
+  bool IsCompactAsyncStarFunction() const {
+    return IsAsyncGenerator() && is_debuggable();
+  }
+
+  // Returns true for functions which execution can be suspended
+  // using Suspend/Resume stubs. Such functions have an artificial
+  // :suspend_state local variable at the fixed location of the frame.
+  bool IsSuspendableFunction() const {
+    return IsCompactAsyncFunction() || IsCompactAsyncStarFunction();
+  }
+
   // Recognise synthetic sync-yielding functions like the inner-most:
   //   user_func /* was async */ {
   //      :async_op(..) yielding {
@@ -9260,11 +9273,6 @@
     return raw_smi;
   }
 
-  static SmiPtr FromAlignedAddress(uword address) {
-    ASSERT((address & kSmiTagMask) == kSmiTag);
-    return static_cast<SmiPtr>(address);
-  }
-
   static ClassPtr Class();
 
   static intptr_t Value(const SmiPtr raw_smi) { return RawSmiValue(raw_smi); }
@@ -11809,8 +11817,8 @@
     return OFFSET_OF(UntaggedSuspendState, frame_size_);
   }
   static intptr_t pc_offset() { return OFFSET_OF(UntaggedSuspendState, pc_); }
-  static intptr_t future_offset() {
-    return OFFSET_OF(UntaggedSuspendState, future_);
+  static intptr_t function_data_offset() {
+    return OFFSET_OF(UntaggedSuspendState, function_data_);
   }
   static intptr_t then_callback_offset() {
     return OFFSET_OF(UntaggedSuspendState, then_callback_);
@@ -11823,10 +11831,10 @@
   }
 
   static SuspendStatePtr New(intptr_t frame_size,
-                             const Instance& future,
+                             const Instance& function_data,
                              Heap::Space space = Heap::kNew);
 
-  InstancePtr future() const { return untag()->future(); }
+  InstancePtr function_data() const { return untag()->function_data(); }
   uword pc() const { return untag()->pc_; }
 
   // Returns Code object corresponding to the suspended function.
@@ -11835,7 +11843,7 @@
  private:
   void set_frame_size(intptr_t frame_size) const;
   void set_pc(uword pc) const;
-  void set_future(const Instance& future) const;
+  void set_function_data(const Instance& function_data) const;
 
   FINAL_HEAP_OBJECT_IMPLEMENTATION(SuspendState, Instance);
   friend class Class;
diff --git a/runtime/vm/object_store.cc b/runtime/vm/object_store.cc
index 7cc7f02..f2959f4 100644
--- a/runtime/vm/object_store.cc
+++ b/runtime/vm/object_store.cc
@@ -286,8 +286,17 @@
   cls =
       async_lib.LookupClassAllowPrivate(Symbols::_AsyncStarStreamController());
   ASSERT(!cls.IsNull());
+  RELEASE_ASSERT(cls.EnsureIsFinalized(thread) == Error::null());
   set_async_star_stream_controller(cls);
 
+  function = cls.LookupFunctionAllowPrivate(Symbols::add());
+  ASSERT(!function.IsNull());
+  set_async_star_stream_controller_add(function);
+
+  function = cls.LookupFunctionAllowPrivate(Symbols::addStream());
+  ASSERT(!function.IsNull());
+  set_async_star_stream_controller_add_stream(function);
+
   if (FLAG_async_debugger) {
     // Disable debugging and inlining of all functions on the
     // _AsyncStarStreamController class.
@@ -301,6 +310,10 @@
     }
   }
 
+  cls = async_lib.LookupClassAllowPrivate(Symbols::Stream());
+  ASSERT(!cls.IsNull());
+  set_stream_class(cls);
+
   cls = async_lib.LookupClassAllowPrivate(Symbols::_SuspendState());
   ASSERT(!cls.IsNull());
   const auto& error = cls.EnsureIsFinalized(thread);
@@ -310,9 +323,9 @@
   ASSERT(!function.IsNull());
   set_suspend_state_init_async(function);
 
-  function = cls.LookupFunctionAllowPrivate(Symbols::_awaitAsync());
+  function = cls.LookupFunctionAllowPrivate(Symbols::_await());
   ASSERT(!function.IsNull());
-  set_suspend_state_await_async(function);
+  set_suspend_state_await(function);
 
   function = cls.LookupFunctionAllowPrivate(Symbols::_returnAsync());
   ASSERT(!function.IsNull());
@@ -322,6 +335,18 @@
   ASSERT(!function.IsNull());
   set_suspend_state_return_async_not_future(function);
 
+  function = cls.LookupFunctionAllowPrivate(Symbols::_initAsyncStar());
+  ASSERT(!function.IsNull());
+  set_suspend_state_init_async_star(function);
+
+  function = cls.LookupFunctionAllowPrivate(Symbols::_yieldAsyncStar());
+  ASSERT(!function.IsNull());
+  set_suspend_state_yield_async_star(function);
+
+  function = cls.LookupFunctionAllowPrivate(Symbols::_returnAsyncStar());
+  ASSERT(!function.IsNull());
+  set_suspend_state_return_async_star(function);
+
   function = cls.LookupFunctionAllowPrivate(Symbols::_handleException());
   ASSERT(!function.IsNull());
   set_suspend_state_handle_exception(function);
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index ee7844a..674d1b4 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -165,15 +165,21 @@
   RW(Function, simple_instance_of_true_function)                               \
   RW(Function, simple_instance_of_false_function)                              \
   RW(Function, async_star_move_next_helper)                                    \
+  RW(Function, async_star_stream_controller_add)                               \
+  RW(Function, async_star_stream_controller_add_stream)                        \
   RW(Function, complete_on_async_return)                                       \
   RW(Function, complete_with_no_future_on_async_return)                        \
   RW(Function, complete_on_async_error)                                        \
   RW(Function, suspend_state_init_async)                                       \
-  RW(Function, suspend_state_await_async)                                      \
+  RW(Function, suspend_state_await)                                            \
   RW(Function, suspend_state_return_async)                                     \
   RW(Function, suspend_state_return_async_not_future)                          \
+  RW(Function, suspend_state_init_async_star)                                  \
+  RW(Function, suspend_state_yield_async_star)                                 \
+  RW(Function, suspend_state_return_async_star)                                \
   RW(Function, suspend_state_handle_exception)                                 \
   RW(Class, async_star_stream_controller)                                      \
+  RW(Class, stream_class)                                                      \
   ARW_RELAXED(Smi, future_timeout_future_index)                                \
   ARW_RELAXED(Smi, future_wait_future_index)                                   \
   RW(CompressedStackMaps, canonicalized_stack_map_entries)                     \
@@ -244,11 +250,14 @@
   RW(Code, type_parameter_tts_stub)                                            \
   RW(Code, unreachable_tts_stub)                                               \
   RW(Code, slow_tts_stub)                                                      \
-  RW(Code, await_async_stub)                                                   \
+  RW(Code, await_stub)                                                         \
   RW(Code, init_async_stub)                                                    \
   RW(Code, resume_stub)                                                        \
   RW(Code, return_async_stub)                                                  \
   RW(Code, return_async_not_future_stub)                                       \
+  RW(Code, init_async_star_stub)                                               \
+  RW(Code, yield_async_star_stub)                                              \
+  RW(Code, return_async_star_stub)                                             \
   RW(Array, dispatch_table_code_entries)                                       \
   RW(GrowableObjectArray, instructions_tables)                                 \
   RW(Array, obfuscation_map)                                                   \
@@ -324,11 +333,14 @@
   DO(init_instance_field_stub, InitInstanceField)                              \
   DO(init_late_instance_field_stub, InitLateInstanceField)                     \
   DO(init_late_final_instance_field_stub, InitLateFinalInstanceField)          \
-  DO(await_async_stub, AwaitAsync)                                             \
+  DO(await_stub, Await)                                                        \
   DO(init_async_stub, InitAsync)                                               \
   DO(resume_stub, Resume)                                                      \
   DO(return_async_stub, ReturnAsync)                                           \
   DO(return_async_not_future_stub, ReturnAsyncNotFuture)                       \
+  DO(init_async_star_stub, InitAsyncStar)                                      \
+  DO(yield_async_star_stub, YieldAsyncStar)                                    \
+  DO(return_async_star_stub, ReturnAsyncStar)                                  \
   DO(instance_of_stub, InstanceOf)
 
 #define ISOLATE_OBJECT_STORE_FIELD_LIST(R_, RW)                                \
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 5677ff9..6b5dab8 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -3292,10 +3292,15 @@
   intptr_t frame_size_;
   uword pc_;
 
-  COMPRESSED_POINTER_FIELD(InstancePtr, future)
+  // Holds function-specific object which is returned from
+  // SuspendState.init* method.
+  // For async functions: _Future instance.
+  // For async* functions: _AsyncStarStreamController instance.
+  COMPRESSED_POINTER_FIELD(InstancePtr, function_data)
+
   COMPRESSED_POINTER_FIELD(ClosurePtr, then_callback)
   COMPRESSED_POINTER_FIELD(ClosurePtr, error_callback)
-  VISIT_FROM(future)
+  VISIT_FROM(function_data)
   VISIT_TO(error_callback)
 
  public:
diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc
index 749e1d2..a7e7a92 100644
--- a/runtime/vm/raw_object_fields.cc
+++ b/runtime/vm/raw_object_fields.cc
@@ -191,7 +191,7 @@
   F(RegExp, two_byte_sticky_)                                                  \
   F(RegExp, external_one_byte_sticky_)                                         \
   F(RegExp, external_two_byte_sticky_)                                         \
-  F(SuspendState, future_)                                                     \
+  F(SuspendState, function_data_)                                              \
   F(SuspendState, then_callback_)                                              \
   F(SuspendState, error_callback_)                                             \
   F(WeakProperty, key_)                                                        \
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index b1b3345..ac9d41a 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -711,13 +711,14 @@
 
 // Allocate a SuspendState object.
 // Arg0: frame size.
-// Arg1: future.
+// Arg1: function data.
 // Return value: newly allocated object.
 DEFINE_RUNTIME_ENTRY(AllocateSuspendState, 2) {
   const Smi& frame_size = Smi::CheckedHandle(zone, arguments.ArgAt(0));
-  const Instance& future = Instance::CheckedHandle(zone, arguments.ArgAt(1));
+  const Instance& function_data =
+      Instance::CheckedHandle(zone, arguments.ArgAt(1));
   const SuspendState& result = SuspendState::Handle(
-      zone, SuspendState::New(frame_size.Value(), future,
+      zone, SuspendState::New(frame_size.Value(), function_data,
                               SpaceForRuntimeAllocation()));
   arguments.SetReturn(result);
 }
diff --git a/runtime/vm/stack_trace.cc b/runtime/vm/stack_trace.cc
index d172704..a5c7bdd 100644
--- a/runtime/vm/stack_trace.cc
+++ b/runtime/vm/stack_trace.cc
@@ -70,7 +70,7 @@
       callback_instance_(Object::Handle(zone)),
       future_impl_class(Class::Handle(zone)),
       future_listener_class(Class::Handle(zone)),
-      async_start_stream_controller_class(Class::Handle(zone)),
+      async_star_stream_controller_class(Class::Handle(zone)),
       stream_controller_class(Class::Handle(zone)),
       sync_stream_controller_class(Class::Handle(zone)),
       controller_subscription_class(Class::Handle(zone)),
@@ -95,9 +95,9 @@
       async_lib.LookupClassAllowPrivate(Symbols::_FutureListener());
   ASSERT(!future_listener_class.IsNull());
   // - async*:
-  async_start_stream_controller_class =
+  async_star_stream_controller_class =
       async_lib.LookupClassAllowPrivate(Symbols::_AsyncStarStreamController());
-  ASSERT(!async_start_stream_controller_class.IsNull());
+  ASSERT(!async_star_stream_controller_class.IsNull());
   stream_controller_class =
       async_lib.LookupClassAllowPrivate(Symbols::_StreamController());
   ASSERT(!stream_controller_class.IsNull());
@@ -130,7 +130,7 @@
   ASSERT(!future_listener_result_field.IsNull());
   // - async*:
   controller_controller_field =
-      async_start_stream_controller_class.LookupFieldAllowPrivate(
+      async_star_stream_controller_class.LookupFieldAllowPrivate(
           Symbols::controller());
   ASSERT(!controller_controller_field.IsNull());
   state_field =
@@ -163,14 +163,19 @@
 
 ClosurePtr CallerClosureFinder::FindCallerInAsyncGenClosure(
     const Context& receiver_context) {
-  // Get the async* _StreamController.
+  // Get the async* _AsyncStarStreamController.
   context_entry_ = receiver_context.At(Context::kControllerIndex);
-  ASSERT(context_entry_.IsInstance());
-  ASSERT(context_entry_.GetClassId() ==
-         async_start_stream_controller_class.id());
+  return FindCallerInAsyncStarStreamController(context_entry_);
+}
 
-  const Instance& controller = Instance::Cast(context_entry_);
-  controller_ = controller.GetField(controller_controller_field);
+ClosurePtr CallerClosureFinder::FindCallerInAsyncStarStreamController(
+    const Object& async_star_stream_controller) {
+  ASSERT(async_star_stream_controller.IsInstance());
+  ASSERT(async_star_stream_controller.GetClassId() ==
+         async_star_stream_controller_class.id());
+
+  controller_ = Instance::Cast(async_star_stream_controller)
+                    .GetField(controller_controller_field);
   ASSERT(!controller_.IsNull());
   ASSERT(controller_.GetClassId() == sync_stream_controller_class.id());
 
@@ -269,8 +274,15 @@
 
 ClosurePtr CallerClosureFinder::FindCallerFromSuspendState(
     const SuspendState& suspend_state) {
-  future_ = suspend_state.future();
-  return GetCallerInFutureImpl(future_);
+  context_entry_ = suspend_state.function_data();
+  if (context_entry_.GetClassId() == future_impl_class.id()) {
+    return GetCallerInFutureImpl(context_entry_);
+  } else if (context_entry_.GetClassId() ==
+             async_star_stream_controller_class.id()) {
+    return FindCallerInAsyncStarStreamController(context_entry_);
+  } else {
+    UNREACHABLE();
+  }
 }
 
 ClosurePtr CallerClosureFinder::UnwrapAsyncThen(const Closure& closure) {
@@ -289,14 +301,15 @@
 
 bool CallerClosureFinder::IsCompactAsyncCallback(const Function& function) {
   parent_function_ = function.parent_function();
-  return parent_function_.recognized_kind() ==
-         MethodRecognizer::kSuspendState_createAsyncCallbacks;
+  auto kind = parent_function_.recognized_kind();
+  return (kind == MethodRecognizer::kSuspendState_createAsyncCallbacks) ||
+         (kind == MethodRecognizer::kSuspendState_createAsyncStarCallback);
 }
 
 SuspendStatePtr CallerClosureFinder::GetSuspendStateFromAsyncCallback(
     const Closure& closure) {
   ASSERT(IsCompactAsyncCallback(Function::Handle(closure.function())));
-  // Async handler only captures the receiver (SuspendState).
+  // Async/async* handler only captures the receiver (SuspendState).
   receiver_context_ = closure.context();
   RELEASE_ASSERT(receiver_context_.num_variables() == 1);
   return SuspendState::RawCast(receiver_context_.At(0));
@@ -469,7 +482,8 @@
     return Closure::null();
   }
 
-  if (function.IsCompactAsyncFunction()) {
+  if (function.IsCompactAsyncFunction() ||
+      function.IsCompactAsyncStarFunction()) {
     auto& suspend_state = Object::Handle(
         zone, *reinterpret_cast<ObjectPtr*>(LocalVarAddress(
                   frame->fp(), runtime_frame_layout.FrameSlotForVariableIndex(
diff --git a/runtime/vm/stack_trace.h b/runtime/vm/stack_trace.h
index bab4fd1..2e33b71 100644
--- a/runtime/vm/stack_trace.h
+++ b/runtime/vm/stack_trace.h
@@ -31,6 +31,12 @@
   // Returns either the `onData` or the Future awaiter.
   ClosurePtr FindCallerInAsyncGenClosure(const Context& receiver_context);
 
+  // Find caller closure from an _AsyncStarStreamController instance
+  // corresponding to async* function.
+  // Returns either the `onData` or the Future awaiter.
+  ClosurePtr FindCallerInAsyncStarStreamController(
+      const Object& async_star_stream_controller);
+
   // Find caller closure from a function receiver closure.
   // For async* functions, async functions, `Future.timeout` and `Future.wait`,
   // we can do this by finding and following their awaited Futures.
@@ -40,11 +46,11 @@
   ClosurePtr FindCallerFromSuspendState(const SuspendState& suspend_state);
 
   // Returns true if given closure function is a Future callback
-  // corresponding to an async function.
+  // corresponding to an async/async* function or async* body callback.
   bool IsCompactAsyncCallback(const Function& function);
 
-  // Returns SuspendState from the given Future callback which corresponds
-  // to an async function.
+  // Returns SuspendState from the given callback which corresponds
+  // to an async/async* function.
   SuspendStatePtr GetSuspendStateFromAsyncCallback(const Closure& closure);
 
   // Finds the awaited Future from an async function receiver closure.
@@ -88,7 +94,7 @@
 
   Class& future_impl_class;
   Class& future_listener_class;
-  Class& async_start_stream_controller_class;
+  Class& async_star_stream_controller_class;
   Class& stream_controller_class;
   Class& sync_stream_controller_class;
   Class& controller_subscription_class;
diff --git a/runtime/vm/stub_code_list.h b/runtime/vm/stub_code_list.h
index b035700..f9110be 100644
--- a/runtime/vm/stub_code_list.h
+++ b/runtime/vm/stub_code_list.h
@@ -149,11 +149,14 @@
   V(InstantiateTypeArgumentsMayShareInstantiatorTA)                            \
   V(InstantiateTypeArgumentsMayShareFunctionTA)                                \
   V(NoSuchMethodDispatcher)                                                    \
-  V(AwaitAsync)                                                                \
+  V(Await)                                                                     \
   V(InitAsync)                                                                 \
   V(Resume)                                                                    \
   V(ReturnAsync)                                                               \
   V(ReturnAsyncNotFuture)                                                      \
+  V(InitAsyncStar)                                                             \
+  V(YieldAsyncStar)                                                            \
+  V(ReturnAsyncStar)                                                           \
   V(AsyncExceptionHandler)                                                     \
   V(UnknownDartCode)
 
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 34053dc..7eb6d2d 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -241,6 +241,7 @@
   V(SpaceWhereNewLine, " where\n")                                             \
   V(StackOverflowError, "StackOverflowError")                                  \
   V(StackTraceParameter, ":stack_trace")                                       \
+  V(Stream, "Stream")                                                          \
   V(StringBase, "_StringBase")                                                 \
   V(Struct, "Struct")                                                          \
   V(SubtypeTestCache, "SubtypeTestCache")                                      \
@@ -410,7 +411,7 @@
   V(_WeakProperty, "_WeakProperty")                                            \
   V(_WeakReferenceImpl, "_WeakReferenceImpl")                                  \
   V(_typedDataBase, "_typedDataBase")                                          \
-  V(_awaitAsync, "_awaitAsync")                                                \
+  V(_await, "_await")                                                          \
   V(_classRangeCheck, "_classRangeCheck")                                      \
   V(_ensureScheduleImmediate, "_ensureScheduleImmediate")                      \
   V(_future, "_future")                                                        \
@@ -420,6 +421,7 @@
   V(_handleNativeFinalizerMessage, "_handleNativeFinalizerMessage")            \
   V(_hasValue, "_hasValue")                                                    \
   V(_initAsync, "_initAsync")                                                  \
+  V(_initAsyncStar, "_initAsyncStar")                                          \
   V(_instanceOf, "_instanceOf")                                                \
   V(_listGetAt, "_listGetAt")                                                  \
   V(_listLength, "_listLength")                                                \
@@ -439,6 +441,7 @@
   V(_resultOrListeners, "_resultOrListeners")                                  \
   V(_returnAsync, "_returnAsync")                                              \
   V(_returnAsyncNotFuture, "_returnAsyncNotFuture")                            \
+  V(_returnAsyncStar, "_returnAsyncStar")                                      \
   V(_runExtension, "_runExtension")                                            \
   V(_runPendingImmediateCallback, "_runPendingImmediateCallback")              \
   V(_scanFlags, "_scanFlags")                                                  \
@@ -451,6 +454,9 @@
   V(_toString, "_toString")                                                    \
   V(_varData, "_varData")                                                      \
   V(_wordCharacterMap, "_wordCharacterMap")                                    \
+  V(_yieldAsyncStar, "_yieldAsyncStar")                                        \
+  V(add, "add")                                                                \
+  V(addStream, "addStream")                                                    \
   V(callback, "callback")                                                      \
   V(capture_length, ":capture_length")                                         \
   V(capture_start_index, ":capture_start_index")                               \
diff --git a/runtime/vm/tagged_pointer.h b/runtime/vm/tagged_pointer.h
index 172831f..fab7da6 100644
--- a/runtime/vm/tagged_pointer.h
+++ b/runtime/vm/tagged_pointer.h
@@ -9,6 +9,7 @@
 #include "platform/assert.h"
 #include "platform/utils.h"
 #include "vm/class_id.h"
+#include "vm/globals.h"
 #include "vm/pointer_tagging.h"
 
 namespace dart {
@@ -66,13 +67,29 @@
     return (addr & kObjectAlignmentMask) != kOldObjectBits;                    \
   }                                                                            \
                                                                                \
-  bool operator==(const type& other) { return ptr == other.ptr; }              \
-  bool operator!=(const type& other) { return ptr != other.ptr; }              \
+  bool operator==(const type& other) {                                         \
+    return (ptr & kSmiTagMask) == kHeapObjectTag                               \
+               ? ptr == other.ptr                                              \
+               : static_cast<compressed_uword>(ptr) ==                         \
+                     static_cast<compressed_uword>(other.ptr);                 \
+  }                                                                            \
+  bool operator!=(const type& other) {                                         \
+    return (ptr & kSmiTagMask) == kHeapObjectTag                               \
+               ? ptr != other.ptr                                              \
+               : static_cast<compressed_uword>(ptr) !=                         \
+                     static_cast<compressed_uword>(other.ptr);                 \
+  }                                                                            \
   constexpr bool operator==(const type& other) const {                         \
-    return ptr == other.ptr;                                                   \
+    return (ptr & kSmiTagMask) == kHeapObjectTag                               \
+               ? ptr == other.ptr                                              \
+               : static_cast<compressed_uword>(ptr) ==                         \
+                     static_cast<compressed_uword>(other.ptr);                 \
   }                                                                            \
   constexpr bool operator!=(const type& other) const {                         \
-    return ptr != other.ptr;                                                   \
+    return (ptr & kSmiTagMask) == kHeapObjectTag                               \
+               ? ptr != other.ptr                                              \
+               : static_cast<compressed_uword>(ptr) !=                         \
+                     static_cast<compressed_uword>(other.ptr);                 \
   }
 
 class ObjectPtr {
@@ -251,11 +268,6 @@
       : compressed_pointer_(static_cast<uint32_t>(tagged)) {}
 
   ObjectPtr Decompress(uword heap_base) const {
-    if ((compressed_pointer_ & kSmiTagMask) != kHeapObjectTag) {
-      // TODO(liama): Make all native code robust to junk in the upper 32-bits
-      // of SMIs, then remove this special casing.
-      return DecompressSmi();
-    }
     return static_cast<ObjectPtr>(static_cast<uword>(compressed_pointer_) +
                                   heap_base);
   }
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 32dc3ba..dc5b90b 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -168,9 +168,12 @@
 
 #define CACHED_FUNCTION_ENTRY_POINTS_LIST(V)                                   \
   V(suspend_state_init_async)                                                  \
-  V(suspend_state_await_async)                                                 \
+  V(suspend_state_await)                                                       \
   V(suspend_state_return_async)                                                \
   V(suspend_state_return_async_not_future)                                     \
+  V(suspend_state_init_async_star)                                             \
+  V(suspend_state_yield_async_star)                                            \
+  V(suspend_state_return_async_star)                                           \
   V(suspend_state_handle_exception)
 
 // This assertion marks places which assume that boolean false immediate
diff --git a/sdk/lib/_internal/vm/lib/async_patch.dart b/sdk/lib/_internal/vm/lib/async_patch.dart
index 27eb7e6..d6f6c74 100644
--- a/sdk/lib/_internal/vm/lib/async_patch.dart
+++ b/sdk/lib/_internal/vm/lib/async_patch.dart
@@ -110,7 +110,7 @@
 class _AsyncStarStreamController<T> {
   @pragma("vm:entry-point")
   StreamController<T> controller;
-  Function asyncStarBody;
+  Function? asyncStarBody;
   bool isAdding = false;
   bool onListenReceived = false;
   bool isScheduled = false;
@@ -127,7 +127,7 @@
   Stream<T> get stream {
     final Stream<T> local = controller.stream;
     if (local is _StreamImpl<T>) {
-      local._generator = asyncStarBody;
+      local._generator = asyncStarBody!;
     }
     return local;
   }
@@ -137,7 +137,7 @@
     isSuspendedAtYield = false;
     final bool? argument = continuationArgument;
     continuationArgument = null;
-    asyncStarBody(argument, null);
+    asyncStarBody!(argument, null);
   }
 
   void scheduleGenerator() {
@@ -158,6 +158,7 @@
   // controller.add(e);
   // suspend;
   // if (controller.isCancelled) return;
+  @pragma("vm:entry-point", "call")
   bool add(T event) {
     if (!onListenReceived) _fatal("yield before stream is listened to");
     if (isSuspendedAtYield) _fatal("unexpected yield");
@@ -174,6 +175,7 @@
   // Adds the elements of stream into this controller's stream.
   // The generator will be scheduled again when all of the
   // elements of the added stream have been consumed.
+  @pragma("vm:entry-point", "call")
   void addStream(Stream<T> stream) {
     if (!onListenReceived) _fatal("yield before stream is listened to");
 
@@ -327,7 +329,7 @@
   @pragma("vm:invisible")
   static Object? _initAsync<T>() {
     if (_trace) print('_initAsync<$T>');
-    return new _Future<T>();
+    return _Future<T>();
   }
 
   @pragma("vm:invisible")
@@ -371,14 +373,14 @@
 
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
-  Object? _awaitAsync(Object? object) {
+  Object? _await(Object? object) {
     if (_trace) print('_awaitAsync (object=$object)');
     if (_thenCallback == null) {
       _createAsyncCallbacks();
     }
     _awaitHelper(object, unsafeCast<dynamic Function(dynamic)>(_thenCallback),
         unsafeCast<dynamic Function(Object, StackTrace)>(_errorCallback));
-    return _future;
+    return _functionData;
   }
 
   @pragma("vm:entry-point", "call")
@@ -391,7 +393,7 @@
     _Future future;
     bool isSync = true;
     if (suspendState is _SuspendState) {
-      future = suspendState._future;
+      future = unsafeCast<_Future>(suspendState._functionData);
     } else {
       future = unsafeCast<_Future>(suspendState);
       isSync = false;
@@ -411,7 +413,7 @@
     _Future future;
     bool isSync = true;
     if (suspendState is _SuspendState) {
-      future = suspendState._future;
+      future = unsafeCast<_Future>(suspendState._functionData);
     } else {
       future = unsafeCast<_Future>(suspendState);
       isSync = false;
@@ -422,31 +424,79 @@
 
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
-  static Future _handleException(
+  static Object? _initAsyncStar<T>() {
+    if (_trace) print('_initAsyncStar<$T>');
+    return _AsyncStarStreamController<T>(null);
+  }
+
+  @pragma("vm:invisible")
+  @pragma("vm:recognized", "other")
+  _createAsyncStarCallback(_AsyncStarStreamController controller) {
+    controller.asyncStarBody = (value, _) {
+      if (_trace) print('asyncStarBody callback (value=$value)');
+      _resume(value, null, null);
+    };
+  }
+
+  @pragma("vm:entry-point", "call")
+  @pragma("vm:invisible")
+  Object? _yieldAsyncStar(Object? object) {
+    final controller = unsafeCast<_AsyncStarStreamController>(_functionData);
+    if (controller.asyncStarBody == null) {
+      _createAsyncStarCallback(controller);
+      return controller.stream;
+    }
+    return null;
+  }
+
+  @pragma("vm:entry-point", "call")
+  @pragma("vm:invisible")
+  static void _returnAsyncStar(Object suspendState, Object? returnValue) {
+    if (_trace) {
+      print('_returnAsyncStar (suspendState=$suspendState, '
+          'returnValue=$returnValue)');
+    }
+    final controller = unsafeCast<_AsyncStarStreamController>(
+        unsafeCast<_SuspendState>(suspendState)._functionData);
+    controller.close();
+  }
+
+  @pragma("vm:entry-point", "call")
+  @pragma("vm:invisible")
+  static Object? _handleException(
       Object suspendState, Object exception, StackTrace stackTrace) {
     if (_trace) {
       print('_handleException (suspendState=$suspendState, '
           'exception=$exception, stackTrace=$stackTrace)');
     }
-    _Future future;
+    Object? functionData;
     bool isSync = true;
     if (suspendState is _SuspendState) {
-      future = suspendState._future;
+      functionData = suspendState._functionData;
     } else {
-      future = unsafeCast<_Future>(suspendState);
+      functionData = suspendState;
       isSync = false;
     }
-    _completeOnAsyncError(future, exception, stackTrace, isSync);
-    return future;
+    if (functionData is _Future) {
+      // async function.
+      _completeOnAsyncError(functionData, exception, stackTrace, isSync);
+    } else if (functionData is _AsyncStarStreamController) {
+      // async* function.
+      functionData.addError(exception, stackTrace);
+      functionData.close();
+    } else {
+      throw 'Unexpected function data ${functionData.runtimeType} $functionData';
+    }
+    return functionData;
   }
 
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  external set _future(_Future value);
+  external set _functionData(Object value);
 
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  external _Future get _future;
+  external Object get _functionData;
 
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
@@ -467,5 +517,5 @@
   @pragma("vm:recognized", "other")
   @pragma("vm:never-inline")
   external void _resume(
-      dynamic value, Object? exception, StackTrace? stackTrace);
+      Object? value, Object? exception, StackTrace? stackTrace);
 }
diff --git a/sdk/lib/io/file_system_entity.dart b/sdk/lib/io/file_system_entity.dart
index 573457d..0b9ae80 100644
--- a/sdk/lib/io/file_system_entity.dart
+++ b/sdk/lib/io/file_system_entity.dart
@@ -792,7 +792,7 @@
       return _getTypeSyncHelper(rawPath, followLinks);
     }
     return overrides.fseGetTypeSync(
-        utf8.decode(rawPath, allowMalformed: true), followLinks);
+        _toStringFromUtf8Array(rawPath), followLinks);
   }
 
   static Future<FileSystemEntityType> _getTypeRequest(
@@ -813,8 +813,7 @@
     if (overrides == null) {
       return _getTypeRequest(rawPath, followLinks);
     }
-    return overrides.fseGetType(
-        utf8.decode(rawPath, allowMalformed: true), followLinks);
+    return overrides.fseGetType(_toStringFromUtf8Array(rawPath), followLinks);
   }
 
   static _throwIfError(Object result, String msg, [String? path]) {
diff --git a/tests/standalone/io/regress_34885_test.dart b/tests/standalone/io/regress_34885_test.dart
new file mode 100644
index 0000000..dadf8f0
--- /dev/null
+++ b/tests/standalone/io/regress_34885_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2022, 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 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+import 'dart:typed_data';
+
+import "package:async_helper/async_helper.dart";
+import "package:expect/expect.dart";
+
+class FileSystemEntityMock {
+  static Future<FileSystemEntityType> getType(String path, bool followLinks) {
+    Expect.equals(path.length, 4);
+    return new Future.value(FileSystemEntityType.file);
+  }
+
+  static FileSystemEntityType getTypeSync(String path, bool followLinks) {
+    Expect.equals(path.length, 4);
+    return FileSystemEntityType.file;
+  }
+}
+
+main() async {
+  Future<Null> f = IOOverrides.runZoned(
+    () async {
+      Expect.equals(
+          await FileSystemEntity.type("file"), FileSystemEntityType.file);
+      Expect.equals(
+          FileSystemEntity.typeSync("file"), FileSystemEntityType.file);
+    },
+    fseGetType: FileSystemEntityMock.getType,
+    fseGetTypeSync: FileSystemEntityMock.getTypeSync,
+  );
+  await f;
+}
diff --git a/tests/standalone_2/io/regress_34885_test.dart b/tests/standalone_2/io/regress_34885_test.dart
new file mode 100644
index 0000000..dadf8f0
--- /dev/null
+++ b/tests/standalone_2/io/regress_34885_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2022, 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 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+import 'dart:typed_data';
+
+import "package:async_helper/async_helper.dart";
+import "package:expect/expect.dart";
+
+class FileSystemEntityMock {
+  static Future<FileSystemEntityType> getType(String path, bool followLinks) {
+    Expect.equals(path.length, 4);
+    return new Future.value(FileSystemEntityType.file);
+  }
+
+  static FileSystemEntityType getTypeSync(String path, bool followLinks) {
+    Expect.equals(path.length, 4);
+    return FileSystemEntityType.file;
+  }
+}
+
+main() async {
+  Future<Null> f = IOOverrides.runZoned(
+    () async {
+      Expect.equals(
+          await FileSystemEntity.type("file"), FileSystemEntityType.file);
+      Expect.equals(
+          FileSystemEntity.typeSync("file"), FileSystemEntityType.file);
+    },
+    fseGetType: FileSystemEntityMock.getType,
+    fseGetTypeSync: FileSystemEntityMock.getTypeSync,
+  );
+  await f;
+}
diff --git a/tools/VERSION b/tools/VERSION
index cbf25bd..cb98d08 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 79
+PRERELEASE 80
 PRERELEASE_PATCH 0
\ No newline at end of file
