diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index efcf572..57556ad 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -56,12 +56,19 @@
 ///
 /// Clients may not extend, implement or mix-in this class.
 @experimental
-abstract class AugmentationImportElement implements UriReferencedElement {
-  /// Returns the augmentation library that this element imports.
-  LibraryAugmentationElement get augmentation;
-
+abstract class AugmentationImportElement implements _ExistingElement {
   @override
   LibraryOrAugmentationElement get enclosingElement;
+
+  /// Returns the [LibraryAugmentationElement], if [uri] is a
+  /// [DirectiveUriWithAugmentation].
+  LibraryAugmentationElement? get importedAugmentation;
+
+  /// The offset of the `import` keyword.
+  int get importKeywordOffset;
+
+  /// The interpretation of the URI specified in the directive.
+  DirectiveUri get uri;
 }
 
 /// An element that represents a class or a mixin. The class can be defined by
@@ -514,6 +521,13 @@
 /// Clients may not extend, implement or mix-in this class.
 abstract class DirectiveUri {}
 
+/// [DirectiveUriWithSource] that references a [LibraryAugmentationElement].
+///
+/// Clients may not extend, implement or mix-in this class.
+abstract class DirectiveUriWithAugmentation extends DirectiveUriWithSource {
+  LibraryAugmentationElement get augmentation;
+}
+
 /// [DirectiveUriWithSource] that references a [LibraryElement].
 ///
 /// Clients may not extend, implement or mix-in this class.
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 79b5ba1..6a3129d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -85,7 +85,7 @@
 /// TODO(scheglov) Clean up the list of implicitly analyzed files.
 class AnalysisDriver implements AnalysisDriverGeneric {
   /// The version of data format, should be incremented on every format change.
-  static const int DATA_VERSION = 231;
+  static const int DATA_VERSION = 232;
 
   /// The number of exception contexts allowed to write. Once this field is
   /// zero, we stop writing any new exception contexts in this process.
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index 5120f96..f370099 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -104,6 +104,17 @@
   }
 
   @override
+  void dispose() {
+    super.dispose();
+    invalidateLibraryCycle();
+  }
+
+  @override
+  void invalidateLibraryCycle() {
+    augmented?.invalidateLibraryCycle();
+  }
+
+  @override
   bool isAugmentationOf(LibraryOrAugmentationFileKind container) {
     return uriFile == container.file;
   }
@@ -1688,7 +1699,7 @@
   FileState get importedFile => uri.file;
 
   @override
-  Source? get importedSource => importedFile.source;
+  Source get importedSource => importedFile.source;
 
   @override
   void dispose() {
@@ -1839,7 +1850,23 @@
       }
     }
 
-    // TODO(scheglov) Include augmentations.
+    // TODO(scheglov) Test how augmentations affect signatures.
+    void visitAugmentations(LibraryOrAugmentationFileKind kind) {
+      if (kind is AugmentationFileStateKind) {
+        files.add(kind.file);
+      }
+      for (final import in kind.augmentations) {
+        if (import is ImportAugmentationDirectiveWithFile) {
+          final augmentation = import.importedAugmentation;
+          if (augmentation != null) {
+            visitAugmentations(augmentation);
+          }
+        }
+      }
+    }
+
+    visitAugmentations(this);
+
     return files;
   }
 
@@ -1922,6 +1949,7 @@
     _libraryCycle = cycle;
   }
 
+  @override
   void invalidateLibraryCycle() {
     _libraryCycle?.invalidate();
     _libraryCycle = null;
@@ -2084,6 +2112,9 @@
     }
     return false;
   }
+
+  /// Invalidates the containing [LibraryFileStateKind] cycle.
+  void invalidateLibraryCycle() {}
 }
 
 class NamespaceDirectiveUris {
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 56ef705..fe4ec68 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -919,7 +919,7 @@
 
   @override
   LibraryAugmentationElement? get uriElement {
-    return element?.augmentation;
+    return element?.importedAugmentation;
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 14175b6..4c718a3 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -526,16 +526,18 @@
   }
 }
 
-/// A concrete implementation of a [AugmentationImportElement].
-class AugmentationImportElementImpl extends UriReferencedElementImpl
+class AugmentationImportElementImpl extends _ExistingElementImpl
     implements AugmentationImportElement {
   @override
-  final LibraryAugmentationElement augmentation;
+  final int importKeywordOffset;
+
+  @override
+  final DirectiveUri uri;
 
   AugmentationImportElementImpl({
-    required this.augmentation,
-    required int nameOffset,
-  }) : super(null, nameOffset);
+    required this.importKeywordOffset,
+    required this.uri,
+  }) : super(null, importKeywordOffset);
 
   @override
   LibraryOrAugmentationElementImpl get enclosingElement {
@@ -543,6 +545,15 @@
   }
 
   @override
+  LibraryAugmentationElementImpl? get importedAugmentation {
+    final uri = this.uri;
+    if (uri is DirectiveUriWithAugmentationImpl) {
+      return uri.augmentation;
+    }
+    return null;
+  }
+
+  @override
   ElementKind get kind => ElementKind.AUGMENTATION_IMPORT;
 
   @override
@@ -1671,6 +1682,19 @@
 
 class DirectiveUriImpl implements DirectiveUri {}
 
+class DirectiveUriWithAugmentationImpl extends DirectiveUriWithSourceImpl
+    implements DirectiveUriWithAugmentation {
+  @override
+  late LibraryAugmentationElementImpl augmentation;
+
+  DirectiveUriWithAugmentationImpl({
+    required super.relativeUriString,
+    required super.relativeUri,
+    required super.source,
+    required this.augmentation,
+  });
+}
+
 class DirectiveUriWithLibraryImpl extends DirectiveUriWithSourceImpl
     implements DirectiveUriWithLibrary {
   @override
@@ -2619,7 +2643,11 @@
   E? thisOrAncestorOfType<E extends Element>() {
     Element? element = this;
     while (element != null && element is! E) {
-      element = element.enclosingElement;
+      if (element is CompilationUnitElement) {
+        element = element.enclosingElement2;
+      } else {
+        element = element.enclosingElement;
+      }
     }
     return element as E?;
   }
@@ -2697,7 +2725,12 @@
     Element? ancestor = element;
     while (ancestor != null) {
       components.insert(0, (ancestor as ElementImpl).identifier);
-      ancestor = ancestor.enclosingElement;
+      if (ancestor is CompilationUnitElementImpl) {
+        // TODO(scheglov) switch everything to `enclosingElement2`.
+        ancestor = ancestor.enclosingElement2;
+      } else {
+        ancestor = ancestor.enclosingElement;
+      }
     }
     _components = components;
   }
@@ -3887,6 +3920,8 @@
   @override
   final LibraryOrAugmentationElementImpl augmented;
 
+  LibraryElementLinkedData? linkedData;
+
   LibraryAugmentationElementImpl({
     required this.augmented,
     required super.nameOffset,
@@ -3897,15 +3932,19 @@
   List<ExtensionElement> get accessibleExtensions => throw UnimplementedError();
 
   @override
-  // TODO: implement exports2
-  List<ExportElement2> get exports2 => throw UnimplementedError();
+  List<ExportElement2> get exports2 {
+    linkedData?.read(this);
+    return _exports2;
+  }
 
   @override
   FeatureSet get featureSet => augmented.featureSet;
 
   @override
-  // TODO: implement imports2
-  List<ImportElement2> get imports2 => throw UnimplementedError();
+  List<ImportElement2> get imports2 {
+    linkedData?.read(this);
+    return _imports2;
+  }
 
   @override
   bool get isNonNullableByDefault => augmented.isNonNullableByDefault;
@@ -4241,9 +4280,30 @@
     return [
       _definingCompilationUnit,
       ..._partUnits,
+      ..._augmentationUnits,
     ];
   }
 
+  List<CompilationUnitElementImpl> get _augmentationUnits {
+    final result = <CompilationUnitElementImpl>[];
+
+    void visitAugmentations(LibraryOrAugmentationElementImpl container) {
+      if (container is LibraryAugmentationElementImpl) {
+        result.add(container.definingCompilationUnit);
+      }
+      for (final import in container.augmentationImports) {
+        import as AugmentationImportElementImpl;
+        final augmentation = import.importedAugmentation;
+        if (augmentation != null) {
+          visitAugmentations(augmentation);
+        }
+      }
+    }
+
+    visitAugmentations(this);
+    return result;
+  }
+
   List<CompilationUnitElement> get _partUnits {
     return parts2
         .map((e) => e.uri)
@@ -4436,7 +4496,9 @@
 
   set augmentationImports(List<AugmentationImportElement> imports) {
     for (final importElement in imports) {
-      (importElement as AugmentationImportElementImpl).enclosingElement = this;
+      importElement as AugmentationImportElementImpl;
+      importElement.enclosingElement = this;
+      importElement.importedAugmentation?.enclosingElement = this;
     }
     _augmentationImports = imports;
   }
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart b/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart
index a59dff8..95d41a9 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart
@@ -8,6 +8,7 @@
 }
 
 enum DirectiveUriKind {
+  withAugmentation,
   withLibrary,
   withUnit,
   withSource,
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index 88a738e..f0c804e 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -461,6 +461,11 @@
         libraryElement: libraryElement,
       );
     });
+    libraryElement.augmentationImports = _reader.readTypedList(() {
+      return _readAugmentationImportElement(
+        libraryElement: libraryElement,
+      );
+    });
     LibraryElementFlags.read(_reader, libraryElement);
 
     for (final import in libraryElement.imports2) {
@@ -509,6 +514,38 @@
     }
   }
 
+  LibraryAugmentationElementImpl _readAugmentationElement({
+    required LibraryOrAugmentationElementImpl augmented,
+    required LibraryElementImpl libraryElement,
+    required Source unitSource,
+  }) {
+    final definingUnit = _readUnitElement(
+      libraryElement: libraryElement,
+      librarySource: unitSource,
+      unitSource: unitSource,
+    );
+
+    final augmentation = LibraryAugmentationElementImpl(
+      augmented: augmented,
+      nameOffset: -1, // TODO(scheglov) implement, test
+    );
+    augmentation.definingCompilationUnit = definingUnit;
+
+    return augmentation;
+  }
+
+  AugmentationImportElementImpl _readAugmentationImportElement({
+    required LibraryElementImpl libraryElement,
+  }) {
+    final uri = _readDirectiveUri(
+      libraryElement: libraryElement,
+    );
+    return AugmentationImportElementImpl(
+      importKeywordOffset: -1, // TODO(scheglov) implement, test
+      uri: uri,
+    );
+  }
+
   ClassElementImpl _readClassElement(
     CompilationUnitElementImpl unitElement,
     Reference unitReference,
@@ -639,6 +676,26 @@
     final kindIndex = _reader.readByte();
     final kind = DirectiveUriKind.values[kindIndex];
     switch (kind) {
+      case DirectiveUriKind.withAugmentation:
+        final parent = readWithSource();
+        final augmentation = _readAugmentationElement(
+          augmented: libraryElement,
+          libraryElement: libraryElement,
+          unitSource: parent.source,
+        );
+        return DirectiveUriWithAugmentationImpl(
+          relativeUriString: parent.relativeUriString,
+          relativeUri: parent.relativeUri,
+          source: parent.source,
+          augmentation: augmentation,
+        );
+      case DirectiveUriKind.withLibrary:
+        final parent = readWithSource();
+        return DirectiveUriWithLibraryImpl.read(
+          relativeUriString: parent.relativeUriString,
+          relativeUri: parent.relativeUri,
+          source: parent.source,
+        );
       case DirectiveUriKind.withUnit:
         final parent = readWithSource();
         final unitElement = _readUnitElement(
@@ -651,13 +708,6 @@
           relativeUri: parent.relativeUri,
           unit: unitElement,
         );
-      case DirectiveUriKind.withLibrary:
-        final parent = readWithSource();
-        return DirectiveUriWithLibraryImpl.read(
-          relativeUriString: parent.relativeUriString,
-          relativeUri: parent.relativeUri,
-          source: parent.source,
-        );
       case DirectiveUriKind.withSource:
         return readWithSource();
       case DirectiveUriKind.withRelativeUri:
diff --git a/pkg/analyzer/lib/src/summary2/bundle_writer.dart b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
index 8ff8bbd..c8b469e 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
@@ -104,6 +104,10 @@
     _resolutionSink._writeAnnotationList(libraryElement.metadata);
     _writeList(libraryElement.imports2, _writeImportElement);
     _writeList(libraryElement.exports2, _writeExportElement);
+    _writeList(
+      libraryElement.augmentationImports,
+      _writeAugmentationImportElement,
+    );
     for (final partElement in libraryElement.parts2) {
       _resolutionSink._writeAnnotationList(partElement.metadata);
     }
@@ -123,6 +127,17 @@
     );
   }
 
+  void _writeAugmentationElement(LibraryAugmentationElement augmentation) {
+    augmentation as LibraryAugmentationElementImpl;
+    _writeUnitElement(augmentation.definingCompilationUnit);
+  }
+
+  void _writeAugmentationImportElement(AugmentationImportElement element) {
+    element as AugmentationImportElementImpl;
+    _resolutionSink._writeAnnotationList(element.metadata);
+    _writeDirectiveUri(element.uri);
+  }
+
   void _writeClassElement(ClassElement element) {
     element as ClassElementImpl;
     _sink.writeUInt30(_resolutionSink.offset);
@@ -189,7 +204,11 @@
       _sink._writeStringReference('${element.source.uri}');
     }
 
-    if (element is DirectiveUriWithLibrary) {
+    if (element is DirectiveUriWithAugmentationImpl) {
+      _sink.writeByte(DirectiveUriKind.withAugmentation.index);
+      writeWithSource(element);
+      _writeAugmentationElement(element.augmentation);
+    } else if (element is DirectiveUriWithLibrary) {
       _sink.writeByte(DirectiveUriKind.withLibrary.index);
       writeWithSource(element);
     } else if (element is DirectiveUriWithUnit) {
diff --git a/pkg/analyzer/lib/src/summary2/element_builder.dart b/pkg/analyzer/lib/src/summary2/element_builder.dart
index a4aace3..2451694 100644
--- a/pkg/analyzer/lib/src/summary2/element_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/element_builder.dart
@@ -24,6 +24,7 @@
   final CompilationUnitElementImpl _unitElement;
 
   var _isFirstLibraryDirective = true;
+  var _augmentationDirectiveIndex = 0;
   var _exportDirectiveIndex = 0;
   var _importDirectiveIndex = 0;
   var _partDirectiveIndex = 0;
@@ -77,6 +78,14 @@
   }
 
   @override
+  void visitAugmentationImportDirective(AugmentationImportDirective node) {
+    final index = _augmentationDirectiveIndex++;
+    final element = _libraryElement.augmentationImports[index];
+    element as AugmentationImportElementImpl;
+    element.metadata = _buildAnnotations(node.metadata);
+  }
+
+  @override
   void visitClassDeclaration(covariant ClassDeclarationImpl node) {
     var nameNode = node.name;
     var name = nameNode.name;
@@ -740,6 +749,12 @@
   }
 
   @override
+  void visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    // TODO: implement visitLibraryAugmentationDirective
+    // super.visitLibraryAugmentationDirective(node);
+  }
+
+  @override
   void visitLibraryDirective(covariant LibraryDirectiveImpl node) {
     if (_isFirstLibraryDirective) {
       _isFirstLibraryDirective = false;
diff --git a/pkg/analyzer/lib/src/summary2/library_builder.dart b/pkg/analyzer/lib/src/summary2/library_builder.dart
index 9af3b1b..0ad9d076 100644
--- a/pkg/analyzer/lib/src/summary2/library_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/library_builder.dart
@@ -28,6 +28,14 @@
 import 'package:analyzer/src/summary2/types_builder.dart';
 import 'package:analyzer/src/util/performance/operation_performance.dart';
 
+class DefiningLinkingUnit extends LinkingUnit {
+  DefiningLinkingUnit({
+    required super.reference,
+    required super.node,
+    required super.element,
+  });
+}
+
 class ImplicitEnumNodes {
   final EnumElementImpl element;
   final ast.NamedTypeImpl valuesTypeNode;
@@ -133,8 +141,10 @@
   /// Build elements for declarations in the library units, add top-level
   /// declarations to the local scope, for combining into export scopes.
   void buildElements() {
-    element.exports2 = kind.exports.map(_buildExport).toList();
-    element.imports2 = kind.imports.map(_buildImport).toList();
+    _buildDirectives(
+      kind: kind,
+      element: element,
+    );
 
     for (var linkingUnit in units) {
       var elementBuilder = ElementBuilder(
@@ -142,7 +152,7 @@
         unitReference: linkingUnit.reference,
         unitElement: linkingUnit.element,
       );
-      if (linkingUnit.isDefiningUnit) {
+      if (linkingUnit is DefiningLinkingUnit) {
         elementBuilder.buildLibraryElementChildren(linkingUnit.node);
       }
       elementBuilder.buildDeclarationElements(linkingUnit.node);
@@ -347,7 +357,6 @@
 
     units.add(
       LinkingUnit(
-        isDefiningUnit: false,
         reference: unitReference,
         node: unitNode,
         element: unitElement,
@@ -406,6 +415,83 @@
     }
   }
 
+  AugmentationImportElementImpl _buildAugmentationImport(
+    LibraryOrAugmentationElementImpl augmentedElement,
+    ImportAugmentationDirectiveState state,
+  ) {
+    final DirectiveUri uri;
+    if (state is ImportAugmentationDirectiveWithFile) {
+      final importedAugmentation = state.importedAugmentation;
+      if (importedAugmentation != null) {
+        final importedFile = importedAugmentation.file;
+
+        final unitNode = importedFile.parse();
+        final unitElement = CompilationUnitElementImpl(
+          source: importedFile.source,
+          // TODO(scheglov) Remove this parameter.
+          librarySource: importedFile.source,
+          lineInfo: unitNode.lineInfo,
+        );
+        unitElement.setCodeRange(0, unitNode.length);
+
+        final unitReference =
+            reference.getChild('@augmentation').getChild(importedFile.uriStr);
+        _bindReference(unitReference, unitElement);
+
+        units.add(
+          DefiningLinkingUnit(
+            reference: unitReference,
+            node: unitNode,
+            element: unitElement,
+          ),
+        );
+
+        final augmentation = LibraryAugmentationElementImpl(
+          augmented: augmentedElement,
+          nameOffset: -1, // TODO(scheglov) fix it
+        );
+        augmentation.definingCompilationUnit = unitElement;
+
+        _buildDirectives(
+          kind: importedAugmentation,
+          element: augmentation,
+        );
+
+        uri = DirectiveUriWithAugmentationImpl(
+          relativeUriString: state.uri.relativeUriStr,
+          relativeUri: state.uri.relativeUri,
+          source: importedFile.source,
+          augmentation: augmentation,
+        );
+      } else {
+        uri = DirectiveUriWithSourceImpl(
+          relativeUriString: state.uri.relativeUriStr,
+          relativeUri: state.uri.relativeUri,
+          source: state.importedSource,
+        );
+      }
+    } else {
+      final selectedUri = state.uri;
+      if (selectedUri is file_state.DirectiveUriWithUri) {
+        uri = DirectiveUriWithRelativeUriImpl(
+          relativeUriString: selectedUri.relativeUriStr,
+          relativeUri: selectedUri.relativeUri,
+        );
+      } else if (selectedUri is file_state.DirectiveUriWithString) {
+        uri = DirectiveUriWithRelativeUriStringImpl(
+          relativeUriString: selectedUri.relativeUriStr,
+        );
+      } else {
+        uri = DirectiveUriImpl();
+      }
+    }
+
+    return AugmentationImportElementImpl(
+      importKeywordOffset: -1, // TODO(scheglov) fix it
+      uri: uri,
+    );
+  }
+
   List<NamespaceCombinator> _buildCombinators(
     List<UnlinkedCombinator> combinators2,
   ) {
@@ -422,6 +508,20 @@
     }).toList();
   }
 
+  /// Builds directive elements, for the library and recursively for its
+  /// augmentations.
+  void _buildDirectives({
+    required LibraryOrAugmentationFileKind kind,
+    required LibraryOrAugmentationElementImpl element,
+  }) {
+    element.exports2 = kind.exports.map(_buildExport).toList();
+    element.imports2 = kind.imports.map(_buildImport).toList();
+
+    element.augmentationImports = kind.augmentations.map((state) {
+      return _buildAugmentationImport(element, state);
+    }).toList();
+  }
+
   ExportElement2Impl _buildExport(ExportDirectiveState state) {
     final combinators = _buildCombinators(
       state.directive.combinators,
@@ -660,8 +760,7 @@
       _bindReference(unitReference, unitElement);
 
       linkingUnits.add(
-        LinkingUnit(
-          isDefiningUnit: true,
+        DefiningLinkingUnit(
           reference: unitReference,
           node: libraryUnitNode,
           element: unitElement,
@@ -695,7 +794,6 @@
 
           linkingUnits.add(
             LinkingUnit(
-              isDefiningUnit: false,
               reference: unitReference,
               node: partUnitNode,
               element: unitElement,
@@ -761,13 +859,11 @@
 }
 
 class LinkingUnit {
-  final bool isDefiningUnit;
   final Reference reference;
   final ast.CompilationUnitImpl node;
   final CompilationUnitElementImpl element;
 
   LinkingUnit({
-    required this.isDefiningUnit,
     required this.reference,
     required this.node,
     required this.element,
diff --git a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
index faac307..1dc9caa 100644
--- a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
@@ -35,6 +35,12 @@
   }
 
   @override
+  void visitAugmentationImportDirective(AugmentationImportDirective node) {
+    // TODO(scheglov) write test
+    node.metadata.accept(this);
+  }
+
+  @override
   void visitClassDeclaration(ClassDeclaration node) {
     node.metadata.accept(this);
     node.typeParameters?.accept(this);
@@ -171,6 +177,12 @@
   }
 
   @override
+  void visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    // TODO(scheglov) write test
+    node.metadata.accept(this);
+  }
+
+  @override
   void visitLibraryDirective(LibraryDirective node) {
     node.metadata.accept(this);
   }
diff --git a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
index 29bb1a8..2ad78f3 100644
--- a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
@@ -4118,7 +4118,6 @@
 
     // Not an augmentation anymore, but a library.
     // But `a.dart` still uses `b.dart` as an augmentation.
-    // TODO(scheglov) Any `augmentation_to_X` should change the signature.
     assertDriverStateString(testFile, r'''
 files
   /home/test/lib/a.dart
@@ -4130,10 +4129,10 @@
           library_2 dart:core synthetic
         augmentations
           notAugmentation file_1
-        cycle_0
+        cycle_2
           dependencies: dart:core
           libraries: library_0
-          apiSignature_0
+          apiSignature_1
       unlinkedKey: k00
   /home/test/lib/b.dart
     uri: package:test/b.dart
@@ -4142,10 +4141,10 @@
       kind: library_7
         imports
           library_2 dart:core synthetic
-        cycle_2
+        cycle_3
           dependencies: dart:core
           libraries: library_7
-          apiSignature_1
+          apiSignature_2
       referencingFiles: file_0
       unlinkedKey: k02
 libraryCycles
@@ -4165,10 +4164,10 @@
           library_2 dart:core synthetic
         augmentations
           notAugmentation file_1
-        cycle_3
+        cycle_4
           dependencies: dart:core
           libraries: library_8
-          apiSignature_0
+          apiSignature_1
       unlinkedKey: k00
   /home/test/lib/b.dart
     uri: package:test/b.dart
@@ -4177,10 +4176,10 @@
       kind: library_7
         imports
           library_2 dart:core synthetic
-        cycle_2
+        cycle_3
           dependencies: dart:core
           libraries: library_7
-          apiSignature_1
+          apiSignature_2
       referencingFiles: file_0
       unlinkedKey: k02
 libraryCycles
@@ -4259,7 +4258,7 @@
         cycle_2
           dependencies: dart:core
           libraries: library_0
-          apiSignature_0
+          apiSignature_1
       unlinkedKey: k00
   /home/test/lib/b.dart
     uri: package:test/b.dart
@@ -4291,7 +4290,7 @@
         cycle_3
           dependencies: dart:core
           libraries: library_8
-          apiSignature_0
+          apiSignature_1
       unlinkedKey: k00
   /home/test/lib/b.dart
     uri: package:test/b.dart
@@ -4329,7 +4328,7 @@
         cycle_4
           dependencies: dart:core
           libraries: library_9
-          apiSignature_1
+          apiSignature_2
       unlinkedKey: k03
   /home/test/lib/b.dart
     uri: package:test/b.dart
@@ -4409,7 +4408,7 @@
         cycle_2
           dependencies: dart:core
           libraries: library_0
-          apiSignature_0
+          apiSignature_1
       unlinkedKey: k00
   /home/test/lib/b.dart
     uri: package:test/b.dart
@@ -4439,7 +4438,7 @@
         cycle_3
           dependencies: dart:core
           libraries: library_8
-          apiSignature_0
+          apiSignature_1
       unlinkedKey: k00
   /home/test/lib/b.dart
     uri: package:test/b.dart
@@ -4474,7 +4473,7 @@
         cycle_4
           dependencies: dart:core
           libraries: library_9
-          apiSignature_1
+          apiSignature_2
       unlinkedKey: k03
   /home/test/lib/b.dart
     uri: package:test/b.dart
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index 0ca1f33..5be2704 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -155,20 +155,7 @@
         _writelnWithIndent('nameOffset: $nameOffset');
       }
 
-      _writeDocumentation(e);
-      _writeMetadata(e);
-
-      var imports = e.imports2
-          .where((import) => withSyntheticDartCoreImport || !import.isSynthetic)
-          .toList();
-      _writeElements('imports', imports, _writeImportElement);
-
-      _writeElements('exports', e.exports2, _writeExportElement);
-
-      _writelnWithIndent('definingUnit');
-      _withIndent(() {
-        _writeUnitElement(e.definingCompilationUnit);
-      });
+      _writeLibraryOrAugmentationElement(e);
 
       _writeElements('parts', e.parts2, _writePartElement);
 
@@ -261,6 +248,24 @@
     indent = savedIndent;
   }
 
+  void _writeAugmentationElement(LibraryAugmentationElement e) {
+    _writeLibraryOrAugmentationElement(e);
+  }
+
+  void _writeAugmentationImportElement(AugmentationImportElement e) {
+    final uri = e.uri;
+    _writeIndentedLine(() {
+      _writeDirectiveUri(e.uri);
+    });
+
+    _withIndent(() {
+      _writeMetadata(e);
+      if (uri is DirectiveUriWithAugmentation) {
+        _writeAugmentationElement(uri.augmentation);
+      }
+    });
+  }
+
   void _writeBodyModifiers(ExecutableElement e) {
     if (e.isAsynchronous) {
       expect(e.isSynchronous, isFalse);
@@ -432,7 +437,9 @@
   }
 
   void _writeDirectiveUri(DirectiveUri uri) {
-    if (uri is DirectiveUriWithLibraryImpl) {
+    if (uri is DirectiveUriWithAugmentationImpl) {
+      buffer.write('${uri.augmentation.source.uri}');
+    } else if (uri is DirectiveUriWithLibraryImpl) {
       buffer.write('${uri.library.source.uri}');
     } else if (uri is DirectiveUriWithUnit) {
       buffer.write('${uri.unit.source.uri}');
@@ -606,6 +613,26 @@
     buffer.writeln();
   }
 
+  void _writeLibraryOrAugmentationElement(LibraryOrAugmentationElement e) {
+    _writeDocumentation(e);
+    _writeMetadata(e);
+
+    var imports = e.imports2
+        .where((import) => withSyntheticDartCoreImport || !import.isSynthetic)
+        .toList();
+    _writeElements('imports', imports, _writeImportElement);
+
+    _writeElements('exports', e.exports2, _writeExportElement);
+
+    _writeElements('augmentationImports', e.augmentationImports,
+        _writeAugmentationImportElement);
+
+    _writelnWithIndent('definingUnit');
+    _withIndent(() {
+      _writeUnitElement(e.definingCompilationUnit);
+    });
+  }
+
   void _writelnWithIndent(String line) {
     buffer.write(indent);
     buffer.writeln(line);
diff --git a/pkg/analyzer/test/src/summary/elements_test.dart b/pkg/analyzer/test/src/summary/elements_test.dart
index 309f16f..9fd06aa 100644
--- a/pkg/analyzer/test/src/summary/elements_test.dart
+++ b/pkg/analyzer/test/src/summary/elements_test.dart
@@ -25366,6 +25366,126 @@
 ''');
   }
 
+  test_library_augmentationImports_augmentation() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+library augment 'test.dart';
+class A {}
+''');
+    final library = await buildLibrary(r'''
+import augment 'a.dart';
+class B {}
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/a.dart
+      definingUnit
+        classes
+          class A @35
+            constructors
+              synthetic @-1
+  definingUnit
+    classes
+      class B @31
+        constructors
+          synthetic @-1
+''');
+
+    final import_0 = library.augmentationImports[0];
+    final augmentation = import_0.importedAugmentation!;
+    expect(augmentation.enclosingElement, same(library));
+  }
+
+  test_library_augmentationImports_noRelativeUriStr() async {
+    final library = await buildLibrary(r'''
+import augment '${'foo'}.dart';
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    noRelativeUriString
+  definingUnit
+''');
+  }
+
+  test_library_augmentationImports_withRelativeUri_emptyUriSelf() async {
+    final library = await buildLibrary(r'''
+import augment '';
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    source 'package:test/test.dart'
+  definingUnit
+''');
+  }
+
+  test_library_augmentationImports_withRelativeUri_noSource() async {
+    final library = await buildLibrary(r'''
+import augment 'foo:bar';
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    relativeUri 'foo:bar'
+  definingUnit
+''');
+  }
+
+  test_library_augmentationImports_withRelativeUri_notAugmentation_library() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+library my.lib;
+''');
+    final library = await buildLibrary(r'''
+import augment 'a.dart';
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    source 'package:test/a.dart'
+  definingUnit
+''');
+  }
+
+  test_library_augmentationImports_withRelativeUri_notAugmentation_part() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+part of other.lib;
+''');
+    final library = await buildLibrary(r'''
+import augment 'a.dart';
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    source 'package:test/a.dart'
+  definingUnit
+''');
+  }
+
+  test_library_augmentationImports_withRelativeUri_notExists() async {
+    final library = await buildLibrary(r'''
+import augment 'a.dart';
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    source 'package:test/a.dart'
+  definingUnit
+''');
+  }
+
+  test_library_augmentationImports_withRelativeUriString() async {
+    final library = await buildLibrary(r'''
+import augment ':';
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    relativeUriString ':'
+  definingUnit
+''');
+  }
+
   test_library_documented_lines() async {
     var library = await buildLibrary('''
 /// aaa
diff --git a/runtime/lib/timeline.cc b/runtime/lib/timeline.cc
index 7deea5c..0b3816c 100644
--- a/runtime/lib/timeline.cc
+++ b/runtime/lib/timeline.cc
@@ -24,11 +24,15 @@
   return Bool::False().ptr();
 }
 
-DEFINE_NATIVE_ENTRY(Timeline_getNextTaskId, 0, 0) {
+DEFINE_NATIVE_ENTRY(Timeline_getNextAsyncId, 0, 0) {
 #if !defined(SUPPORT_TIMELINE)
   return Integer::New(0);
 #else
-  return Integer::New(thread->GetNextTaskId());
+  TimelineEventRecorder* recorder = Timeline::recorder();
+  if (recorder == NULL) {
+    return Integer::New(0);
+  }
+  return Integer::New(recorder->GetNextAsyncId());
 #endif
 }
 
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index dbbaa95..6e82679 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -153,7 +153,7 @@
   V(TypeError_throwNew, 4)                                                     \
   V(Stopwatch_now, 0)                                                          \
   V(Stopwatch_frequency, 0)                                                    \
-  V(Timeline_getNextTaskId, 0)                                                 \
+  V(Timeline_getNextAsyncId, 0)                                                \
   V(Timeline_getTraceClock, 0)                                                 \
   V(Timeline_isDartStreamEnabled, 0)                                           \
   V(Timeline_reportFlowEvent, 5)                                               \
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm.cc b/runtime/vm/compiler/asm_intrinsifier_arm.cc
index c061a93..5bd61d7 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm.cc
@@ -1900,23 +1900,6 @@
 #endif
 }
 
-void AsmIntrinsifier::Timeline_getNextTaskId(Assembler* assembler,
-                                             Label* normal_ir_body) {
-#if !defined(SUPPORT_TIMELINE)
-  __ LoadImmediate(R0, target::ToRawSmi(0));
-  __ Ret();
-#else
-  __ ldr(R1, Address(THR, target::Thread::next_task_id_offset()));
-  __ ldr(R2, Address(THR, target::Thread::next_task_id_offset() + 4));
-  __ SmiTag(R0, R1);  // Ignore loss of precision.
-  __ adds(R1, R1, Operand(1));
-  __ adcs(R2, R2, Operand(0));
-  __ str(R1, Address(THR, target::Thread::next_task_id_offset()));
-  __ str(R2, Address(THR, target::Thread::next_task_id_offset() + 4));
-  __ Ret();
-#endif
-}
-
 #undef __
 
 }  // namespace compiler
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm64.cc b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
index 33e850c..2cd0d6e 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
@@ -2146,20 +2146,6 @@
 #endif
 }
 
-void AsmIntrinsifier::Timeline_getNextTaskId(Assembler* assembler,
-                                             Label* normal_ir_body) {
-#if !defined(SUPPORT_TIMELINE)
-  __ LoadImmediate(R0, target::ToRawSmi(0));
-  __ ret();
-#else
-  __ ldr(R0, Address(THR, target::Thread::next_task_id_offset()));
-  __ add(R1, R0, Operand(1));
-  __ str(R1, Address(THR, target::Thread::next_task_id_offset()));
-  __ SmiTag(R0);  // Ignore loss of precision.
-  __ ret();
-#endif
-}
-
 #undef __
 
 }  // namespace compiler
diff --git a/runtime/vm/compiler/asm_intrinsifier_ia32.cc b/runtime/vm/compiler/asm_intrinsifier_ia32.cc
index bc39517..538ce05 100644
--- a/runtime/vm/compiler/asm_intrinsifier_ia32.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_ia32.cc
@@ -1937,24 +1937,6 @@
 #endif
 }
 
-void AsmIntrinsifier::Timeline_getNextTaskId(Assembler* assembler,
-                                             Label* normal_ir_body) {
-#if !defined(SUPPORT_TIMELINE)
-  __ LoadImmediate(EAX, target::ToRawSmi(0));
-  __ ret();
-#else
-  __ movl(EBX, Address(THR, target::Thread::next_task_id_offset()));
-  __ movl(ECX, Address(THR, target::Thread::next_task_id_offset() + 4));
-  __ movl(EAX, EBX);
-  __ SmiTag(EAX);  // Ignore loss of precision.
-  __ addl(EBX, Immediate(1));
-  __ adcl(ECX, Immediate(0));
-  __ movl(Address(THR, target::Thread::next_task_id_offset()), EBX);
-  __ movl(Address(THR, target::Thread::next_task_id_offset() + 4), ECX);
-  __ ret();
-#endif
-}
-
 #undef __
 
 }  // namespace compiler
diff --git a/runtime/vm/compiler/asm_intrinsifier_riscv.cc b/runtime/vm/compiler/asm_intrinsifier_riscv.cc
index e6bdde0..a1b94de 100644
--- a/runtime/vm/compiler/asm_intrinsifier_riscv.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_riscv.cc
@@ -2160,30 +2160,6 @@
 #endif
 }
 
-void AsmIntrinsifier::Timeline_getNextTaskId(Assembler* assembler,
-                                             Label* normal_ir_body) {
-#if !defined(SUPPORT_TIMELINE)
-  __ LoadImmediate(A0, target::ToRawSmi(0));
-  __ ret();
-#elif XLEN == 64
-  __ ld(A0, Address(THR, target::Thread::next_task_id_offset()));
-  __ addi(A1, A0, 1);
-  __ sd(A1, Address(THR, target::Thread::next_task_id_offset()));
-  __ SmiTag(A0);  // Ignore loss of precision.
-  __ ret();
-#else
-  __ lw(T0, Address(THR, target::Thread::next_task_id_offset()));
-  __ lw(T1, Address(THR, target::Thread::next_task_id_offset() + 4));
-  __ SmiTag(A0, T0);  // Ignore loss of precision.
-  __ addi(T2, T0, 1);
-  __ sltu(T3, T2, T0);  // Carry.
-  __ add(T1, T1, T3);
-  __ sw(T2, Address(THR, target::Thread::next_task_id_offset()));
-  __ sw(T1, Address(THR, target::Thread::next_task_id_offset() + 4));
-  __ ret();
-#endif
-}
-
 #undef __
 
 }  // namespace compiler
diff --git a/runtime/vm/compiler/asm_intrinsifier_x64.cc b/runtime/vm/compiler/asm_intrinsifier_x64.cc
index ad0d3a8..9ff337a 100644
--- a/runtime/vm/compiler/asm_intrinsifier_x64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_x64.cc
@@ -2034,21 +2034,6 @@
 #endif
 }
 
-void AsmIntrinsifier::Timeline_getNextTaskId(Assembler* assembler,
-                                             Label* normal_ir_body) {
-#if !defined(SUPPORT_TIMELINE)
-  __ xorq(RAX, RAX);  // Return Smi 0.
-  __ ret();
-#else
-  __ movq(RAX, Address(THR, target::Thread::next_task_id_offset()));
-  __ movq(RBX, RAX);
-  __ incq(RBX);
-  __ movq(Address(THR, target::Thread::next_task_id_offset()), RBX);
-  __ SmiTag(RAX);  // Ignore loss of precision.
-  __ ret();
-#endif
-}
-
 #undef __
 
 }  // namespace compiler
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index ef1b9a0..8af3c49 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -698,22 +698,14 @@
   return body;
 }
 
-Fragment StreamingFlowGraphBuilder::BuildEveryTimePrologue(
+Fragment StreamingFlowGraphBuilder::BuildRegularFunctionPrologue(
     const Function& dart_function,
     TokenPosition token_position,
-    intptr_t type_parameters_offset) {
+    LocalVariable* first_parameter) {
   Fragment F;
   F += CheckStackOverflowInPrologue(dart_function);
   F += DebugStepCheckInPrologue(dart_function, token_position);
   F += B->InitConstantParameters();
-  return F;
-}
-
-Fragment StreamingFlowGraphBuilder::BuildFirstTimePrologue(
-    const Function& dart_function,
-    LocalVariable* first_parameter,
-    intptr_t type_parameters_offset) {
-  Fragment F;
   F += SetupCapturedParameters(dart_function);
   F += ShortcutForUserDefinedEquals(dart_function, first_parameter);
   return F;
@@ -747,8 +739,7 @@
 UncheckedEntryPointStyle StreamingFlowGraphBuilder::ChooseEntryPointStyle(
     const Function& dart_function,
     const Fragment& implicit_type_checks,
-    const Fragment& first_time_prologue,
-    const Fragment& every_time_prologue,
+    const Fragment& regular_function_prologue,
     const Fragment& type_args_handling) {
   ASSERT(!dart_function.IsImplicitClosureFunction());
   if (!dart_function.MayHaveUncheckedEntryPoint() ||
@@ -761,17 +752,21 @@
   //
   // 1. There is a non-empty PrologueBuilder-prologue.
   //
-  // 2. There is a non-empty "first-time" prologue.
+  // 2. The regular function prologue has more than two instructions
+  //    (DebugStepCheck and CheckStackOverflow).
   //
-  // 3. The "every-time" prologue has more than two instructions (DebugStepCheck
-  //    and CheckStackOverflow).
-  //
-  // TODO(#34162): For regular closures we can often avoid the
-  // PrologueBuilder-prologue on non-dynamic invocations.
   if (!PrologueBuilder::HasEmptyPrologue(dart_function) ||
-      !type_args_handling.is_empty() || !first_time_prologue.is_empty() ||
-      !(every_time_prologue.entry == every_time_prologue.current ||
-        every_time_prologue.current->previous() == every_time_prologue.entry)) {
+      !type_args_handling.is_empty()) {
+    return UncheckedEntryPointStyle::kSharedWithVariable;
+  }
+  Instruction* instr = regular_function_prologue.entry;
+  if (instr != nullptr && instr->IsCheckStackOverflow()) {
+    instr = instr->next();
+  }
+  if (instr != nullptr && instr->IsDebugStepCheck()) {
+    instr = instr->next();
+  }
+  if (instr != nullptr) {
     return UncheckedEntryPointStyle::kSharedWithVariable;
   }
 
@@ -782,16 +777,12 @@
     bool is_constructor) {
   const Function& dart_function = parsed_function()->function();
 
-  intptr_t type_parameters_offset = 0;
   LocalVariable* first_parameter = nullptr;
   TokenPosition token_position = TokenPosition::kNoSource;
   {
     AlternativeReadingScope alt(&reader_);
     FunctionNodeHelper function_node_helper(this);
     function_node_helper.ReadUntilExcluding(
-        FunctionNodeHelper::kTypeParameters);
-    type_parameters_offset = ReaderOffset();
-    function_node_helper.ReadUntilExcluding(
         FunctionNodeHelper::kPositionalParameters);
     intptr_t list_length = ReadListLength();  // read number of positionals.
     if (list_length > 0) {
@@ -811,15 +802,8 @@
   BlockEntryInstr* instruction_cursor =
       flow_graph_builder_->BuildPrologue(normal_entry, &prologue_info);
 
-  // The 'every_time_prologue' runs first and is run when resuming from yield
-  // points.
-  const Fragment every_time_prologue = BuildEveryTimePrologue(
-      dart_function, token_position, type_parameters_offset);
-
-  // The 'first_time_prologue' run after 'every_time_prologue' and is *not* run
-  // when resuming from yield points.
-  const Fragment first_time_prologue = BuildFirstTimePrologue(
-      dart_function, first_parameter, type_parameters_offset);
+  const Fragment regular_prologue = BuildRegularFunctionPrologue(
+      dart_function, token_position, first_parameter);
 
   // TODO(#34162): We can remove the default type handling (and
   // shorten the prologue type handling sequence) for non-dynamic invocations of
@@ -847,30 +831,28 @@
       InitSuspendableFunction(dart_function) +
       BuildFunctionBody(dart_function, first_parameter, is_constructor);
 
-  auto extra_entry_point_style = ChooseEntryPointStyle(
-      dart_function, implicit_type_checks, first_time_prologue,
-      every_time_prologue, type_args_handling);
+  auto extra_entry_point_style =
+      ChooseEntryPointStyle(dart_function, implicit_type_checks,
+                            regular_prologue, type_args_handling);
 
   Fragment function(instruction_cursor);
   FunctionEntryInstr* extra_entry = nullptr;
   switch (extra_entry_point_style) {
     case UncheckedEntryPointStyle::kNone: {
-      function += every_time_prologue + first_time_prologue +
-                  type_args_handling + implicit_type_checks +
+      function += regular_prologue + type_args_handling + implicit_type_checks +
                   explicit_type_checks + body;
       break;
     }
     case UncheckedEntryPointStyle::kSeparate: {
       ASSERT(instruction_cursor == normal_entry);
-      ASSERT(first_time_prologue.is_empty());
       ASSERT(type_args_handling.is_empty());
 
-      const Fragment prologue_copy = BuildEveryTimePrologue(
-          dart_function, token_position, type_parameters_offset);
+      const Fragment prologue_copy = BuildRegularFunctionPrologue(
+          dart_function, token_position, first_parameter);
 
       extra_entry = B->BuildSeparateUncheckedEntryPoint(
           normal_entry,
-          /*normal_prologue=*/every_time_prologue + implicit_type_checks,
+          /*normal_prologue=*/regular_prologue + implicit_type_checks,
           /*extra_prologue=*/prologue_copy,
           /*shared_prologue=*/explicit_type_checks,
           /*body=*/body);
@@ -878,8 +860,7 @@
     }
     case UncheckedEntryPointStyle::kSharedWithVariable: {
       Fragment prologue(normal_entry, instruction_cursor);
-      prologue += every_time_prologue;
-      prologue += first_time_prologue;
+      prologue += regular_prologue;
       prologue += type_args_handling;
       prologue += explicit_type_checks;
       extra_entry = B->BuildSharedUncheckedEntryPoint(
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
index bf95ac2..6daf672 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
@@ -82,16 +82,12 @@
                              bool constructor);
 
   // Pieces of the prologue. They are all agnostic to the current Kernel offset.
-  Fragment BuildEveryTimePrologue(const Function& dart_function,
-                                  TokenPosition token_position,
-                                  intptr_t type_parameters_offset);
-  Fragment BuildFirstTimePrologue(const Function& dart_function,
-                                  LocalVariable* first_parameter,
-                                  intptr_t type_parameters_offset);
+  Fragment BuildRegularFunctionPrologue(const Function& dart_function,
+                                        TokenPosition token_position,
+                                        LocalVariable* first_parameter);
   Fragment ClearRawParameters(const Function& dart_function);
   Fragment DebugStepCheckInPrologue(const Function& dart_function,
                                     TokenPosition position);
-  Fragment SetAsyncStackTrace(const Function& dart_function);
   Fragment CheckStackOverflowInPrologue(const Function& dart_function);
   Fragment SetupCapturedParameters(const Function& dart_function);
   Fragment InitSuspendableFunction(const Function& dart_function);
@@ -102,8 +98,7 @@
   static UncheckedEntryPointStyle ChooseEntryPointStyle(
       const Function& dart_function,
       const Fragment& implicit_type_checks,
-      const Fragment& first_time_prologue,
-      const Fragment& every_time_prologue,
+      const Fragment& regular_function_prologue,
       const Fragment& type_args_handling);
 
   void loop_depth_inc();
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index 8673b84..b6e849e 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -148,7 +148,6 @@
       helper_.ReadUntilFunctionNode();
       function_node_helper.ReadUntilExcluding(
           FunctionNodeHelper::kPositionalParameters);
-      current_function_async_marker_ = function_node_helper.async_marker_;
       // NOTE: FunctionNode is read further below the if.
 
       intptr_t pos = 0;
@@ -368,7 +367,6 @@
       scope_->InsertParameterAt(pos++, parsed_function_->receiver_var());
 
       // Create all positional and named parameters.
-      current_function_async_marker_ = FunctionNodeHelper::kSync;
       AddPositionalAndNamedParameters(
           pos, kTypeCheckEverythingNotCheckedInNonDynamicallyInvokedMethod,
           attrs);
@@ -393,7 +391,6 @@
       // Callbacks and calls with handles need try/catch variables.
       if ((function.FfiCallbackTarget() != Function::null() ||
            function.FfiCSignatureContainsHandles())) {
-        current_function_async_marker_ = FunctionNodeHelper::kSync;
         ++depth_.try_;
         AddTryVariables();
         --depth_.try_;
@@ -1462,13 +1459,10 @@
   function_node_helper.ReadUntilExcluding(FunctionNodeHelper::kTypeParameters);
 
   LocalScope* saved_function_scope = current_function_scope_;
-  FunctionNodeHelper::AsyncMarker saved_function_async_marker =
-      current_function_async_marker_;
   DepthState saved_depth_state = depth_;
   depth_ = DepthState(depth_.function_ + 1);
   EnterScope(parent_kernel_offset);
   current_function_scope_ = scope_;
-  current_function_async_marker_ = function_node_helper.async_marker_;
   if (depth_.function_ == 1) {
     FunctionScope function_scope = {offset, scope_};
     result_->function_scopes.Add(function_scope);
@@ -1516,7 +1510,6 @@
   ExitScope(function_node_helper.position_, function_node_helper.end_position_);
   depth_ = saved_depth_state;
   current_function_scope_ = saved_function_scope;
-  current_function_async_marker_ = saved_function_async_marker;
 }
 
 void ScopeBuilder::EnterScope(intptr_t kernel_offset) {
diff --git a/runtime/vm/compiler/frontend/scope_builder.h b/runtime/vm/compiler/frontend/scope_builder.h
index 9805939..ef1a985 100644
--- a/runtime/vm/compiler/frontend/scope_builder.h
+++ b/runtime/vm/compiler/frontend/scope_builder.h
@@ -154,7 +154,6 @@
   TranslationHelper translation_helper_;
   Zone* zone_;
 
-  FunctionNodeHelper::AsyncMarker current_function_async_marker_;
   LocalScope* current_function_scope_;
   LocalScope* scope_;
   DepthState depth_;
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index b5fa0e5..8b6678d 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -97,9 +97,9 @@
     0xc40903ac)                                                                \
   V(_SuspendState, _clone, SuspendState_clone, 0xae1a40a0)                     \
   V(_SuspendState, _createAsyncCallbacks, SuspendState_createAsyncCallbacks,   \
-    0x68be1bf3)                                                                \
+    0x967521b1)                                                                \
   V(_SuspendState, _createAsyncStarCallback,                                   \
-    SuspendState_createAsyncStarCallback, 0xfa7537e4)                          \
+    SuspendState_createAsyncStarCallback, 0xa50f923c)                          \
   V(_SuspendState, _resume, SuspendState_resume, 0x5d7a8489)                   \
   V(_IntegerImplementation, toDouble, IntegerToDouble, 0x97728b46)             \
   V(_Double, _add, DoubleAdd, 0xea666327)                                      \
@@ -437,7 +437,6 @@
   V(::, _getDefaultTag, UserTag_defaultTag, 0x6c19c8a5)                        \
   V(::, _getCurrentTag, Profiler_getCurrentTag, 0x70ead08e)                    \
   V(::, _isDartStreamEnabled, Timeline_isDartStreamEnabled, 0xc97aafb3)        \
-  V(::, _getNextTaskId, Timeline_getNextTaskId, 0x5b2b0b0b)                    \
 
 #define INTERNAL_LIB_INTRINSIC_LIST(V)                                         \
   V(::, allocateOneByteString, AllocateOneByteString, 0x9e7745d5)              \
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index f30f579..0d77869 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -1249,7 +1249,6 @@
   THREAD_XMM_CONSTANT_LIST(DECLARE_CONSTANT_OFFSET_GETTER)
 #undef DECLARE_CONSTANT_OFFSET_GETTER
 
-  static word next_task_id_offset();
   static word random_offset();
 
   static word suspend_state_init_async_entry_point_offset();
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 098de96..fd7de86 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -320,13 +320,13 @@
     Thread_call_to_runtime_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 904;
+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 = 872;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 908;
+    Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
@@ -370,7 +370,7 @@
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
     864;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 912;
+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
@@ -480,11 +480,10 @@
 static constexpr dart::compiler::target::word Thread_callback_code_offset = 856;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 860;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 880;
-static constexpr dart::compiler::target::word Thread_random_offset = 888;
+static constexpr dart::compiler::target::word Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 348;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 896;
+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 =
@@ -983,13 +982,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1784;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1776;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1744;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1792;
+    Thread_service_extension_stream_offset = 1784;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -1034,7 +1033,7 @@
     1728;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1800;
+    1792;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -1145,11 +1144,10 @@
     1712;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1720;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1752;
-static constexpr dart::compiler::target::word Thread_random_offset = 1760;
+static constexpr dart::compiler::target::word Thread_random_offset = 1752;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1768;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1760;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -1647,13 +1645,13 @@
     Thread_call_to_runtime_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 872;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 864;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 840;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 876;
+    Thread_service_extension_stream_offset = 868;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
@@ -1697,7 +1695,7 @@
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
     832;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 880;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 872;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -1807,11 +1805,10 @@
 static constexpr dart::compiler::target::word Thread_callback_code_offset = 824;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 828;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 848;
-static constexpr dart::compiler::target::word Thread_random_offset = 856;
+static constexpr dart::compiler::target::word Thread_random_offset = 848;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 348;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 864;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 856;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2307,13 +2304,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1840;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1808;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1856;
+    Thread_service_extension_stream_offset = 1848;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -2358,7 +2355,7 @@
     1792;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1864;
+    1856;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -2469,11 +2466,10 @@
     1776;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1784;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1816;
-static constexpr dart::compiler::target::word Thread_random_offset = 1824;
+static constexpr dart::compiler::target::word Thread_random_offset = 1816;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1832;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1824;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2974,13 +2970,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1784;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1776;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1744;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1792;
+    Thread_service_extension_stream_offset = 1784;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -3025,7 +3021,7 @@
     1728;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1800;
+    1792;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -3136,11 +3132,10 @@
     1712;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1720;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1752;
-static constexpr dart::compiler::target::word Thread_random_offset = 1760;
+static constexpr dart::compiler::target::word Thread_random_offset = 1752;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1768;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1760;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3640,13 +3635,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1840;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1808;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1856;
+    Thread_service_extension_stream_offset = 1848;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -3691,7 +3686,7 @@
     1792;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1864;
+    1856;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -3802,11 +3797,10 @@
     1776;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1784;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1816;
-static constexpr dart::compiler::target::word Thread_random_offset = 1824;
+static constexpr dart::compiler::target::word Thread_random_offset = 1816;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1832;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1824;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -4305,13 +4299,13 @@
     Thread_call_to_runtime_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 944;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 936;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 912;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 948;
+    Thread_service_extension_stream_offset = 940;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
@@ -4355,7 +4349,7 @@
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
     904;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 952;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 944;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -4465,11 +4459,10 @@
 static constexpr dart::compiler::target::word Thread_callback_code_offset = 896;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 900;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 920;
-static constexpr dart::compiler::target::word Thread_random_offset = 928;
+static constexpr dart::compiler::target::word Thread_random_offset = 920;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 348;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 936;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 928;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -4970,13 +4963,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1840;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1832;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1800;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1848;
+    Thread_service_extension_stream_offset = 1840;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -5021,7 +5014,7 @@
     1784;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1856;
+    1848;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -5132,11 +5125,10 @@
     1768;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1776;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1808;
-static constexpr dart::compiler::target::word Thread_random_offset = 1816;
+static constexpr dart::compiler::target::word Thread_random_offset = 1808;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1824;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1816;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -5629,13 +5621,13 @@
     Thread_call_to_runtime_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 904;
+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 = 872;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 908;
+    Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
@@ -5679,7 +5671,7 @@
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
     864;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 912;
+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
@@ -5789,11 +5781,10 @@
 static constexpr dart::compiler::target::word Thread_callback_code_offset = 856;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 860;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 880;
-static constexpr dart::compiler::target::word Thread_random_offset = 888;
+static constexpr dart::compiler::target::word Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 348;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 896;
+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 =
@@ -6284,13 +6275,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1784;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1776;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1744;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1792;
+    Thread_service_extension_stream_offset = 1784;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -6335,7 +6326,7 @@
     1728;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1800;
+    1792;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -6446,11 +6437,10 @@
     1712;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1720;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1752;
-static constexpr dart::compiler::target::word Thread_random_offset = 1760;
+static constexpr dart::compiler::target::word Thread_random_offset = 1752;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1768;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1760;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -6940,13 +6930,13 @@
     Thread_call_to_runtime_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 872;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 864;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 840;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 876;
+    Thread_service_extension_stream_offset = 868;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
@@ -6990,7 +6980,7 @@
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
     832;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 880;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 872;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -7100,11 +7090,10 @@
 static constexpr dart::compiler::target::word Thread_callback_code_offset = 824;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 828;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 848;
-static constexpr dart::compiler::target::word Thread_random_offset = 856;
+static constexpr dart::compiler::target::word Thread_random_offset = 848;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 348;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 864;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 856;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7592,13 +7581,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1840;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1808;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1856;
+    Thread_service_extension_stream_offset = 1848;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -7643,7 +7632,7 @@
     1792;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1864;
+    1856;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -7754,11 +7743,10 @@
     1776;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1784;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1816;
-static constexpr dart::compiler::target::word Thread_random_offset = 1824;
+static constexpr dart::compiler::target::word Thread_random_offset = 1816;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1832;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1824;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8251,13 +8239,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1784;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1776;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1744;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1792;
+    Thread_service_extension_stream_offset = 1784;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -8302,7 +8290,7 @@
     1728;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1800;
+    1792;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -8413,11 +8401,10 @@
     1712;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1720;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1752;
-static constexpr dart::compiler::target::word Thread_random_offset = 1760;
+static constexpr dart::compiler::target::word Thread_random_offset = 1752;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1768;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1760;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8909,13 +8896,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1840;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1808;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1856;
+    Thread_service_extension_stream_offset = 1848;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -8960,7 +8947,7 @@
     1792;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1864;
+    1856;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -9071,11 +9058,10 @@
     1776;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1784;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1816;
-static constexpr dart::compiler::target::word Thread_random_offset = 1824;
+static constexpr dart::compiler::target::word Thread_random_offset = 1816;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1832;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1824;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -9566,13 +9552,13 @@
     Thread_call_to_runtime_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 944;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 936;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 912;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 948;
+    Thread_service_extension_stream_offset = 940;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
@@ -9616,7 +9602,7 @@
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
     904;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 952;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 944;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -9726,11 +9712,10 @@
 static constexpr dart::compiler::target::word Thread_callback_code_offset = 896;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 900;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 920;
-static constexpr dart::compiler::target::word Thread_random_offset = 928;
+static constexpr dart::compiler::target::word Thread_random_offset = 920;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 348;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 936;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 928;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -10223,13 +10208,13 @@
     Thread_call_to_runtime_entry_point_offset = 568;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1840;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1832;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
     Thread_double_truncate_round_supported_offset = 1800;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1848;
+    Thread_service_extension_stream_offset = 1840;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
@@ -10274,7 +10259,7 @@
     1784;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1856;
+    1848;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -10385,11 +10370,10 @@
     1768;
 static constexpr dart::compiler::target::word
     Thread_callback_stack_return_offset = 1776;
-static constexpr dart::compiler::target::word Thread_next_task_id_offset = 1808;
-static constexpr dart::compiler::target::word Thread_random_offset = 1816;
+static constexpr dart::compiler::target::word Thread_random_offset = 1808;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 672;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1824;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1816;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -10920,13 +10904,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 =
-    904;
+    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 = 872;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 908;
+    AOT_Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10972,7 +10956,7 @@
     AOT_Thread_exit_through_ffi_offset = 864;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    912;
+    904;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -11089,13 +11073,11 @@
     856;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 860;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    880;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 888;
+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 = 348;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    896;
+    888;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -11656,13 +11638,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 =
-    1784;
+    1776;
 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 = 1744;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1792;
+    AOT_Thread_service_extension_stream_offset = 1784;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -11708,7 +11690,7 @@
     AOT_Thread_exit_through_ffi_offset = 1728;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1800;
+    1792;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -11826,13 +11808,11 @@
     1712;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1720;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1752;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1760;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1752;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1768;
+    1760;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -12398,13 +12378,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 =
-    1848;
+    1840;
 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 = 1808;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1856;
+    AOT_Thread_service_extension_stream_offset = 1848;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -12450,7 +12430,7 @@
     AOT_Thread_exit_through_ffi_offset = 1792;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1864;
+    1856;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -12568,13 +12548,11 @@
     1776;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1784;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1816;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1816;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1832;
+    1824;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -13137,13 +13115,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 =
-    1784;
+    1776;
 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 = 1744;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1792;
+    AOT_Thread_service_extension_stream_offset = 1784;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -13189,7 +13167,7 @@
     AOT_Thread_exit_through_ffi_offset = 1728;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1800;
+    1792;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -13307,13 +13285,11 @@
     1712;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1720;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1752;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1760;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1752;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1768;
+    1760;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -13875,13 +13851,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 =
-    1848;
+    1840;
 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 = 1808;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1856;
+    AOT_Thread_service_extension_stream_offset = 1848;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -13927,7 +13903,7 @@
     AOT_Thread_exit_through_ffi_offset = 1792;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1864;
+    1856;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -14045,13 +14021,11 @@
     1776;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1784;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1816;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1816;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1832;
+    1824;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -14614,13 +14588,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 =
-    944;
+    936;
 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 = 912;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 948;
+    AOT_Thread_service_extension_stream_offset = 940;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -14666,7 +14640,7 @@
     AOT_Thread_exit_through_ffi_offset = 904;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    952;
+    944;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -14783,13 +14757,11 @@
     896;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 900;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    920;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 928;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 920;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 348;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    936;
+    928;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -15352,13 +15324,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 =
-    1840;
+    1832;
 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 = 1800;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1848;
+    AOT_Thread_service_extension_stream_offset = 1840;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -15404,7 +15376,7 @@
     AOT_Thread_exit_through_ffi_offset = 1784;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1856;
+    1848;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -15522,13 +15494,11 @@
     1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1776;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1808;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1816;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1808;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1824;
+    1816;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -16084,13 +16054,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 =
-    904;
+    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 = 872;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 908;
+    AOT_Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -16136,7 +16106,7 @@
     AOT_Thread_exit_through_ffi_offset = 864;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    912;
+    904;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -16253,13 +16223,11 @@
     856;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 860;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    880;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 888;
+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 = 348;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    896;
+    888;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -16811,13 +16779,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 =
-    1784;
+    1776;
 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 = 1744;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1792;
+    AOT_Thread_service_extension_stream_offset = 1784;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -16863,7 +16831,7 @@
     AOT_Thread_exit_through_ffi_offset = 1728;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1800;
+    1792;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -16981,13 +16949,11 @@
     1712;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1720;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1752;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1760;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1752;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1768;
+    1760;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -17544,13 +17510,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 =
-    1848;
+    1840;
 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 = 1808;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1856;
+    AOT_Thread_service_extension_stream_offset = 1848;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -17596,7 +17562,7 @@
     AOT_Thread_exit_through_ffi_offset = 1792;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1864;
+    1856;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -17714,13 +17680,11 @@
     1776;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1784;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1816;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1816;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1832;
+    1824;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -18274,13 +18238,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 =
-    1784;
+    1776;
 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 = 1744;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1792;
+    AOT_Thread_service_extension_stream_offset = 1784;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -18326,7 +18290,7 @@
     AOT_Thread_exit_through_ffi_offset = 1728;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1800;
+    1792;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -18444,13 +18408,11 @@
     1712;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1720;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1752;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1760;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1752;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1768;
+    1760;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -19003,13 +18965,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 =
-    1848;
+    1840;
 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 = 1808;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1856;
+    AOT_Thread_service_extension_stream_offset = 1848;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -19055,7 +19017,7 @@
     AOT_Thread_exit_through_ffi_offset = 1792;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1864;
+    1856;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -19173,13 +19135,11 @@
     1776;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1784;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1816;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1816;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1832;
+    1824;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -19733,13 +19693,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 =
-    944;
+    936;
 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 = 912;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 948;
+    AOT_Thread_service_extension_stream_offset = 940;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     336;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -19785,7 +19745,7 @@
     AOT_Thread_exit_through_ffi_offset = 904;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    952;
+    944;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -19902,13 +19862,11 @@
     896;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 900;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    920;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 928;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 920;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 348;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    936;
+    928;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -20462,13 +20420,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 =
-    1840;
+    1832;
 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 = 1800;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1848;
+    AOT_Thread_service_extension_stream_offset = 1840;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     648;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -20514,7 +20472,7 @@
     AOT_Thread_exit_through_ffi_offset = 1784;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1856;
+    1848;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -20632,13 +20590,11 @@
     1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_callback_stack_return_offset = 1776;
-static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset =
-    1808;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1816;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1808;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1824;
+    1816;
 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 b651415..e1cd318 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -318,7 +318,6 @@
   FIELD(Thread, heap_base_offset)                                              \
   FIELD(Thread, callback_code_offset)                                          \
   FIELD(Thread, callback_stack_return_offset)                                  \
-  FIELD(Thread, next_task_id_offset)                                           \
   FIELD(Thread, random_offset)                                                 \
   FIELD(Thread, jump_to_frame_entry_point_offset)                              \
   FIELD(Thread, tsan_utils_offset)                                             \
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index a12f853..9d66e4d 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -307,7 +307,6 @@
 #endif
 
   OSThread::Init();
-  Random::Init();
   Zone::Init();
 #if defined(SUPPORT_TIMELINE)
   Timeline::Init();
@@ -780,7 +779,6 @@
   Timeline::Cleanup();
 #endif
   Zone::Cleanup();
-  Random::Cleanup();
   // Delete the current thread's TLS and set it's TLS to null.
   // If it is the last thread then the destructor would call
   // OSThread::Cleanup.
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 368fab3..32954d6 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -6361,10 +6361,10 @@
   if (event != NULL) {
     switch (type) {
       case Dart_Timeline_Event_Begin:
-        event->Begin(label, timestamp0, timestamp1_or_async_id);
+        event->Begin(label, timestamp0);
         break;
       case Dart_Timeline_Event_End:
-        event->End(label, timestamp0, timestamp1_or_async_id);
+        event->End(label, timestamp0);
         break;
       case Dart_Timeline_Event_Instant:
         event->Instant(label, timestamp0);
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index e2259d3..ac54b5f 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -306,7 +306,7 @@
       pc_desc_(PcDescriptors::ZoneHandle()) {
   // Extract the function and the code from the asynchronous activation.
   function_ = async_activation.function();
-  if (caller_closure_finder->IsCompactAsyncCallback(function_)) {
+  if (caller_closure_finder->IsAsyncCallback(function_)) {
     const auto& suspend_state = SuspendState::Handle(
         caller_closure_finder->GetSuspendStateFromAsyncCallback(
             async_activation));
@@ -2944,16 +2944,6 @@
   return bpt_location->AddPerClosure(this, closure, for_over_await);
 }
 
-Breakpoint* Debugger::SetBreakpointAtAsyncOp(const Function& async_op) {
-  const Script& script = Script::Handle(async_op.script());
-  BreakpointLocation* bpt_location =
-      SetBreakpoint(script, async_op.token_pos(), async_op.end_token_pos(), -1,
-                    -1 /* no line/col */, async_op);
-  auto bpt = bpt_location->AddSingleShot(this);
-  bpt->set_is_synthetic_async(true);
-  return bpt;
-}
-
 Breakpoint* Debugger::BreakpointAtActivation(const Instance& closure) {
   if (!closure.IsClosure()) {
     return NULL;
@@ -4422,7 +4412,7 @@
 void Debugger::AsyncStepInto(const Closure& async_op) {
   Zone* zone = Thread::Current()->zone();
   CallerClosureFinder caller_closure_finder(zone);
-  if (caller_closure_finder.IsCompactAsyncCallback(
+  if (caller_closure_finder.IsAsyncCallback(
           Function::Handle(zone, async_op.function()))) {
     const auto& suspend_state = SuspendState::Handle(
         zone, caller_closure_finder.GetSuspendStateFromAsyncCallback(async_op));
diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h
index 625d148..f3c461e 100644
--- a/runtime/vm/debugger.h
+++ b/runtime/vm/debugger.h
@@ -719,10 +719,6 @@
                                      intptr_t line_number,
                                      intptr_t column_number);
 
-  // Sets synthetic breakpoint at async_op to step over the synthetic part of
-  // the stack trace.
-  Breakpoint* SetBreakpointAtAsyncOp(const Function& async_op);
-
   BreakpointLocation* BreakpointLocationAtLineCol(const String& script_url,
                                                   intptr_t line_number,
                                                   intptr_t column_number);
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 2c34da3..a3c025d 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -6996,13 +6996,6 @@
   static const intptr_t kBytesPerElement = kCompressedWordSize;
   static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
 
-  static const intptr_t kAwaitJumpVarIndex = 0;
-  static const intptr_t kAsyncFutureIndex = 1;
-  static const intptr_t kControllerIndex = 1;
-  // Expected context index of chained futures in recognized async functions.
-  // These are used to unwind async stacks.
-  static const intptr_t kIsSyncIndex = 2;
-
   struct ArrayTraits {
     static intptr_t elements_start_offset() { return sizeof(UntaggedContext); }
     static constexpr intptr_t kElementSize = kBytesPerElement;
diff --git a/runtime/vm/random.cc b/runtime/vm/random.cc
index e14ab64..2cc2335 100644
--- a/runtime/vm/random.cc
+++ b/runtime/vm/random.cc
@@ -75,26 +75,4 @@
   return static_cast<uint32_t>(NextState() & MASK_32);
 }
 
-static Random* global_random = nullptr;
-static Mutex* global_random_mutex = nullptr;
-
-void Random::Init() {
-  ASSERT(global_random_mutex == nullptr);
-  global_random_mutex = new Mutex(NOT_IN_PRODUCT("global_random_mutex"));
-  ASSERT(global_random == nullptr);
-  global_random = new Random();
-}
-
-void Random::Cleanup() {
-  delete global_random_mutex;
-  global_random_mutex = nullptr;
-  delete global_random;
-  global_random = nullptr;
-}
-
-uint64_t Random::GlobalNextUInt64() {
-  MutexLocker locker(global_random_mutex);
-  return global_random->NextUInt64();
-}
-
 }  // namespace dart
diff --git a/runtime/vm/random.h b/runtime/vm/random.h
index 077089b..4af724b 100644
--- a/runtime/vm/random.h
+++ b/runtime/vm/random.h
@@ -28,10 +28,6 @@
            static_cast<uint64_t>(NextUInt32());
   }
 
-  static uint64_t GlobalNextUInt64();
-  static void Init();
-  static void Cleanup();
-
  private:
   uint64_t NextState();
   void Initialize(uint64_t seed);
diff --git a/runtime/vm/stack_trace.cc b/runtime/vm/stack_trace.cc
index 8e43ef4..8562cac 100644
--- a/runtime/vm/stack_trace.cc
+++ b/runtime/vm/stack_trace.cc
@@ -133,13 +133,6 @@
   return GetCallerInFutureListener(listener);
 }
 
-ClosurePtr CallerClosureFinder::FindCallerInAsyncGenClosure(
-    const Context& receiver_context) {
-  // Get the async* _AsyncStarStreamController.
-  context_entry_ = receiver_context.At(Context::kControllerIndex);
-  return FindCallerInAsyncStarStreamController(context_entry_);
-}
-
 ClosurePtr CallerClosureFinder::FindCallerInAsyncStarStreamController(
     const Object& async_star_stream_controller) {
   ASSERT(async_star_stream_controller.IsInstance());
@@ -246,7 +239,7 @@
   }
 }
 
-bool CallerClosureFinder::IsCompactAsyncCallback(const Function& function) {
+bool CallerClosureFinder::IsAsyncCallback(const Function& function) {
   parent_function_ = function.parent_function();
   auto kind = parent_function_.recognized_kind();
   return (kind == MethodRecognizer::kSuspendState_createAsyncCallbacks) ||
@@ -255,7 +248,7 @@
 
 SuspendStatePtr CallerClosureFinder::GetSuspendStateFromAsyncCallback(
     const Closure& closure) {
-  ASSERT(IsCompactAsyncCallback(Function::Handle(closure.function())));
+  ASSERT(IsAsyncCallback(Function::Handle(closure.function())));
   // Async/async* handler only captures the receiver (SuspendState).
   receiver_context_ = closure.context();
   RELEASE_ASSERT(receiver_context_.num_variables() == 1);
@@ -266,7 +259,7 @@
   receiver_function_ = receiver_closure.function();
   receiver_context_ = receiver_closure.context();
 
-  if (IsCompactAsyncCallback(receiver_function_)) {
+  if (IsAsyncCallback(receiver_function_)) {
     suspend_state_ = GetSuspendStateFromAsyncCallback(receiver_closure);
     return FindCallerFromSuspendState(suspend_state_);
   }
@@ -302,12 +295,6 @@
   return Closure::null();
 }
 
-ObjectPtr CallerClosureFinder::GetAsyncFuture(const Closure& receiver_closure) {
-  // Closure -> Context -> _Future.
-  receiver_context_ = receiver_closure.context();
-  return receiver_context_.At(Context::kAsyncFutureIndex);
-}
-
 ObjectPtr CallerClosureFinder::GetFutureFutureListener(const Object& future) {
   ASSERT(future.GetClassId() == future_impl_class.id());
   auto& listener = Object::Handle(
@@ -462,7 +449,7 @@
     if (function.IsNull()) {
       continue;
     }
-    if (caller_closure_finder->IsCompactAsyncCallback(function)) {
+    if (caller_closure_finder->IsAsyncCallback(function)) {
       suspend_state =
           caller_closure_finder->GetSuspendStateFromAsyncCallback(closure);
       const uword pc = suspend_state.pc();
diff --git a/runtime/vm/stack_trace.h b/runtime/vm/stack_trace.h
index 44e05c8..6242f72 100644
--- a/runtime/vm/stack_trace.h
+++ b/runtime/vm/stack_trace.h
@@ -27,10 +27,6 @@
   // Returns closure found either via the `result` Future, or the `callback`.
   ClosurePtr GetCallerInFutureListener(const Object& future_listener);
 
-  // Find caller closure from an async* function receiver context.
-  // 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.
@@ -47,15 +43,12 @@
 
   // Returns true if given closure function is a Future callback
   // corresponding to an async/async* function or async* body callback.
-  bool IsCompactAsyncCallback(const Function& function);
+  bool IsAsyncCallback(const Function& 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.
-  ObjectPtr GetAsyncFuture(const Closure& receiver_closure);
-
   // Get sdk/lib/async/future_impl.dart:_FutureListener.state.
   intptr_t GetFutureListenerState(const Object& future_listener);
 
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 7b5bd6a..8dbc6ba7 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -235,7 +235,6 @@
   V(SpaceOfSpace, " of ")                                                      \
   V(SpaceWhereNewLine, " where\n")                                             \
   V(StackOverflowError, "StackOverflowError")                                  \
-  V(StackTraceParameter, ":stack_trace")                                       \
   V(Stream, "Stream")                                                          \
   V(StringBase, "_StringBase")                                                 \
   V(Struct, "Struct")                                                          \
@@ -436,7 +435,6 @@
   V(_returnAsync, "_returnAsync")                                              \
   V(_returnAsyncNotFuture, "_returnAsyncNotFuture")                            \
   V(_returnAsyncStar, "_returnAsyncStar")                                      \
-  V(_returnSyncStar, "_returnSyncStar")                                        \
   V(_runExtension, "_runExtension")                                            \
   V(_runPendingImmediateCallback, "_runPendingImmediateCallback")              \
   V(_scanFlags, "_scanFlags")                                                  \
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc
index 1bc5236..9689781 100644
--- a/runtime/vm/thread.cc
+++ b/runtime/vm/thread.cc
@@ -143,12 +143,6 @@
   if (!is_vm_isolate) {
     InitVMConstants();
   }
-
-#if defined(DART_HOST_OS_FUCHSIA)
-  next_task_id_ = trace_generate_nonce();
-#else
-  next_task_id_ = Random::GlobalNextUInt64();
-#endif
 }
 
 static const double double_nan_constant = NAN;
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index bbda502..df80a86 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -1094,10 +1094,6 @@
 
   void InitVMConstants();
 
-  int64_t GetNextTaskId() { return next_task_id_++; }
-  static intptr_t next_task_id_offset() {
-    return OFFSET_OF(Thread, next_task_id_);
-  }
   Random* random() { return &thread_random_; }
   static intptr_t random_offset() { return OFFSET_OF(Thread, thread_random_); }
 
@@ -1211,7 +1207,6 @@
   uword exit_through_ffi_ = 0;
   ApiLocalScope* api_top_scope_;
   uint8_t double_truncate_round_supported_;
-  ALIGN8 int64_t next_task_id_;
   ALIGN8 Random thread_random_;
 
   TsanUtils* tsan_utils_ = nullptr;
diff --git a/runtime/vm/timeline.cc b/runtime/vm/timeline.cc
index 90b0a23..086b86b 100644
--- a/runtime/vm/timeline.cc
+++ b/runtime/vm/timeline.cc
@@ -498,25 +498,19 @@
 }
 
 void TimelineEvent::Begin(const char* label,
-                          int64_t id,
                           int64_t micros,
                           int64_t thread_micros) {
   Init(kBegin, label);
   set_timestamp0(micros);
   set_thread_timestamp0(thread_micros);
-  // Overload timestamp1_ with the async_id.
-  set_timestamp1(id);
 }
 
 void TimelineEvent::End(const char* label,
-                        int64_t id,
                         int64_t micros,
                         int64_t thread_micros) {
   Init(kEnd, label);
   set_timestamp0(micros);
   set_thread_timestamp0(thread_micros);
-  // Overload timestamp1_ with the async_id.
-  set_timestamp1(id);
 }
 
 void TimelineEvent::Counter(const char* label, int64_t micros) {
@@ -661,31 +655,31 @@
     } break;
     case kAsyncBegin: {
       writer->PrintProperty("ph", "b");
-      writer->PrintfProperty("id", "%" Px64 "", Id());
+      writer->PrintfProperty("id", "%" Px64 "", AsyncId());
     } break;
     case kAsyncInstant: {
       writer->PrintProperty("ph", "n");
-      writer->PrintfProperty("id", "%" Px64 "", Id());
+      writer->PrintfProperty("id", "%" Px64 "", AsyncId());
     } break;
     case kAsyncEnd: {
       writer->PrintProperty("ph", "e");
-      writer->PrintfProperty("id", "%" Px64 "", Id());
+      writer->PrintfProperty("id", "%" Px64 "", AsyncId());
     } break;
     case kCounter: {
       writer->PrintProperty("ph", "C");
     } break;
     case kFlowBegin: {
       writer->PrintProperty("ph", "s");
-      writer->PrintfProperty("id", "%" Px64 "", Id());
+      writer->PrintfProperty("id", "%" Px64 "", AsyncId());
     } break;
     case kFlowStep: {
       writer->PrintProperty("ph", "t");
-      writer->PrintfProperty("id", "%" Px64 "", Id());
+      writer->PrintfProperty("id", "%" Px64 "", AsyncId());
     } break;
     case kFlowEnd: {
       writer->PrintProperty("ph", "f");
       writer->PrintProperty("bp", "e");
-      writer->PrintfProperty("id", "%" Px64 "", Id());
+      writer->PrintfProperty("id", "%" Px64 "", AsyncId());
     } break;
     case kMetadata: {
       writer->PrintProperty("ph", "M");
@@ -734,6 +728,14 @@
   writer->CloseObject();
 }
 
+int64_t TimelineEvent::TimeOrigin() const {
+  return timestamp0_;
+}
+
+int64_t TimelineEvent::AsyncId() const {
+  return timestamp1_;
+}
+
 int64_t TimelineEvent::LowTime() const {
   return timestamp0_;
 }
@@ -839,13 +841,6 @@
     return;
   }
   enabled_ = true;
-  Thread* thread = static_cast<Thread*>(this->thread());
-  if (thread != NULL) {
-    id_ = thread->GetNextTaskId();
-  } else {
-    static RelaxedAtomic<int64_t> next_bootstrap_task_id = {0};
-    id_ = next_bootstrap_task_id.fetch_add(1);
-  }
 }
 
 void TimelineEventScope::SetNumArguments(intptr_t length) {
@@ -924,7 +919,7 @@
   }
   ASSERT(event != NULL);
   // Emit a begin event.
-  event->Begin(label(), id());
+  event->Begin(label());
   event->Complete();
 }
 
@@ -940,7 +935,7 @@
   }
   ASSERT(event != NULL);
   // Emit an end event.
-  event->End(label(), id());
+  event->End(label());
   StealArguments(event);
   event->Complete();
 }
@@ -963,7 +958,7 @@
       isolate_id_(isolate_id) {}
 
 TimelineEventRecorder::TimelineEventRecorder()
-    : time_low_micros_(0), time_high_micros_(0) {}
+    : async_id_(0), time_low_micros_(0), time_high_micros_(0) {}
 
 #ifndef PRODUCT
 void TimelineEventRecorder::PrintJSONMeta(JSONArray* events) const {
@@ -1125,6 +1120,16 @@
 }
 #endif
 
+int64_t TimelineEventRecorder::GetNextAsyncId() {
+  // TODO(johnmccutchan): Gracefully handle wrap around.
+#if defined(DART_HOST_OS_FUCHSIA)
+  return trace_generate_nonce();
+#else
+  uint32_t next = static_cast<uint32_t>(async_id_.fetch_add(1u));
+  return static_cast<int64_t>(next);
+#endif
+}
+
 void TimelineEventRecorder::FinishBlock(TimelineEventBlock* block) {
   if (block == NULL) {
     return;
@@ -1701,10 +1706,10 @@
       event->AsyncEnd(name, id, start);
       break;
     case 'B':
-      event->Begin(name, id, start, start_cpu);
+      event->Begin(name, start, start_cpu);
       break;
     case 'E':
-      event->End(name, id, start, start_cpu);
+      event->End(name, start, start_cpu);
       break;
     default:
       UNREACHABLE();
diff --git a/runtime/vm/timeline.h b/runtime/vm/timeline.h
index 7b89e4b..759e09f 100644
--- a/runtime/vm/timeline.h
+++ b/runtime/vm/timeline.h
@@ -334,12 +334,10 @@
 
   void Begin(
       const char* label,
-      int64_t id,
       int64_t micros = OS::GetCurrentMonotonicMicrosForTimeline(),
       int64_t thread_micros = OS::GetCurrentThreadCPUMicrosForTimeline());
 
   void End(const char* label,
-           int64_t id,
            int64_t micros = OS::GetCurrentMonotonicMicrosForTimeline(),
            int64_t thread_micros = OS::GetCurrentThreadCPUMicrosForTimeline());
 
@@ -392,11 +390,8 @@
   int64_t ThreadCPUTimeDuration() const;
   int64_t ThreadCPUTimeOrigin() const;
 
-  int64_t TimeOrigin() const { return timestamp0_; }
-  int64_t Id() const {
-    ASSERT(event_type() != kDuration);
-    return timestamp1_;
-  }
+  int64_t TimeOrigin() const;
+  int64_t AsyncId() const;
   int64_t TimeDuration() const;
   int64_t TimeEnd() const {
     ASSERT(IsFinishedDuration());
@@ -603,8 +598,6 @@
 
   const char* label() const { return label_; }
 
-  int64_t id() const { return id_; }
-
   TimelineEventArgument* arguments() const { return arguments_.buffer(); }
 
   intptr_t arguments_length() const { return arguments_.length(); }
@@ -620,7 +613,6 @@
 
   TimelineStream* stream_;
   const char* label_;
-  int64_t id_;
   TimelineEventArguments arguments_;
   bool enabled_;
 
@@ -791,6 +783,7 @@
   virtual void PrintTraceEvent(JSONStream* js, TimelineEventFilter* filter) = 0;
 #endif
   virtual const char* name() const = 0;
+  int64_t GetNextAsyncId();
 
   void FinishBlock(TimelineEventBlock* block);
 
@@ -821,6 +814,7 @@
   int64_t TimeExtentMicros() const;
 
   Mutex lock_;
+  RelaxedAtomic<uintptr_t> async_id_;
   int64_t time_low_micros_;
   int64_t time_high_micros_;
 
diff --git a/runtime/vm/timeline_android.cc b/runtime/vm/timeline_android.cc
index 37844f7..f91ee42 100644
--- a/runtime/vm/timeline_android.cc
+++ b/runtime/vm/timeline_android.cc
@@ -79,12 +79,12 @@
     }
     case TimelineEvent::kAsyncBegin: {
       length = Utils::SNPrint(buffer, buffer_size, "S|%" Pd64 "|%s|%" Pd64 "",
-                              pid, event->label(), event->Id());
+                              pid, event->label(), event->AsyncId());
       break;
     }
     case TimelineEvent::kAsyncEnd: {
       length = Utils::SNPrint(buffer, buffer_size, "F|%" Pd64 "|%s|%" Pd64 "",
-                              pid, event->label(), event->Id());
+                              pid, event->label(), event->AsyncId());
       break;
     }
     default:
diff --git a/runtime/vm/timeline_fuchsia.cc b/runtime/vm/timeline_fuchsia.cc
index 6dd671a..38bca29 100644
--- a/runtime/vm/timeline_fuchsia.cc
+++ b/runtime/vm/timeline_fuchsia.cc
@@ -78,19 +78,19 @@
           args, num_args);
       break;
     case TimelineEvent::kAsyncBegin:
-      trace_context_write_async_begin_event_record(context, start_time, &thread,
-                                                   &category, &name,
-                                                   event->Id(), args, num_args);
+      trace_context_write_async_begin_event_record(
+          context, start_time, &thread, &category, &name, event->AsyncId(),
+          args, num_args);
       break;
     case TimelineEvent::kAsyncEnd:
-      trace_context_write_async_end_event_record(context, end_time, &thread,
-                                                 &category, &name, event->Id(),
-                                                 args, num_args);
+      trace_context_write_async_end_event_record(
+          context, end_time, &thread, &category, &name, event->AsyncId(), args,
+          num_args);
       break;
     case TimelineEvent::kAsyncInstant:
       trace_context_write_async_instant_event_record(
-          context, start_time, &thread, &category, &name, event->Id(), args,
-          num_args);
+          context, start_time, &thread, &category, &name, event->AsyncId(),
+          args, num_args);
       break;
     case TimelineEvent::kDuration:
       trace_context_write_duration_event_record(context, start_time, end_time,
@@ -98,19 +98,19 @@
                                                 num_args);
       break;
     case TimelineEvent::kFlowBegin:
-      trace_context_write_flow_begin_event_record(context, start_time, &thread,
-                                                  &category, &name, event->Id(),
-                                                  args, num_args);
+      trace_context_write_flow_begin_event_record(
+          context, start_time, &thread, &category, &name, event->AsyncId(),
+          args, num_args);
       break;
     case TimelineEvent::kFlowStep:
-      trace_context_write_flow_step_event_record(context, start_time, &thread,
-                                                 &category, &name, event->Id(),
-                                                 args, num_args);
+      trace_context_write_flow_step_event_record(
+          context, start_time, &thread, &category, &name, event->AsyncId(),
+          args, num_args);
       break;
     case TimelineEvent::kFlowEnd:
-      trace_context_write_flow_end_event_record(context, start_time, &thread,
-                                                &category, &name, event->Id(),
-                                                args, num_args);
+      trace_context_write_flow_end_event_record(
+          context, start_time, &thread, &category, &name, event->AsyncId(),
+          args, num_args);
       break;
     default:
       // TODO(zra): Figure out what to do with kCounter and kMetadata.
diff --git a/runtime/vm/timeline_linux.cc b/runtime/vm/timeline_linux.cc
index 407a790..a85f9e5 100644
--- a/runtime/vm/timeline_linux.cc
+++ b/runtime/vm/timeline_linux.cc
@@ -79,12 +79,12 @@
     }
     case TimelineEvent::kAsyncBegin: {
       length = Utils::SNPrint(buffer, buffer_size, "S|%" Pd64 "|%s|%" Pd64 "",
-                              pid, event->label(), event->Id());
+                              pid, event->label(), event->AsyncId());
       break;
     }
     case TimelineEvent::kAsyncEnd: {
       length = Utils::SNPrint(buffer, buffer_size, "F|%" Pd64 "|%s|%" Pd64 "",
-                              pid, event->label(), event->Id());
+                              pid, event->label(), event->AsyncId());
       break;
     }
     default:
diff --git a/runtime/vm/timeline_macos.cc b/runtime/vm/timeline_macos.cc
index d187617..cbb2efa 100644
--- a/runtime/vm/timeline_macos.cc
+++ b/runtime/vm/timeline_macos.cc
@@ -40,18 +40,28 @@
                                        buffer, sizeof(buffer));
       break;
     }
-    case TimelineEvent::kBegin:
-    case TimelineEvent::kAsyncBegin: {
-      _os_signpost_emit_with_name_impl(&__dso_handle, log,
-                                       OS_SIGNPOST_INTERVAL_BEGIN, event->Id(),
-                                       label, "", buffer, sizeof(buffer));
+    case TimelineEvent::kBegin: {
+      _os_signpost_emit_with_name_impl(
+          &__dso_handle, log, OS_SIGNPOST_INTERVAL_BEGIN,
+          OS_SIGNPOST_ID_EXCLUSIVE, label, "", buffer, sizeof(buffer));
       break;
     }
-    case TimelineEvent::kEnd:
+    case TimelineEvent::kEnd: {
+      _os_signpost_emit_with_name_impl(
+          &__dso_handle, log, OS_SIGNPOST_INTERVAL_END,
+          OS_SIGNPOST_ID_EXCLUSIVE, label, "", buffer, sizeof(buffer));
+      break;
+    }
+    case TimelineEvent::kAsyncBegin: {
+      _os_signpost_emit_with_name_impl(
+          &__dso_handle, log, OS_SIGNPOST_INTERVAL_BEGIN, event->AsyncId(),
+          label, "", buffer, sizeof(buffer));
+      break;
+    }
     case TimelineEvent::kAsyncEnd: {
-      _os_signpost_emit_with_name_impl(&__dso_handle, log,
-                                       OS_SIGNPOST_INTERVAL_END, event->Id(),
-                                       label, "", buffer, sizeof(buffer));
+      _os_signpost_emit_with_name_impl(
+          &__dso_handle, log, OS_SIGNPOST_INTERVAL_END, event->AsyncId(), label,
+          "", buffer, sizeof(buffer));
       break;
     }
     case TimelineEvent::kCounter: {
@@ -59,8 +69,8 @@
       Utils::SNPrint(reinterpret_cast<char*>(buffer), sizeof(buffer), fmt,
                      event->arguments()[0].value);
       _os_signpost_emit_with_name_impl(&__dso_handle, log, OS_SIGNPOST_EVENT,
-                                       OS_SIGNPOST_ID_EXCLUSIVE, label, fmt,
-                                       buffer, sizeof(buffer));
+                                       event->AsyncId(), label, fmt, buffer,
+                                       sizeof(buffer));
       break;
     }
     default:
diff --git a/runtime/vm/timeline_test.cc b/runtime/vm/timeline_test.cc
index 3c5ec04..97699cd 100644
--- a/runtime/vm/timeline_test.cc
+++ b/runtime/vm/timeline_test.cc
@@ -318,8 +318,8 @@
 
   event = stream.StartEvent();
   EXPECT_EQ(0, override.recorder()->CountFor(TimelineEvent::kAsyncBegin));
-  int64_t async_id = thread->GetNextTaskId();
-  EXPECT(async_id != 0);
+  int64_t async_id = override.recorder()->GetNextAsyncId();
+  EXPECT(async_id >= 0);
   event->AsyncBegin("asyncBeginCabbage", async_id);
   EXPECT_EQ(0, override.recorder()->CountFor(TimelineEvent::kAsyncBegin));
   event->Complete();
diff --git a/sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart b/sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart
index a8f6c4e..729dc22 100644
--- a/sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart
+++ b/sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart
@@ -157,7 +157,7 @@
 }
 
 @patch
-int _getNextTaskId() {
+int _getNextAsyncId() {
   return 0;
 }
 
diff --git a/sdk/lib/_internal/js_runtime/lib/developer_patch.dart b/sdk/lib/_internal/js_runtime/lib/developer_patch.dart
index d8439cc..05db6d6 100644
--- a/sdk/lib/_internal/js_runtime/lib/developer_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/developer_patch.dart
@@ -80,7 +80,7 @@
 }
 
 @patch
-int _getNextTaskId() {
+int _getNextAsyncId() {
   return 0;
 }
 
diff --git a/sdk/lib/_internal/vm/lib/async_patch.dart b/sdk/lib/_internal/vm/lib/async_patch.dart
index 29ff029..c0d480e 100644
--- a/sdk/lib/_internal/vm/lib/async_patch.dart
+++ b/sdk/lib/_internal/vm/lib/async_patch.dart
@@ -39,7 +39,7 @@
   @pragma("vm:entry-point")
   StreamController<T> controller;
   @pragma("vm:entry-point")
-  Function? asyncStarBody;
+  void Function(Object?)? asyncStarBody;
   bool isAdding = false;
   bool onListenReceived = false;
   bool isScheduled = false;
@@ -66,7 +66,7 @@
     isSuspendedAtYield = false;
     final bool? argument = continuationArgument;
     continuationArgument = null;
-    asyncStarBody!(argument, null);
+    asyncStarBody!(argument);
   }
 
   void scheduleGenerator() {
@@ -169,8 +169,7 @@
     controller.close();
   }
 
-  _AsyncStarStreamController(this.asyncStarBody)
-      : controller = new StreamController(sync: true) {
+  _AsyncStarStreamController() : controller = new StreamController(sync: true) {
     controller.onListen = this.onListen;
     controller.onResume = this.onResume;
     controller.onCancel = this.onCancel;
@@ -217,32 +216,22 @@
 
 @pragma("vm:entry-point")
 class _SuspendState {
-  static const bool _trace = false;
-
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
   static Object? _initAsync<T>() {
-    if (_trace) print('_initAsync<$T>');
     return _Future<T>();
   }
 
   @pragma("vm:invisible")
   @pragma("vm:recognized", "other")
   void _createAsyncCallbacks() {
-    if (_trace) print('_createAsyncCallbacks');
-
     @pragma("vm:invisible")
     thenCallback(value) {
-      if (_trace) print('thenCallback (this=$this, value=$value)');
       _resume(value, null, null);
     }
 
     @pragma("vm:invisible")
     errorCallback(Object exception, StackTrace stackTrace) {
-      if (_trace) {
-        print('errorCallback (this=$this, '
-            'exception=$exception, stackTrace=$stackTrace)');
-      }
       _resume(null, exception, stackTrace);
     }
 
@@ -335,7 +324,6 @@
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
   Object? _await(Object? object) {
-    if (_trace) print('_await (object=$object)');
     if (_thenCallback == null) {
       _createAsyncCallbacks();
     }
@@ -358,10 +346,6 @@
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
   static Future _returnAsync(Object suspendState, Object? returnValue) {
-    if (_trace) {
-      print('_returnAsync (suspendState=$suspendState, '
-          'returnValue=$returnValue)');
-    }
     _Future future;
     if (suspendState is _SuspendState) {
       future = unsafeCast<_Future>(suspendState._functionData);
@@ -380,10 +364,6 @@
   @pragma("vm:invisible")
   static Future _returnAsyncNotFuture(
       Object suspendState, Object? returnValue) {
-    if (_trace) {
-      print('_returnAsyncNotFuture (suspendState=$suspendState, '
-          'returnValue=$returnValue)');
-    }
     _Future future;
     if (suspendState is _SuspendState) {
       future = unsafeCast<_Future>(suspendState._functionData);
@@ -397,15 +377,13 @@
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
   static Object? _initAsyncStar<T>() {
-    if (_trace) print('_initAsyncStar<$T>');
-    return _AsyncStarStreamController<T>(null);
+    return _AsyncStarStreamController<T>();
   }
 
   @pragma("vm:invisible")
   @pragma("vm:recognized", "other")
   _createAsyncStarCallback(_AsyncStarStreamController controller) {
-    controller.asyncStarBody = (value, _) {
-      if (_trace) print('asyncStarBody callback (value=$value)');
+    controller.asyncStarBody = (value) {
       _resume(value, null, null);
     };
   }
@@ -424,10 +402,6 @@
   @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();
@@ -437,10 +411,6 @@
   @pragma("vm:invisible")
   static Object? _handleException(
       Object suspendState, Object exception, StackTrace stackTrace) {
-    if (_trace) {
-      print('_handleException (suspendState=$suspendState, '
-          'exception=$exception, stackTrace=$stackTrace)');
-    }
     Object? functionData;
     bool isSync = true;
     if (suspendState is _SuspendState) {
@@ -469,14 +439,12 @@
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
   static Object? _initSyncStar<T>() {
-    if (_trace) print('_initSyncStar<$T>');
     return _SyncStarIterable<T>();
   }
 
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
   Object? _suspendSyncStarAtStart(Object? object) {
-    if (_trace) print('_suspendSyncStarAtStart($object)');
     final data = _functionData;
     unsafeCast<_SyncStarIterable>(data)._stateAtStart = this;
     return data;
diff --git a/sdk/lib/_internal/vm/lib/timeline.dart b/sdk/lib/_internal/vm/lib/timeline.dart
index d65d975..e3e172c 100644
--- a/sdk/lib/_internal/vm/lib/timeline.dart
+++ b/sdk/lib/_internal/vm/lib/timeline.dart
@@ -13,8 +13,8 @@
 external int _getTraceClock();
 
 @patch
-@pragma("vm:external-name", "Timeline_getNextTaskId")
-external int _getNextTaskId();
+@pragma("vm:external-name", "Timeline_getNextAsyncId")
+external int _getNextAsyncId();
 
 @patch
 @pragma("vm:external-name", "Timeline_reportTaskEvent")
diff --git a/sdk/lib/_internal/wasm/lib/developer.dart b/sdk/lib/_internal/wasm/lib/developer.dart
index 32eb53d..32d3050 100644
--- a/sdk/lib/_internal/wasm/lib/developer.dart
+++ b/sdk/lib/_internal/wasm/lib/developer.dart
@@ -49,7 +49,7 @@
 int _traceClock = 0;
 
 @patch
-int _getNextTaskId() => 0;
+int _getNextAsyncId() => 0;
 
 @patch
 void _reportTaskEvent(int taskId, String phase, String category, String name,
diff --git a/sdk/lib/developer/timeline.dart b/sdk/lib/developer/timeline.dart
index fc4abd4..a9990a3 100644
--- a/sdk/lib/developer/timeline.dart
+++ b/sdk/lib/developer/timeline.dart
@@ -60,7 +60,7 @@
   /// If [id] is not provided, an id that conflicts with no other Dart-generated
   /// flow id's will be generated.
   static Flow begin({int? id}) {
-    return new Flow._(_begin, id ?? _getNextTaskId());
+    return new Flow._(_begin, id ?? _getNextAsyncId());
   }
 
   /// A "step" Flow event.
@@ -112,8 +112,7 @@
       _stack.add(null);
       return;
     }
-    var block = new _SyncBlock._(name, _getNextTaskId(),
-        arguments: arguments, flow: flow);
+    var block = new _SyncBlock._(name, arguments: arguments, flow: flow);
     _stack.add(block);
     block._startSync();
   }
@@ -191,7 +190,7 @@
   TimelineTask({TimelineTask? parent, String? filterKey})
       : _parent = parent,
         _filterKey = filterKey,
-        _taskId = _getNextTaskId() {}
+        _taskId = _getNextAsyncId() {}
 
   /// Create a task with an explicit [taskId]. This is useful if you are
   /// passing a task from one isolate to another.
@@ -336,9 +335,6 @@
   /// The name of this block.
   final String name;
 
-  /// Signpost needs help matching begin and end events.
-  final int taskId;
-
   /// An (optional) set of arguments which will be serialized to JSON and
   /// associated with this block.
   final Map? arguments;
@@ -348,18 +344,18 @@
 
   late final String _jsonArguments = _argumentsAsJson(arguments);
 
-  _SyncBlock._(this.name, this.taskId, {this.arguments, this.flow});
+  _SyncBlock._(this.name, {this.arguments, this.flow});
 
   /// Start this block of time.
   void _startSync() {
-    _reportTaskEvent(taskId, 'B', category, name, _jsonArguments);
+    _reportTaskEvent(0, 'B', category, name, _jsonArguments);
   }
 
   /// Finish this block of time. At this point, this block can no longer be
   /// used.
   void finish() {
     // Report event to runtime.
-    _reportTaskEvent(taskId, 'E', category, name, _jsonArguments);
+    _reportTaskEvent(0, 'E', category, name, _jsonArguments);
     final Flow? tempFlow = flow;
     if (tempFlow != null) {
       _reportFlowEvent(category, "${tempFlow.id}", tempFlow._type, tempFlow.id,
@@ -380,9 +376,8 @@
 @pragma("vm:recognized", "asm-intrinsic")
 external bool _isDartStreamEnabled();
 
-/// Returns the next task id.
-@pragma("vm:recognized", "asm-intrinsic")
-external int _getNextTaskId();
+/// Returns the next async task id.
+external int _getNextAsyncId();
 
 /// Returns the current value from the trace clock.
 external int _getTraceClock();
diff --git a/tools/VERSION b/tools/VERSION
index e3f65ac..7bc95cb 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 19
 PATCH 0
-PRERELEASE 0
+PRERELEASE 1
 PRERELEASE_PATCH 0
\ No newline at end of file
