[vm] New async*/yield/yield* implementation based on suspend/resume stubs

TEST=ci
Issue: https://github.com/dart-lang/sdk/issues/48378
Change-Id: I0c2ca9269b2c8f008a79c139a0ce10231996732d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/242923
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md
index 895c2ab..c962060 100644
--- a/pkg/kernel/binary.md
+++ b/pkg/kernel/binary.md
@@ -1371,7 +1371,7 @@
 type YieldStatement extends Statement {
   Byte tag = 77;
   FileOffset fileOffset;
-  Byte flags (isYieldStar);
+  Byte flags (isYieldStar, isNative);
   Expression expression;
 }
 
diff --git a/pkg/vm/lib/transformations/continuation.dart b/pkg/vm/lib/transformations/continuation.dart
index f158e8e..4201896 100644
--- a/pkg/vm/lib/transformations/continuation.dart
+++ b/pkg/vm/lib/transformations/continuation.dart
@@ -158,9 +158,16 @@
           return node;
         }
       case AsyncMarker.AsyncStar:
-        return new AsyncStarFunctionRewriter(
-                helper, node, staticTypeContext, desugarAsync)
-            .rewrite();
+        if (desugarAsync) {
+          return new AsyncStarFunctionRewriter(
+                  helper, node, staticTypeContext, desugarAsync)
+              .rewrite();
+        } else {
+          node.transformOrRemoveChildren(new RecursiveContinuationRewriter(
+              helper, staticTypeContext, desugarAsync,
+              desugarAwaitFor: true));
+          return node;
+        }
     }
   }
 
diff --git a/runtime/vm/code_descriptors.h b/runtime/vm/code_descriptors.h
index 9251781..e268ff0 100644
--- a/runtime/vm/code_descriptors.h
+++ b/runtime/vm/code_descriptors.h
@@ -77,7 +77,9 @@
   };
 
   explicit ExceptionHandlerList(const Function& function)
-      : list_(), has_async_handler_(function.IsCompactAsyncFunction()) {}
+      : list_(),
+        has_async_handler_(function.IsCompactAsyncFunction() ||
+                           function.IsCompactAsyncStarFunction()) {}
 
   intptr_t Length() const { return list_.length(); }
 
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index 7b14f31..c03025e0 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -376,7 +376,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index 67fed8a..362e199 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -366,7 +366,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index c23ff8a..257243a 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -453,7 +453,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
index 2c40fdc..c129e1b 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
@@ -360,7 +360,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index e6c3b1e..59db090 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -372,7 +372,7 @@
   } else if (parsed_function().suspend_state_var() != nullptr) {
     // Initialize synthetic :suspend_state variable early
     // as it may be accessed by GC and exception handling before
-    // InitAsync stub is called.
+    // InitSuspendableFunction stub is called.
     const intptr_t slot_index =
         compiler::target::frame_layout.FrameSlotForVariable(
             parsed_function().suspend_state_var());
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 768d5c4..4a8bc6c 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -6901,16 +6901,25 @@
 }
 
 const Code& ReturnInstr::GetReturnStub(FlowGraphCompiler* compiler) const {
-  ASSERT(compiler->parsed_function().function().IsCompactAsyncFunction());
-  if (!value()->Type()->CanBeFuture()) {
-    return Code::ZoneHandle(compiler->zone(),
-                            compiler->isolate_group()
-                                ->object_store()
-                                ->return_async_not_future_stub());
+  const Function& function = compiler->parsed_function().function();
+  ASSERT(function.IsSuspendableFunction());
+  if (function.IsCompactAsyncFunction()) {
+    if (!value()->Type()->CanBeFuture()) {
+      return Code::ZoneHandle(compiler->zone(),
+                              compiler->isolate_group()
+                                  ->object_store()
+                                  ->return_async_not_future_stub());
+    }
+    return Code::ZoneHandle(
+        compiler->zone(),
+        compiler->isolate_group()->object_store()->return_async_stub());
+  } else if (function.IsCompactAsyncStarFunction()) {
+    return Code::ZoneHandle(
+        compiler->zone(),
+        compiler->isolate_group()->object_store()->return_async_star_stub());
+  } else {
+    UNREACHABLE();
   }
-  return Code::ZoneHandle(
-      compiler->zone(),
-      compiler->isolate_group()->object_store()->return_async_stub());
 }
 
 void NativeReturnInstr::EmitReturnMoves(FlowGraphCompiler* compiler) {
@@ -7230,10 +7239,12 @@
       LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
   switch (stub_id_) {
     case StubId::kInitAsync:
+    case StubId::kInitAsyncStar:
       locs->set_in(0, Location::RegisterLocation(
                           InitSuspendableFunctionStubABI::kTypeArgsReg));
       break;
-    case StubId::kAwaitAsync:
+    case StubId::kAwait:
+    case StubId::kYieldAsyncStar:
       locs->set_in(0, Location::RegisterLocation(SuspendStubABI::kArgumentReg));
       break;
   }
@@ -7248,15 +7259,21 @@
     case StubId::kInitAsync:
       stub = object_store->init_async_stub();
       break;
-    case StubId::kAwaitAsync:
-      stub = object_store->await_async_stub();
+    case StubId::kAwait:
+      stub = object_store->await_stub();
+      break;
+    case StubId::kInitAsyncStar:
+      stub = object_store->init_async_star_stub();
+      break;
+    case StubId::kYieldAsyncStar:
+      stub = object_store->yield_async_star_stub();
       break;
   }
   compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
                              locs(), deopt_id(), env());
 
 #if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_IA32)
-  if (stub_id_ == StubId::kAwaitAsync) {
+  if ((stub_id_ == StubId::kAwait) || (stub_id_ == StubId::kYieldAsyncStar)) {
     // On x86 (X64 and IA32) mismatch between calls and returns
     // significantly regresses performance. So suspend stub
     // does not return directly to the caller. Instead, a small
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index d0bbaed..6b6c9019 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -9567,8 +9567,10 @@
 class Call1ArgStubInstr : public TemplateDefinition<1, Throws> {
  public:
   enum class StubId {
+    kAwait,
     kInitAsync,
-    kAwaitAsync,
+    kInitAsyncStar,
+    kYieldAsyncStar,
   };
 
   Call1ArgStubInstr(const InstructionSource& source,
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index cf3345c..493238e 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -484,7 +484,7 @@
     ASSERT(result == CallingConventions::kReturnFpuReg);
   }
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index a6a35de..4d0bf7c 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -411,7 +411,7 @@
     ASSERT(result == CallingConventions::kReturnFpuReg);
   }
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index 3a4a935..f2ebdda 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -233,7 +233,7 @@
   Register result = locs()->in(0).reg();
   ASSERT(result == EAX);
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_printer.cc b/runtime/vm/compiler/backend/il_printer.cc
index a4ed678..76b1c00 100644
--- a/runtime/vm/compiler/backend/il_printer.cc
+++ b/runtime/vm/compiler/backend/il_printer.cc
@@ -1362,8 +1362,14 @@
     case StubId::kInitAsync:
       name = "InitAsync";
       break;
-    case StubId::kAwaitAsync:
-      name = "AwaitAsync";
+    case StubId::kAwait:
+      name = "Await";
+      break;
+    case StubId::kInitAsyncStar:
+      name = "InitAsyncStar";
+      break;
+    case StubId::kYieldAsyncStar:
+      name = "YieldAsyncStar";
       break;
   }
   f->Printf("%s(", name);
diff --git a/runtime/vm/compiler/backend/il_riscv.cc b/runtime/vm/compiler/backend/il_riscv.cc
index d646861..74459f7 100644
--- a/runtime/vm/compiler/backend/il_riscv.cc
+++ b/runtime/vm/compiler/backend/il_riscv.cc
@@ -464,7 +464,7 @@
     ASSERT(result == CallingConventions::kReturnFpuReg);
   }
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index 75475b1..170932f 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -338,7 +338,7 @@
     ASSERT(result == CallingConventions::kReturnFpuReg);
   }
 
-  if (compiler->parsed_function().function().IsCompactAsyncFunction()) {
+  if (compiler->parsed_function().function().IsSuspendableFunction()) {
     ASSERT(compiler->flow_graph().graph_entry()->NeedsFrame());
     const Code& stub = GetReturnStub(compiler);
     compiler->EmitJumpToStub(stub);
diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc
index 708308f..f2cf0ab 100644
--- a/runtime/vm/compiler/backend/range_analysis.cc
+++ b/runtime/vm/compiler/backend/range_analysis.cc
@@ -2814,7 +2814,7 @@
     case Slot::Kind::kFunctionType_parameter_types:
     case Slot::Kind::kFunctionType_type_parameters:
     case Slot::Kind::kInstance_native_fields_array:
-    case Slot::Kind::kSuspendState_future:
+    case Slot::Kind::kSuspendState_function_data:
     case Slot::Kind::kSuspendState_then_callback:
     case Slot::Kind::kSuspendState_error_callback:
     case Slot::Kind::kTypedDataView_typed_data:
diff --git a/runtime/vm/compiler/backend/slot.cc b/runtime/vm/compiler/backend/slot.cc
index 77d0153..74e10bc 100644
--- a/runtime/vm/compiler/backend/slot.cc
+++ b/runtime/vm/compiler/backend/slot.cc
@@ -243,7 +243,7 @@
     case Slot::Kind::kFunctionType_named_parameter_names:
     case Slot::Kind::kFunctionType_parameter_types:
     case Slot::Kind::kFunctionType_type_parameters:
-    case Slot::Kind::kSuspendState_future:
+    case Slot::Kind::kSuspendState_function_data:
     case Slot::Kind::kSuspendState_then_callback:
     case Slot::Kind::kSuspendState_error_callback:
     case Slot::Kind::kType_arguments:
diff --git a/runtime/vm/compiler/backend/slot.h b/runtime/vm/compiler/backend/slot.h
index 12609d6..e4efe29 100644
--- a/runtime/vm/compiler/backend/slot.h
+++ b/runtime/vm/compiler/backend/slot.h
@@ -73,7 +73,7 @@
   V(ImmutableLinkedHashBase, UntaggedLinkedHashBase, index,                    \
     TypedDataUint32Array, VAR)                                                 \
   V(Instance, UntaggedInstance, native_fields_array, Dynamic, VAR)             \
-  V(SuspendState, UntaggedSuspendState, future, Dynamic, VAR)                  \
+  V(SuspendState, UntaggedSuspendState, function_data, Dynamic, VAR)           \
   V(SuspendState, UntaggedSuspendState, then_callback, Closure, VAR)           \
   V(SuspendState, UntaggedSuspendState, error_callback, Closure, VAR)          \
   V(Type, UntaggedType, arguments, TypeArguments, FINAL)                       \
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index ab59d68..6bbd861 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -684,6 +684,24 @@
     body += B->Call1ArgStub(TokenPosition::kNoSource,
                             Call1ArgStubInstr::StubId::kInitAsync);
     body += Drop();
+  } else if (dart_function.IsCompactAsyncStarFunction()) {
+    const auto& result_type =
+        AbstractType::Handle(Z, dart_function.result_type());
+    auto& type_args = TypeArguments::ZoneHandle(Z);
+    if (result_type.IsType() &&
+        (result_type.type_class() == IG->object_store()->stream_class())) {
+      ASSERT(result_type.IsFinalized());
+      type_args = result_type.arguments();
+    }
+
+    body += TranslateInstantiatedTypeArguments(type_args);
+    body += B->Call1ArgStub(TokenPosition::kNoSource,
+                            Call1ArgStubInstr::StubId::kInitAsyncStar);
+    body += Drop();
+    body += NullConstant();
+    body += B->Call1ArgStub(TokenPosition::kNoSource,
+                            Call1ArgStubInstr::StubId::kYieldAsyncStar);
+    body += Drop();
   }
   return body;
 }
@@ -4322,7 +4340,8 @@
 
 Fragment StreamingFlowGraphBuilder::BuildAwaitExpression(
     TokenPosition* position) {
-  ASSERT(parsed_function()->function().IsCompactAsyncFunction());
+  ASSERT(parsed_function()->function().IsCompactAsyncFunction() ||
+         parsed_function()->function().IsCompactAsyncStarFunction());
   Fragment instructions;
 
   const TokenPosition pos = ReadPosition();  // read file offset.
@@ -4330,7 +4349,7 @@
 
   instructions += BuildExpression();  // read operand.
 
-  instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwaitAsync);
+  instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwait);
   return instructions;
 }
 
@@ -5228,8 +5247,83 @@
   const TokenPosition pos = ReadPosition();  // read position.
   if (position != nullptr) *position = pos;
 
-  uint8_t flags = ReadByte();          // read flags.
-  ASSERT(flags == kNativeYieldFlags);  // Must have been desugared.
+  const uint8_t flags = ReadByte();  // read flags.
+
+  if ((flags & kYieldStatementFlagNative) == 0) {
+    Fragment instructions;
+    // Generate the following code for yield <expr>:
+    //
+    // _AsyncStarStreamController controller = :suspend_state._functionData;
+    // if (controller.add(<expr>)) {
+    //   return;
+    // }
+    // suspend();
+    //
+    // Generate the following code for yield* <expr>:
+    //
+    // _AsyncStarStreamController controller = :suspend_state._functionData;
+    // controller.addStream(<expr>);
+    // if (suspend()) {
+    //   return;
+    // }
+    //
+
+    // Load :suspend_state variable using low-level FP-relative load
+    // in order to avoid confusing SSA construction (which cannot
+    // track its value as it is modified implicitly by stubs).
+    LocalVariable* suspend_state = parsed_function()->suspend_state_var();
+    ASSERT(suspend_state != nullptr);
+    instructions += IntConstant(0);
+    instructions += B->LoadFpRelativeSlot(
+        compiler::target::frame_layout.FrameSlotForVariable(suspend_state) *
+            compiler::target::kWordSize,
+        CompileType::Dynamic(), kTagged);
+    instructions += LoadNativeField(Slot::SuspendState_function_data());
+
+    instructions += BuildExpression();  // read expression.
+
+    auto& add_method = Function::ZoneHandle(Z);
+    const bool is_yield_star = (flags & kYieldStatementFlagYieldStar) != 0;
+    if (is_yield_star) {
+      add_method =
+          IG->object_store()->async_star_stream_controller_add_stream();
+    } else {
+      add_method = IG->object_store()->async_star_stream_controller_add();
+    }
+    instructions += StaticCall(pos, add_method, 2, ICData::kNoRebind);
+
+    if (is_yield_star) {
+      // Discard result of _AsyncStarStreamController.addStream().
+      instructions += Drop();
+      // Suspend and test value passed to the resumed async* body.
+      instructions += NullConstant();
+      instructions +=
+          B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kYieldAsyncStar);
+    } else {
+      // Test value returned by _AsyncStarStreamController.add().
+    }
+
+    TargetEntryInstr* exit;
+    TargetEntryInstr* continue_execution;
+    instructions += BranchIfTrue(&exit, &continue_execution, false);
+
+    Fragment do_exit(exit);
+    do_exit += TranslateFinallyFinalizers(nullptr, -1);
+    do_exit += NullConstant();
+    do_exit += Return(TokenPosition::kNoSource);
+
+    instructions = Fragment(instructions.entry, continue_execution);
+    if (!is_yield_star) {
+      instructions += NullConstant();
+      instructions +=
+          B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kYieldAsyncStar);
+      instructions += Drop();
+    }
+
+    return instructions;
+  }
+
+  ASSERT(flags == kYieldStatementFlagNative);  // Must have been desugared.
 
   // Setup yield/continue point:
   //
@@ -5476,6 +5570,16 @@
           function.set_is_inlinable(false);
           function.set_is_visible(true);
           ASSERT(function.IsCompactAsyncFunction());
+        } else if (function_node_helper.async_marker_ ==
+                   FunctionNodeHelper::kAsyncStar) {
+          if (!FLAG_precompiled_mode) {
+            FATAL("Compact async* functions are only supported in AOT mode.");
+          }
+          function.set_modifier(UntaggedFunction::kAsyncGen);
+          function.set_is_debuggable(true);
+          function.set_is_inlinable(false);
+          function.set_is_visible(true);
+          ASSERT(function.IsCompactAsyncStarFunction());
         } else {
           ASSERT((function_node_helper.async_marker_ ==
                   FunctionNodeHelper::kSync) ||
@@ -5514,6 +5618,7 @@
             function.set_is_inlinable(!FLAG_lazy_async_stacks);
           }
           ASSERT(!function.IsCompactAsyncFunction());
+          ASSERT(!function.IsCompactAsyncStarFunction());
         }
 
         // If the start token position is synthetic, the end token position
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 6f0e43c..86576be 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -834,7 +834,7 @@
   V(LinkedHashBase_getIndex, LinkedHashBase_index)                             \
   V(LinkedHashBase_getUsedData, LinkedHashBase_used_data)                      \
   V(ObjectArrayLength, Array_length)                                           \
-  V(SuspendState_getFuture, SuspendState_future)                               \
+  V(SuspendState_getFunctionData, SuspendState_function_data)                  \
   V(SuspendState_getThenCallback, SuspendState_then_callback)                  \
   V(SuspendState_getErrorCallback, SuspendState_error_callback)                \
   V(TypedDataViewOffsetInBytes, TypedDataView_offset_in_bytes)                 \
@@ -852,7 +852,7 @@
   V(NativeFinalizer_setCallback, NativeFinalizer_callback)                     \
   V(LinkedHashBase_setData, LinkedHashBase_data)                               \
   V(LinkedHashBase_setIndex, LinkedHashBase_index)                             \
-  V(SuspendState_setFuture, SuspendState_future)                               \
+  V(SuspendState_setFunctionData, SuspendState_function_data)                  \
   V(SuspendState_setThenCallback, SuspendState_then_callback)                  \
   V(SuspendState_setErrorCallback, SuspendState_error_callback)                \
   V(WeakProperty_setKey, WeakProperty_key)                                     \
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index c20ee54..6363a5e 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -89,7 +89,7 @@
   scope_->set_begin_token_pos(function.token_pos());
   scope_->set_end_token_pos(function.end_token_pos());
 
-  if (function.IsCompactAsyncFunction()) {
+  if (function.IsSuspendableFunction()) {
     LocalVariable* suspend_state_var =
         MakeVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
                      Symbols::SuspendStateVar(), AbstractType::dynamic_type());
@@ -1276,15 +1276,16 @@
       word flags = helper_.ReadByte();  // read flags.
       VisitExpression();                // read expression.
 
-      ASSERT(flags == kNativeYieldFlags);
-      if (depth_.function_ == 0) {
-        AddSwitchVariable();
-        // Promote all currently visible local variables into the context.
-        // TODO(27590) CaptureLocalVariables promotes to many variables into
-        // the scope. Mark those variables as stack_local.
-        // TODO(27590) we don't need to promote those variables that are
-        // not used across yields.
-        scope_->CaptureLocalVariables(current_function_scope_);
+      if ((flags & kYieldStatementFlagNative) != 0) {
+        if (depth_.function_ == 0) {
+          AddSwitchVariable();
+          // Promote all currently visible local variables into the context.
+          // TODO(27590) CaptureLocalVariables promotes to many variables into
+          // the scope. Mark those variables as stack_local.
+          // TODO(27590) we don't need to promote those variables that are
+          // not used across yields.
+          scope_->CaptureLocalVariables(current_function_scope_);
+        }
       }
       return;
     }
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index f1ce6f5..e887d24 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -83,8 +83,10 @@
   V(::, copyRangeFromUint8ListToOneByteString,                                 \
     CopyRangeFromUint8ListToOneByteString, 0x19a1bf41)                         \
   V(_StringBase, _interpolate, StringBaseInterpolate, 0x7da2a580)              \
-  V(_SuspendState, get:_future, SuspendState_getFuture, 0x0e2a7e73)            \
-  V(_SuspendState, set:_future, SuspendState_setFuture, 0x179923b0)            \
+  V(_SuspendState, get:_functionData, SuspendState_getFunctionData,            \
+    0x7290026e)                                                                \
+  V(_SuspendState, set:_functionData, SuspendState_setFunctionData,            \
+    0x2b6668ab)                                                                \
   V(_SuspendState, get:_thenCallback, SuspendState_getThenCallback,            \
     0xff1dccec)                                                                \
   V(_SuspendState, set:_thenCallback, SuspendState_setThenCallback,            \
@@ -95,7 +97,9 @@
     0x4935f88c)                                                                \
   V(_SuspendState, _createAsyncCallbacks, SuspendState_createAsyncCallbacks,   \
     0x4add6c13)                                                                \
-  V(_SuspendState, _resume, SuspendState_resume, 0x93d8c5e8)                   \
+  V(_SuspendState, _createAsyncStarCallback,                                   \
+    SuspendState_createAsyncStarCallback, 0xfa7537e4)                          \
+  V(_SuspendState, _resume, SuspendState_resume, 0xc738e9d2)                   \
   V(_IntegerImplementation, toDouble, IntegerToDouble, 0x97728b46)             \
   V(_Double, _add, DoubleAdd, 0xea666327)                                      \
   V(_Double, _sub, DoubleSub, 0x28474c2e)                                      \
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 267337f..31c7822 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -992,7 +992,7 @@
  public:
   static word frame_size_offset();
   static word pc_offset();
-  static word future_offset();
+  static word function_data_offset();
   static word then_callback_offset();
   static word error_callback_offset();
   static word payload_offset();
@@ -1239,9 +1239,14 @@
   static word random_offset();
 
   static word suspend_state_init_async_entry_point_offset();
-  static word suspend_state_await_async_entry_point_offset();
+  static word suspend_state_await_entry_point_offset();
   static word suspend_state_return_async_entry_point_offset();
   static word suspend_state_return_async_not_future_entry_point_offset();
+
+  static word suspend_state_init_async_star_entry_point_offset();
+  static word suspend_state_yield_async_star_entry_point_offset();
+  static word suspend_state_return_async_star_entry_point_offset();
+
   static word suspend_state_handle_exception_entry_point_offset();
 
   static word OffsetFromThread(const dart::Object& object);
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 738ed65..2fc188c 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -248,7 +248,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -256,9 +257,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    780;
+    792;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    784;
+    796;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -281,7 +282,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 820;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 832;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -292,13 +293,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 856;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 824;
+    Thread_double_truncate_round_supported_offset = 836;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 852;
+    Thread_service_extension_stream_offset = 860;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -314,7 +315,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    800;
+    812;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -336,13 +337,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    788;
+    800;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    816;
+    828;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 856;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 864;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -384,11 +385,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 804;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 796;
+    Thread_saved_shadow_call_stack_offset = 808;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    804;
+    816;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -409,7 +410,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 764;
+    Thread_suspend_state_await_entry_point_offset = 764;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 760;
 static constexpr dart::compiler::target::word
@@ -417,7 +418,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 776;
+    Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 788;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -432,13 +439,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 808;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 820;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word Thread_random_offset = 832;
+    Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word Thread_random_offset = 840;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 840;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 848;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -863,7 +870,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -871,9 +879,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -897,7 +905,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -908,13 +916,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1688;
+    Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -930,7 +938,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -952,14 +960,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -1001,11 +1009,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1632;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -1026,7 +1034,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1528;
+    Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -1034,7 +1042,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -1050,13 +1064,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+    Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -1481,7 +1495,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -1489,9 +1504,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    748;
+    760;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    752;
+    764;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -1514,7 +1529,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 800;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -1525,13 +1540,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 816;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 824;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 792;
+    Thread_double_truncate_round_supported_offset = 804;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 820;
+    Thread_service_extension_stream_offset = 828;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -1547,7 +1562,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    768;
+    780;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -1569,13 +1584,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    756;
+    768;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    784;
+    796;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 824;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 832;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -1617,11 +1632,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 772;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 764;
+    Thread_saved_shadow_call_stack_offset = 776;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    772;
+    784;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -1642,7 +1657,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 732;
+    Thread_suspend_state_await_entry_point_offset = 732;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
@@ -1650,7 +1665,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 740;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 744;
+    Thread_suspend_state_init_async_star_entry_point_offset = 744;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 748;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 752;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 756;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -1665,13 +1686,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 776;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 788;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 780;
-static constexpr dart::compiler::target::word Thread_random_offset = 800;
+    Thread_callback_stack_return_offset = 792;
+static constexpr dart::compiler::target::word Thread_random_offset = 808;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 808;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 816;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2093,7 +2114,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -2101,9 +2123,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -2127,7 +2149,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2138,13 +2160,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1712;
+    Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1752;
+    Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -2160,7 +2182,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -2182,14 +2204,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -2231,11 +2253,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1656;
+    Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -2256,7 +2278,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1592;
+    Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -2264,7 +2286,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -2280,13 +2308,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+    Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2713,7 +2741,8 @@
     SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -2721,9 +2750,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -2747,7 +2776,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -2758,13 +2787,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1688;
+    Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -2780,7 +2809,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -2802,14 +2831,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -2851,11 +2880,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1632;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -2876,7 +2905,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1528;
+    Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -2884,7 +2913,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -2900,13 +2935,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+    Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3332,7 +3367,8 @@
     SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -3340,9 +3376,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -3366,7 +3402,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -3377,13 +3413,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1712;
+    Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1752;
+    Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -3399,7 +3435,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -3421,14 +3457,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -3470,11 +3506,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1656;
+    Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -3495,7 +3531,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1592;
+    Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -3503,7 +3539,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -3519,13 +3561,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+    Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3951,7 +3993,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -3959,9 +4002,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    820;
+    832;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    824;
+    836;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -3984,7 +4027,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 860;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 872;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -3995,13 +4038,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 888;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 896;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 864;
+    Thread_double_truncate_round_supported_offset = 876;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 892;
+    Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -4017,7 +4060,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    840;
+    852;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -4039,13 +4082,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    828;
+    840;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    856;
+    868;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 896;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 904;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -4087,11 +4130,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 844;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 836;
+    Thread_saved_shadow_call_stack_offset = 848;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    844;
+    856;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -4112,7 +4155,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 804;
+    Thread_suspend_state_await_entry_point_offset = 804;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 800;
 static constexpr dart::compiler::target::word
@@ -4120,7 +4163,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 816;
+    Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 828;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -4135,13 +4184,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 848;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 860;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word Thread_random_offset = 872;
+    Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 880;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 888;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -4568,7 +4617,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -4576,9 +4626,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -4602,7 +4652,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -4613,13 +4663,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1736;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1760;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1704;
+    Thread_double_truncate_round_supported_offset = 1728;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1744;
+    Thread_service_extension_stream_offset = 1768;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -4635,7 +4685,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1656;
+    1680;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -4657,14 +4707,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1688;
+    1712;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1752;
+    1776;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -4706,11 +4756,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1640;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1664;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1648;
+    Thread_saved_shadow_call_stack_offset = 1672;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -4731,7 +4781,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1584;
+    Thread_suspend_state_await_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
@@ -4739,7 +4789,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1632;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -4755,13 +4811,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word Thread_random_offset = 1712;
+    Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word Thread_random_offset = 1736;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1720;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1744;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -5183,7 +5239,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -5191,9 +5248,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    780;
+    792;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    784;
+    796;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -5216,7 +5273,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 820;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 832;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -5227,13 +5284,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 848;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 856;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 824;
+    Thread_double_truncate_round_supported_offset = 836;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 852;
+    Thread_service_extension_stream_offset = 860;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -5249,7 +5306,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    800;
+    812;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -5271,13 +5328,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    788;
+    800;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    816;
+    828;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 856;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 864;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -5319,11 +5376,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 804;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 796;
+    Thread_saved_shadow_call_stack_offset = 808;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    804;
+    816;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -5344,7 +5401,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 764;
+    Thread_suspend_state_await_entry_point_offset = 764;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 760;
 static constexpr dart::compiler::target::word
@@ -5352,7 +5409,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 776;
+    Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 788;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -5367,13 +5430,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 808;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 820;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word Thread_random_offset = 832;
+    Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word Thread_random_offset = 840;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 840;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 848;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -5792,7 +5855,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -5800,9 +5864,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -5826,7 +5890,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -5837,13 +5901,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1688;
+    Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -5859,7 +5923,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -5881,14 +5945,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -5930,11 +5994,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1632;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -5955,7 +6019,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1528;
+    Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -5963,7 +6027,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -5979,13 +6049,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+    Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -6404,7 +6474,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -6412,9 +6483,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    748;
+    760;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    752;
+    764;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -6437,7 +6508,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 800;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -6448,13 +6519,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 816;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 824;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 792;
+    Thread_double_truncate_round_supported_offset = 804;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 820;
+    Thread_service_extension_stream_offset = 828;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -6470,7 +6541,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    768;
+    780;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -6492,13 +6563,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    756;
+    768;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    784;
+    796;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 824;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 832;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -6540,11 +6611,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 772;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 764;
+    Thread_saved_shadow_call_stack_offset = 776;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    772;
+    784;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -6565,7 +6636,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 732;
+    Thread_suspend_state_await_entry_point_offset = 732;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 728;
 static constexpr dart::compiler::target::word
@@ -6573,7 +6644,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 740;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 744;
+    Thread_suspend_state_init_async_star_entry_point_offset = 744;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 748;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 752;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 756;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -6588,13 +6665,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 776;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 788;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 780;
-static constexpr dart::compiler::target::word Thread_random_offset = 800;
+    Thread_callback_stack_return_offset = 792;
+static constexpr dart::compiler::target::word Thread_random_offset = 808;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 808;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 816;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7010,7 +7087,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -7018,9 +7096,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -7044,7 +7122,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -7055,13 +7133,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1712;
+    Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1752;
+    Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -7077,7 +7155,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -7099,14 +7177,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -7148,11 +7226,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1656;
+    Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -7173,7 +7251,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1592;
+    Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -7181,7 +7259,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -7197,13 +7281,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+    Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7624,7 +7708,8 @@
     SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -7632,9 +7717,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
+    1584;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1568;
+    1592;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -7658,7 +7743,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -7669,13 +7754,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1688;
+    Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -7691,7 +7776,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -7713,14 +7798,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1600;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -7762,11 +7847,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1632;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -7787,7 +7872,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1528;
+    Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -7795,7 +7880,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -7811,13 +7902,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word Thread_random_offset = 1656;
+    Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8237,7 +8328,8 @@
     SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -8245,9 +8337,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -8271,7 +8363,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -8282,13 +8374,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1744;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1712;
+    Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1752;
+    Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -8304,7 +8396,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -8326,14 +8418,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -8375,11 +8467,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1648;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1656;
+    Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -8400,7 +8492,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1592;
+    Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -8408,7 +8500,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -8424,13 +8522,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word Thread_random_offset = 1720;
+    Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1728;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8850,7 +8948,8 @@
     SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     4;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 12;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
 static constexpr dart::compiler::target::word
@@ -8858,9 +8957,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    820;
+    832;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    824;
+    836;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -8883,7 +8982,7 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 860;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 872;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
@@ -8894,13 +8993,13 @@
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 888;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 896;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 864;
+    Thread_double_truncate_round_supported_offset = 876;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 892;
+    Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
@@ -8916,7 +9015,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    840;
+    852;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -8938,13 +9037,13 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    828;
+    840;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    856;
+    868;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 896;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 904;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -8986,11 +9085,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 844;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 836;
+    Thread_saved_shadow_call_stack_offset = 848;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    844;
+    856;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -9011,7 +9110,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     76;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 804;
+    Thread_suspend_state_await_entry_point_offset = 804;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 800;
 static constexpr dart::compiler::target::word
@@ -9019,7 +9118,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 816;
+    Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 828;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -9034,13 +9139,13 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 848;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 860;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word Thread_random_offset = 872;
+    Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 880;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 888;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -9461,7 +9566,8 @@
     SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
     8;
-static constexpr dart::compiler::target::word SuspendState_future_offset = 24;
+static constexpr dart::compiler::target::word
+    SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
 static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
 static constexpr dart::compiler::target::word
@@ -9469,9 +9575,9 @@
 static constexpr dart::compiler::target::word
     Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
-    1624;
+    1648;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -9495,7 +9601,7 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
@@ -9506,13 +9612,13 @@
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1736;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1760;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1704;
+    Thread_double_truncate_round_supported_offset = 1728;
 static constexpr dart::compiler::target::word
-    Thread_service_extension_stream_offset = 1744;
+    Thread_service_extension_stream_offset = 1768;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
@@ -9528,7 +9634,7 @@
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1656;
+    1680;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -9550,14 +9656,14 @@
 static constexpr dart::compiler::target::word
     Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1632;
+    1656;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1688;
+    1712;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1752;
+    1776;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -9599,11 +9705,11 @@
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
     Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1640;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1664;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1648;
+    Thread_saved_shadow_call_stack_offset = 1672;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -9624,7 +9730,7 @@
 static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
     152;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_await_async_entry_point_offset = 1584;
+    Thread_suspend_state_await_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
     Thread_suspend_state_init_async_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
@@ -9632,7 +9738,13 @@
 static constexpr dart::compiler::target::word
     Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
 static constexpr dart::compiler::target::word
-    Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+    Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    Thread_suspend_state_handle_exception_entry_point_offset = 1632;
 static constexpr dart::compiler::target::word
     Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -9648,13 +9760,13 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word Thread_random_offset = 1712;
+    Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word Thread_random_offset = 1736;
 static constexpr dart::compiler::target::word
     Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1720;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1744;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
     0;
 static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -10112,8 +10224,8 @@
     AOT_SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    12;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     24;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -10122,9 +10234,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 780;
+    AOT_Thread_active_exception_offset = 792;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 784;
+    AOT_Thread_active_stacktrace_offset = 796;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -10148,7 +10260,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 200;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    820;
+    832;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -10161,13 +10273,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 140;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    848;
+    856;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 824;
+    AOT_Thread_double_truncate_round_supported_offset = 836;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 852;
+    AOT_Thread_service_extension_stream_offset = 860;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10184,7 +10296,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 800;
+    AOT_Thread_execution_state_offset = 812;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -10206,14 +10318,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 788;
+    AOT_Thread_global_object_pool_offset = 800;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 816;
+    AOT_Thread_exit_through_ffi_offset = 828;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    856;
+    864;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -10257,11 +10369,11 @@
     112;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 804;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 796;
+    AOT_Thread_saved_shadow_call_stack_offset = 808;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 804;
+    AOT_Thread_safepoint_state_offset = 816;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -10283,7 +10395,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 764;
+    AOT_Thread_suspend_state_await_entry_point_offset = 764;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 760;
 static constexpr dart::compiler::target::word
@@ -10291,7 +10403,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 776;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 788;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -10308,14 +10426,14 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    808;
+    820;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 832;
+    AOT_Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 840;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 328;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    840;
+    848;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -10803,8 +10921,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -10813,9 +10931,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -10839,7 +10957,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -10852,13 +10970,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1688;
+    AOT_Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10875,7 +10993,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -10897,14 +11015,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -10949,11 +11067,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -10975,7 +11093,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -10983,7 +11101,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -11000,14 +11124,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+    AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -11500,8 +11624,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -11510,9 +11634,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1624;
+    AOT_Thread_active_exception_offset = 1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1632;
+    AOT_Thread_active_stacktrace_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -11536,7 +11660,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -11549,13 +11673,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1744;
+    1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1712;
+    AOT_Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1752;
+    AOT_Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -11572,7 +11696,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1664;
+    AOT_Thread_execution_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -11594,14 +11718,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1640;
+    AOT_Thread_global_object_pool_offset = 1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1696;
+    AOT_Thread_exit_through_ffi_offset = 1720;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -11646,11 +11770,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1648;
+    1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1656;
+    AOT_Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1672;
+    AOT_Thread_safepoint_state_offset = 1696;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -11672,7 +11796,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -11680,7 +11804,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -11697,14 +11827,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+    AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1728;
+    1752;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -12194,8 +12324,8 @@
     AOT_SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     40;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -12204,9 +12334,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -12230,7 +12360,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -12243,13 +12373,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1688;
+    AOT_Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -12266,7 +12396,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -12288,14 +12418,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -12340,11 +12470,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -12366,7 +12496,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -12374,7 +12504,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -12391,14 +12527,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+    AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -12887,8 +13023,8 @@
     AOT_SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     40;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -12897,9 +13033,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1624;
+    AOT_Thread_active_exception_offset = 1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1632;
+    AOT_Thread_active_stacktrace_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -12923,7 +13059,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -12936,13 +13072,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1744;
+    1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1712;
+    AOT_Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1752;
+    AOT_Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -12959,7 +13095,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1664;
+    AOT_Thread_execution_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -12981,14 +13117,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1640;
+    AOT_Thread_global_object_pool_offset = 1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1696;
+    AOT_Thread_exit_through_ffi_offset = 1720;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -13033,11 +13169,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1648;
+    1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1656;
+    AOT_Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1672;
+    AOT_Thread_safepoint_state_offset = 1696;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -13059,7 +13195,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -13067,7 +13203,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -13084,14 +13226,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+    AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1728;
+    1752;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -13581,8 +13723,8 @@
     AOT_SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    12;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     24;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -13591,9 +13733,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 820;
+    AOT_Thread_active_exception_offset = 832;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 824;
+    AOT_Thread_active_stacktrace_offset = 836;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -13617,7 +13759,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 200;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    860;
+    872;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -13630,13 +13772,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 140;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    888;
+    896;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 864;
+    AOT_Thread_double_truncate_round_supported_offset = 876;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 892;
+    AOT_Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -13653,7 +13795,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 840;
+    AOT_Thread_execution_state_offset = 852;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -13675,14 +13817,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 828;
+    AOT_Thread_global_object_pool_offset = 840;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 856;
+    AOT_Thread_exit_through_ffi_offset = 868;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    896;
+    904;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -13726,11 +13868,11 @@
     112;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 844;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 836;
+    AOT_Thread_saved_shadow_call_stack_offset = 848;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 844;
+    AOT_Thread_safepoint_state_offset = 856;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -13752,7 +13894,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 804;
+    AOT_Thread_suspend_state_await_entry_point_offset = 804;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 800;
 static constexpr dart::compiler::target::word
@@ -13760,7 +13902,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 816;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 828;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -13777,14 +13925,14 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    848;
+    860;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 872;
+    AOT_Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 328;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    880;
+    888;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -14274,8 +14422,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -14284,9 +14432,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1616;
+    AOT_Thread_active_exception_offset = 1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1624;
+    AOT_Thread_active_stacktrace_offset = 1648;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -14310,7 +14458,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -14323,13 +14471,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1736;
+    1760;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1704;
+    AOT_Thread_double_truncate_round_supported_offset = 1728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1744;
+    AOT_Thread_service_extension_stream_offset = 1768;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -14346,7 +14494,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1656;
+    AOT_Thread_execution_state_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -14368,14 +14516,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1632;
+    AOT_Thread_global_object_pool_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1688;
+    AOT_Thread_exit_through_ffi_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1752;
+    1776;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -14420,11 +14568,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1648;
+    AOT_Thread_saved_shadow_call_stack_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1664;
+    AOT_Thread_safepoint_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -14446,7 +14594,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1584;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
@@ -14454,7 +14602,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -14471,14 +14625,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1712;
+    AOT_Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1736;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1720;
+    1744;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -14963,8 +15117,8 @@
     AOT_SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    12;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     24;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -14973,9 +15127,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 780;
+    AOT_Thread_active_exception_offset = 792;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 784;
+    AOT_Thread_active_stacktrace_offset = 796;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -14999,7 +15153,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 200;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    820;
+    832;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -15012,13 +15166,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 140;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    848;
+    856;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 824;
+    AOT_Thread_double_truncate_round_supported_offset = 836;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 852;
+    AOT_Thread_service_extension_stream_offset = 860;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -15035,7 +15189,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 800;
+    AOT_Thread_execution_state_offset = 812;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -15057,14 +15211,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 788;
+    AOT_Thread_global_object_pool_offset = 800;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 816;
+    AOT_Thread_exit_through_ffi_offset = 828;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    856;
+    864;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -15108,11 +15262,11 @@
     112;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 792;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 804;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 796;
+    AOT_Thread_saved_shadow_call_stack_offset = 808;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 804;
+    AOT_Thread_safepoint_state_offset = 816;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -15134,7 +15288,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 764;
+    AOT_Thread_suspend_state_await_entry_point_offset = 764;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 760;
 static constexpr dart::compiler::target::word
@@ -15142,7 +15296,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 776;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 776;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 784;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 788;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -15159,14 +15319,14 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    808;
+    820;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 812;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 832;
+    AOT_Thread_callback_stack_return_offset = 824;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 840;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 328;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    840;
+    848;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -15647,8 +15807,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -15657,9 +15817,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -15683,7 +15843,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -15696,13 +15856,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1688;
+    AOT_Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -15719,7 +15879,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -15741,14 +15901,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -15793,11 +15953,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -15819,7 +15979,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -15827,7 +15987,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -15844,14 +16010,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+    AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -16337,8 +16503,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -16347,9 +16513,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1624;
+    AOT_Thread_active_exception_offset = 1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1632;
+    AOT_Thread_active_stacktrace_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -16373,7 +16539,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -16386,13 +16552,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1744;
+    1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1712;
+    AOT_Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1752;
+    AOT_Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -16409,7 +16575,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1664;
+    AOT_Thread_execution_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -16431,14 +16597,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1640;
+    AOT_Thread_global_object_pool_offset = 1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1696;
+    AOT_Thread_exit_through_ffi_offset = 1720;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -16483,11 +16649,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1648;
+    1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1656;
+    AOT_Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1672;
+    AOT_Thread_safepoint_state_offset = 1696;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -16509,7 +16675,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -16517,7 +16683,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -16534,14 +16706,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+    AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1728;
+    1752;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -17024,8 +17196,8 @@
     AOT_SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     40;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -17034,9 +17206,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -17060,7 +17232,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -17073,13 +17245,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1688;
+    AOT_Thread_service_extension_stream_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -17096,7 +17268,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -17118,14 +17290,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1600;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -17170,11 +17342,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1616;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -17196,7 +17368,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1528;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1528;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
 static constexpr dart::compiler::target::word
@@ -17204,7 +17376,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1552;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -17221,14 +17399,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1656;
+    AOT_Thread_callback_stack_return_offset = 1648;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -17710,8 +17888,8 @@
     AOT_SuspendState_error_callback_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     40;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -17720,9 +17898,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1624;
+    AOT_Thread_active_exception_offset = 1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1632;
+    AOT_Thread_active_stacktrace_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -17746,7 +17924,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1704;
+    1728;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -17759,13 +17937,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1744;
+    1768;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1712;
+    AOT_Thread_double_truncate_round_supported_offset = 1736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1752;
+    AOT_Thread_service_extension_stream_offset = 1776;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -17782,7 +17960,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1664;
+    AOT_Thread_execution_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -17804,14 +17982,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1640;
+    AOT_Thread_global_object_pool_offset = 1664;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1696;
+    AOT_Thread_exit_through_ffi_offset = 1720;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1760;
+    1784;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -17856,11 +18034,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1648;
+    1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1656;
+    AOT_Thread_saved_shadow_call_stack_offset = 1680;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1672;
+    AOT_Thread_safepoint_state_offset = 1696;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -17882,7 +18060,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1592;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1592;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
@@ -17890,7 +18068,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1616;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -17907,14 +18091,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1680;
+    1704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1688;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1720;
+    AOT_Thread_callback_stack_return_offset = 1712;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1728;
+    1752;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -18397,8 +18581,8 @@
     AOT_SuspendState_error_callback_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 4;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    12;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 12;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     24;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 8;
@@ -18407,9 +18591,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 820;
+    AOT_Thread_active_exception_offset = 832;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 824;
+    AOT_Thread_active_stacktrace_offset = 836;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 272;
 static constexpr dart::compiler::target::word
@@ -18433,7 +18617,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 200;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    860;
+    872;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -18446,13 +18630,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 140;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    888;
+    896;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 864;
+    AOT_Thread_double_truncate_round_supported_offset = 876;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 892;
+    AOT_Thread_service_extension_stream_offset = 900;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -18469,7 +18653,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 252;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 840;
+    AOT_Thread_execution_state_offset = 852;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
@@ -18491,14 +18675,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 828;
+    AOT_Thread_global_object_pool_offset = 840;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 136;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 856;
+    AOT_Thread_exit_through_ffi_offset = 868;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    896;
+    904;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -18542,11 +18726,11 @@
     112;
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 832;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 844;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 836;
+    AOT_Thread_saved_shadow_call_stack_offset = 848;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 844;
+    AOT_Thread_safepoint_state_offset = 856;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 244;
 static constexpr dart::compiler::target::word
@@ -18568,7 +18752,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 804;
+    AOT_Thread_suspend_state_await_entry_point_offset = 804;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 800;
 static constexpr dart::compiler::target::word
@@ -18576,7 +18760,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 816;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 816;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 824;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 828;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -18593,14 +18783,14 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    848;
+    860;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 852;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 872;
+    AOT_Thread_callback_stack_return_offset = 864;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 880;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 328;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    880;
+    888;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
@@ -19083,8 +19273,8 @@
     AOT_SuspendState_error_callback_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_SuspendState_frame_size_offset = 8;
-static constexpr dart::compiler::target::word AOT_SuspendState_future_offset =
-    24;
+static constexpr dart::compiler::target::word
+    AOT_SuspendState_function_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_SuspendState_payload_offset =
     48;
 static constexpr dart::compiler::target::word AOT_SuspendState_pc_offset = 16;
@@ -19093,9 +19283,9 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1616;
+    AOT_Thread_active_exception_offset = 1640;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1624;
+    AOT_Thread_active_stacktrace_offset = 1648;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_entry_point_offset = 520;
 static constexpr dart::compiler::target::word
@@ -19119,7 +19309,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 376;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1696;
+    1720;
 static constexpr dart::compiler::target::word
     AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
@@ -19132,13 +19322,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 256;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1736;
+    1760;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1704;
+    AOT_Thread_double_truncate_round_supported_offset = 1728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_service_extension_stream_offset = 1744;
+    AOT_Thread_service_extension_stream_offset = 1768;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -19155,7 +19345,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 480;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1656;
+    AOT_Thread_execution_state_offset = 1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
@@ -19177,14 +19367,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1632;
+    AOT_Thread_global_object_pool_offset = 1656;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1688;
+    AOT_Thread_exit_through_ffi_offset = 1712;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1752;
+    1776;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -19229,11 +19419,11 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1640;
+    1664;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1648;
+    AOT_Thread_saved_shadow_call_stack_offset = 1672;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1664;
+    AOT_Thread_safepoint_state_offset = 1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 464;
 static constexpr dart::compiler::target::word
@@ -19255,7 +19445,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_store_buffer_block_offset = 152;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_await_async_entry_point_offset = 1584;
+    AOT_Thread_suspend_state_await_entry_point_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_init_async_entry_point_offset = 1576;
 static constexpr dart::compiler::target::word
@@ -19263,7 +19453,13 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
 static constexpr dart::compiler::target::word
-    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1608;
+    AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+static constexpr dart::compiler::target::word
+    AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1632;
 static constexpr dart::compiler::target::word
     AOT_Thread_top_exit_frame_info_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -19280,14 +19476,14 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1672;
+    1696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1680;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1712;
+    AOT_Thread_callback_stack_return_offset = 1704;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1736;
 static constexpr dart::compiler::target::word
     AOT_Thread_jump_to_frame_entry_point_offset = 632;
 static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
-    1720;
+    1744;
 static constexpr dart::compiler::target::word
     AOT_TsanUtils_setjmp_function_offset = 0;
 static constexpr dart::compiler::target::word
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index 8fa14a3..04aa47b 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -192,7 +192,7 @@
   FIELD(SubtypeTestCache, cache_offset)                                        \
   FIELD(SuspendState, error_callback_offset)                                   \
   FIELD(SuspendState, frame_size_offset)                                       \
-  FIELD(SuspendState, future_offset)                                           \
+  FIELD(SuspendState, function_data_offset)                                    \
   FIELD(SuspendState, payload_offset)                                          \
   FIELD(SuspendState, pc_offset)                                               \
   FIELD(SuspendState, then_callback_offset)                                    \
@@ -281,10 +281,13 @@
                                                                                \
   FIELD(Thread, stack_overflow_shared_without_fpu_regs_stub_offset)            \
   FIELD(Thread, store_buffer_block_offset)                                     \
-  FIELD(Thread, suspend_state_await_async_entry_point_offset)                  \
+  FIELD(Thread, suspend_state_await_entry_point_offset)                        \
   FIELD(Thread, suspend_state_init_async_entry_point_offset)                   \
   FIELD(Thread, suspend_state_return_async_entry_point_offset)                 \
   FIELD(Thread, suspend_state_return_async_not_future_entry_point_offset)      \
+  FIELD(Thread, suspend_state_init_async_star_entry_point_offset)              \
+  FIELD(Thread, suspend_state_yield_async_star_entry_point_offset)             \
+  FIELD(Thread, suspend_state_return_async_star_entry_point_offset)            \
   FIELD(Thread, suspend_state_handle_exception_entry_point_offset)             \
   FIELD(Thread, top_exit_frame_info_offset)                                    \
   FIELD(Thread, top_offset)                                                    \
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index 1049101..5c9fdec 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -1287,7 +1287,7 @@
   const Register kTemp = SuspendStubABI::kTempReg;
   const Register kFrameSize = SuspendStubABI::kFrameSizeReg;
   const Register kSuspendState = SuspendStubABI::kSuspendStateReg;
-  const Register kFuture = SuspendStubABI::kFutureReg;
+  const Register kFunctionData = SuspendStubABI::kFunctionDataReg;
   const Register kSrcFrame = SuspendStubABI::kSrcFrameReg;
   const Register kDstFrame = SuspendStubABI::kDstFrameReg;
   Label alloc_slow_case, alloc_done, init_done, old_gen_object, call_await;
@@ -1308,7 +1308,7 @@
   __ CompareClassId(kSuspendState, kSuspendStateCid, kTemp);
   __ BranchIf(EQUAL, &init_done);
 
-  __ MoveRegister(kFuture, kSuspendState);
+  __ MoveRegister(kFunctionData, kSuspendState);
   __ Comment("Allocate SuspendState");
 
   // Check for allocation tracing.
@@ -1361,8 +1361,8 @@
       FieldAddress(kSuspendState, target::SuspendState::frame_size_offset()));
   __ StoreCompressedIntoObjectNoBarrier(
       kSuspendState,
-      FieldAddress(kSuspendState, target::SuspendState::future_offset()),
-      kFuture);
+      FieldAddress(kSuspendState, target::SuspendState::function_data_offset()),
+      kFunctionData);
 
   {
 #if defined(TARGET_ARCH_ARM64) || defined(TARGET_ARCH_RISCV32) ||              \
@@ -1474,8 +1474,8 @@
   __ PushRegister(kFrameSize);  // Save frame size.
   __ PushObject(NullObject());  // Make space on stack for the return value.
   __ SmiTag(kFrameSize);
-  __ PushRegister(kFrameSize);  // Pass frame size to runtime entry.
-  __ PushRegister(kFuture);     // Pass future.
+  __ PushRegister(kFrameSize);     // Pass frame size to runtime entry.
+  __ PushRegister(kFunctionData);  // Pass function data.
   __ CallRuntime(kAllocateSuspendStateRuntimeEntry, 2);
   __ Drop(2);                     // Drop arguments
   __ PopRegister(kSuspendState);  // Get result.
@@ -1502,10 +1502,15 @@
   __ Jump(&call_await);
 }
 
-void StubCodeCompiler::GenerateAwaitAsyncStub(Assembler* assembler) {
+void StubCodeCompiler::GenerateAwaitStub(Assembler* assembler) {
+  GenerateSuspendStub(assembler,
+                      target::Thread::suspend_state_await_entry_point_offset());
+}
+
+void StubCodeCompiler::GenerateYieldAsyncStarStub(Assembler* assembler) {
   GenerateSuspendStub(
       assembler,
-      target::Thread::suspend_state_await_async_entry_point_offset());
+      target::Thread::suspend_state_yield_async_star_entry_point_offset());
 }
 
 void StubCodeCompiler::GenerateInitSuspendableFunctionStub(
@@ -1531,6 +1536,12 @@
       assembler, target::Thread::suspend_state_init_async_entry_point_offset());
 }
 
+void StubCodeCompiler::GenerateInitAsyncStarStub(Assembler* assembler) {
+  GenerateInitSuspendableFunctionStub(
+      assembler,
+      target::Thread::suspend_state_init_async_star_entry_point_offset());
+}
+
 void StubCodeCompiler::GenerateResumeStub(Assembler* assembler) {
   const Register kSuspendState = ResumeStubABI::kSuspendStateReg;
   const Register kTemp = ResumeStubABI::kTempReg;
@@ -1674,6 +1685,12 @@
           suspend_state_return_async_not_future_entry_point_offset());
 }
 
+void StubCodeCompiler::GenerateReturnAsyncStarStub(Assembler* assembler) {
+  GenerateReturnStub(
+      assembler,
+      target::Thread::suspend_state_return_async_star_entry_point_offset());
+}
+
 void StubCodeCompiler::GenerateAsyncExceptionHandlerStub(Assembler* assembler) {
   const Register kSuspendState = AsyncExceptionHandlerStubABI::kSuspendStateReg;
   ASSERT(kSuspendState != kExceptionObjectReg);
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index 722f126..b63efec 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -532,18 +532,18 @@
   static const Register kResultReg = R0;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = R0;
   static const Register kTempReg = R1;
   static const Register kFrameSizeReg = R2;
   static const Register kSuspendStateReg = R3;
-  static const Register kFutureReg = R4;
+  static const Register kFunctionDataReg = R4;
   static const Register kSrcFrameReg = R8;
   static const Register kDstFrameReg = R9;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = R0;
 };
@@ -563,7 +563,8 @@
   static const Register kStackTraceReg = R4;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = R2;
 };
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index da0c132..8ec2b3e 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -366,18 +366,18 @@
   static const Register kResultReg = R0;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = R0;
   static const Register kTempReg = R1;
   static const Register kFrameSizeReg = R2;
   static const Register kSuspendStateReg = R3;
-  static const Register kFutureReg = R4;
+  static const Register kFunctionDataReg = R4;
   static const Register kSrcFrameReg = R5;
   static const Register kDstFrameReg = R6;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = R0;
 };
@@ -397,7 +397,8 @@
   static const Register kStackTraceReg = R4;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = R2;
 };
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index 2fa9890..1169aa4 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -260,16 +260,16 @@
   static const Register kResultReg = EAX;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = EAX;
   static const Register kTempReg = EDX;
   static const Register kFrameSizeReg = ECX;
   static const Register kSuspendStateReg = EBX;
-  static const Register kFutureReg = EDI;
+  static const Register kFunctionDataReg = EDI;
   // Can reuse THR.
   static const Register kSrcFrameReg = ESI;
-  // Can reuse kFutureReg.
+  // Can reuse kFunctionDataReg.
   static const Register kDstFrameReg = EDI;
 
   // Number of bytes to skip after
@@ -278,7 +278,7 @@
   static const intptr_t kResumePcDistance = 5;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = EAX;
 };
@@ -298,7 +298,8 @@
   static const Register kStackTraceReg = EDI;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = EBX;
 };
diff --git a/runtime/vm/constants_riscv.h b/runtime/vm/constants_riscv.h
index 8d7a085..4fb57fc 100644
--- a/runtime/vm/constants_riscv.h
+++ b/runtime/vm/constants_riscv.h
@@ -378,18 +378,18 @@
   static constexpr Register kResultReg = A0;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = A0;
   static const Register kTempReg = T0;
   static const Register kFrameSizeReg = T1;
   static const Register kSuspendStateReg = T2;
-  static const Register kFutureReg = T3;
+  static const Register kFunctionDataReg = T3;
   static const Register kSrcFrameReg = T4;
   static const Register kDstFrameReg = T5;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = A0;
 };
@@ -409,7 +409,8 @@
   static const Register kStackTraceReg = T4;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = T1;
 };
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index 1f22126..51828ea 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -335,13 +335,13 @@
   static const Register kResultReg = RAX;
 };
 
-// ABI for SuspendStub (AwaitAsyncStub).
+// ABI for SuspendStub (AwaitStub, YieldAsyncStarStub).
 struct SuspendStubABI {
   static const Register kArgumentReg = RAX;
   static const Register kTempReg = RDX;
   static const Register kFrameSizeReg = RCX;
   static const Register kSuspendStateReg = RBX;
-  static const Register kFutureReg = R8;
+  static const Register kFunctionDataReg = R8;
   static const Register kSrcFrameReg = RSI;
   static const Register kDstFrameReg = RDI;
 
@@ -351,7 +351,7 @@
   static const intptr_t kResumePcDistance = 5;
 };
 
-// ABI for InitSuspendableFunctionStub (InitAsyncStub).
+// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
 struct InitSuspendableFunctionStubABI {
   static const Register kTypeArgsReg = RAX;
 };
@@ -371,7 +371,8 @@
   static const Register kStackTraceReg = RDI;
 };
 
-// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub).
+// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
+// ReturnAsyncStarStub).
 struct ReturnStubABI {
   static const Register kSuspendStateReg = RBX;
 };
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h
index d9b9ddf..bb496ef 100644
--- a/runtime/vm/kernel.h
+++ b/runtime/vm/kernel.h
@@ -56,8 +56,6 @@
   int value_;
 };
 
-const uint8_t kNativeYieldFlags = 0x2;
-
 enum LogicalOperator { kAnd, kOr };
 
 struct ProgramBinary {
diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h
index 6d7b33e..08d9da7 100644
--- a/runtime/vm/kernel_binary.h
+++ b/runtime/vm/kernel_binary.h
@@ -213,6 +213,12 @@
 };
 
 // Keep in sync with package:kernel/lib/ast.dart
+enum YieldStatementFlags {
+  kYieldStatementFlagYieldStar = 1 << 0,
+  kYieldStatementFlagNative = 1 << 1,
+};
+
+// Keep in sync with package:kernel/lib/ast.dart
 enum class NamedTypeFlags : uint8_t {
   kIsRequired = 1 << 0,
 };
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 3dcbc81..bab3326 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -2039,6 +2039,16 @@
     function.set_is_inlinable(false);
     function.set_is_visible(true);
     ASSERT(function.IsCompactAsyncFunction());
+  } else if (function_node_helper.async_marker_ ==
+             FunctionNodeHelper::kAsyncStar) {
+    if (!FLAG_precompiled_mode) {
+      FATAL("Compact async* functions are only supported in AOT mode.");
+    }
+    function.set_modifier(UntaggedFunction::kAsyncGen);
+    function.set_is_debuggable(true);
+    function.set_is_inlinable(false);
+    function.set_is_visible(true);
+    ASSERT(function.IsCompactAsyncStarFunction());
   } else {
     ASSERT(function_node_helper.async_marker_ == FunctionNodeHelper::kSync);
     function.set_is_debuggable(function_node_helper.dart_async_marker_ ==
@@ -2063,6 +2073,7 @@
         break;
     }
     ASSERT(!function.IsCompactAsyncFunction());
+    ASSERT(!function.IsCompactAsyncStarFunction());
   }
 
   if (!native_name.IsNull()) {
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index a9fffe2..da4f734 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -26036,7 +26036,7 @@
                     "symbolize stack traces in the precompiled runtime.");
 
 SuspendStatePtr SuspendState::New(intptr_t frame_size,
-                                  const Instance& future,
+                                  const Instance& function_data,
                                   Heap::Space space) {
   SuspendState& result = SuspendState::Handle();
   {
@@ -26047,7 +26047,7 @@
     result ^= raw;
     result.set_frame_size(frame_size);
     result.set_pc(0);
-    result.set_future(future);
+    result.set_function_data(function_data);
   }
   return result.ptr();
 }
@@ -26061,8 +26061,8 @@
   StoreNonPointer(&untag()->pc_, pc);
 }
 
-void SuspendState::set_future(const Instance& future) const {
-  untag()->set_future(future.ptr());
+void SuspendState::set_function_data(const Instance& function_data) const {
+  untag()->set_function_data(function_data.ptr());
 }
 
 const char* SuspendState::ToCString() const {
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index bea56ec..b5eaa99 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -3171,7 +3171,7 @@
   // Returns true if parameters of this function are copied into the frame
   // in the function prologue.
   bool MakesCopyOfParameters() const {
-    return HasOptionalParameters() || IsCompactAsyncFunction();
+    return HasOptionalParameters() || IsSuspendableFunction();
   }
 
 #if defined(DART_PRECOMPILED_RUNTIME)
@@ -3570,12 +3570,25 @@
     return modifier() == UntaggedFunction::kAsync;
   }
 
-  // TODO(alexmarkov): replace this predicate with IsAsyncFunction() after
-  // old async functions are removed.
+  // TODO(dartbug.com/48378): replace this predicate with IsAsyncFunction()
+  // after old async functions are removed.
   bool IsCompactAsyncFunction() const {
     return IsAsyncFunction() && is_debuggable();
   }
 
+  // TODO(dartbug.com/48378): replace this predicate with IsAsyncGenerator()
+  // after old async* functions are removed.
+  bool IsCompactAsyncStarFunction() const {
+    return IsAsyncGenerator() && is_debuggable();
+  }
+
+  // Returns true for functions which execution can be suspended
+  // using Suspend/Resume stubs. Such functions have an artificial
+  // :suspend_state local variable at the fixed location of the frame.
+  bool IsSuspendableFunction() const {
+    return IsCompactAsyncFunction() || IsCompactAsyncStarFunction();
+  }
+
   // Recognise synthetic sync-yielding functions like the inner-most:
   //   user_func /* was async */ {
   //      :async_op(..) yielding {
@@ -11804,8 +11817,8 @@
     return OFFSET_OF(UntaggedSuspendState, frame_size_);
   }
   static intptr_t pc_offset() { return OFFSET_OF(UntaggedSuspendState, pc_); }
-  static intptr_t future_offset() {
-    return OFFSET_OF(UntaggedSuspendState, future_);
+  static intptr_t function_data_offset() {
+    return OFFSET_OF(UntaggedSuspendState, function_data_);
   }
   static intptr_t then_callback_offset() {
     return OFFSET_OF(UntaggedSuspendState, then_callback_);
@@ -11818,10 +11831,10 @@
   }
 
   static SuspendStatePtr New(intptr_t frame_size,
-                             const Instance& future,
+                             const Instance& function_data,
                              Heap::Space space = Heap::kNew);
 
-  InstancePtr future() const { return untag()->future(); }
+  InstancePtr function_data() const { return untag()->function_data(); }
   uword pc() const { return untag()->pc_; }
 
   // Returns Code object corresponding to the suspended function.
@@ -11830,7 +11843,7 @@
  private:
   void set_frame_size(intptr_t frame_size) const;
   void set_pc(uword pc) const;
-  void set_future(const Instance& future) const;
+  void set_function_data(const Instance& function_data) const;
 
   FINAL_HEAP_OBJECT_IMPLEMENTATION(SuspendState, Instance);
   friend class Class;
diff --git a/runtime/vm/object_store.cc b/runtime/vm/object_store.cc
index 7cc7f02..f2959f4 100644
--- a/runtime/vm/object_store.cc
+++ b/runtime/vm/object_store.cc
@@ -286,8 +286,17 @@
   cls =
       async_lib.LookupClassAllowPrivate(Symbols::_AsyncStarStreamController());
   ASSERT(!cls.IsNull());
+  RELEASE_ASSERT(cls.EnsureIsFinalized(thread) == Error::null());
   set_async_star_stream_controller(cls);
 
+  function = cls.LookupFunctionAllowPrivate(Symbols::add());
+  ASSERT(!function.IsNull());
+  set_async_star_stream_controller_add(function);
+
+  function = cls.LookupFunctionAllowPrivate(Symbols::addStream());
+  ASSERT(!function.IsNull());
+  set_async_star_stream_controller_add_stream(function);
+
   if (FLAG_async_debugger) {
     // Disable debugging and inlining of all functions on the
     // _AsyncStarStreamController class.
@@ -301,6 +310,10 @@
     }
   }
 
+  cls = async_lib.LookupClassAllowPrivate(Symbols::Stream());
+  ASSERT(!cls.IsNull());
+  set_stream_class(cls);
+
   cls = async_lib.LookupClassAllowPrivate(Symbols::_SuspendState());
   ASSERT(!cls.IsNull());
   const auto& error = cls.EnsureIsFinalized(thread);
@@ -310,9 +323,9 @@
   ASSERT(!function.IsNull());
   set_suspend_state_init_async(function);
 
-  function = cls.LookupFunctionAllowPrivate(Symbols::_awaitAsync());
+  function = cls.LookupFunctionAllowPrivate(Symbols::_await());
   ASSERT(!function.IsNull());
-  set_suspend_state_await_async(function);
+  set_suspend_state_await(function);
 
   function = cls.LookupFunctionAllowPrivate(Symbols::_returnAsync());
   ASSERT(!function.IsNull());
@@ -322,6 +335,18 @@
   ASSERT(!function.IsNull());
   set_suspend_state_return_async_not_future(function);
 
+  function = cls.LookupFunctionAllowPrivate(Symbols::_initAsyncStar());
+  ASSERT(!function.IsNull());
+  set_suspend_state_init_async_star(function);
+
+  function = cls.LookupFunctionAllowPrivate(Symbols::_yieldAsyncStar());
+  ASSERT(!function.IsNull());
+  set_suspend_state_yield_async_star(function);
+
+  function = cls.LookupFunctionAllowPrivate(Symbols::_returnAsyncStar());
+  ASSERT(!function.IsNull());
+  set_suspend_state_return_async_star(function);
+
   function = cls.LookupFunctionAllowPrivate(Symbols::_handleException());
   ASSERT(!function.IsNull());
   set_suspend_state_handle_exception(function);
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index ee7844a..674d1b4 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -165,15 +165,21 @@
   RW(Function, simple_instance_of_true_function)                               \
   RW(Function, simple_instance_of_false_function)                              \
   RW(Function, async_star_move_next_helper)                                    \
+  RW(Function, async_star_stream_controller_add)                               \
+  RW(Function, async_star_stream_controller_add_stream)                        \
   RW(Function, complete_on_async_return)                                       \
   RW(Function, complete_with_no_future_on_async_return)                        \
   RW(Function, complete_on_async_error)                                        \
   RW(Function, suspend_state_init_async)                                       \
-  RW(Function, suspend_state_await_async)                                      \
+  RW(Function, suspend_state_await)                                            \
   RW(Function, suspend_state_return_async)                                     \
   RW(Function, suspend_state_return_async_not_future)                          \
+  RW(Function, suspend_state_init_async_star)                                  \
+  RW(Function, suspend_state_yield_async_star)                                 \
+  RW(Function, suspend_state_return_async_star)                                \
   RW(Function, suspend_state_handle_exception)                                 \
   RW(Class, async_star_stream_controller)                                      \
+  RW(Class, stream_class)                                                      \
   ARW_RELAXED(Smi, future_timeout_future_index)                                \
   ARW_RELAXED(Smi, future_wait_future_index)                                   \
   RW(CompressedStackMaps, canonicalized_stack_map_entries)                     \
@@ -244,11 +250,14 @@
   RW(Code, type_parameter_tts_stub)                                            \
   RW(Code, unreachable_tts_stub)                                               \
   RW(Code, slow_tts_stub)                                                      \
-  RW(Code, await_async_stub)                                                   \
+  RW(Code, await_stub)                                                         \
   RW(Code, init_async_stub)                                                    \
   RW(Code, resume_stub)                                                        \
   RW(Code, return_async_stub)                                                  \
   RW(Code, return_async_not_future_stub)                                       \
+  RW(Code, init_async_star_stub)                                               \
+  RW(Code, yield_async_star_stub)                                              \
+  RW(Code, return_async_star_stub)                                             \
   RW(Array, dispatch_table_code_entries)                                       \
   RW(GrowableObjectArray, instructions_tables)                                 \
   RW(Array, obfuscation_map)                                                   \
@@ -324,11 +333,14 @@
   DO(init_instance_field_stub, InitInstanceField)                              \
   DO(init_late_instance_field_stub, InitLateInstanceField)                     \
   DO(init_late_final_instance_field_stub, InitLateFinalInstanceField)          \
-  DO(await_async_stub, AwaitAsync)                                             \
+  DO(await_stub, Await)                                                        \
   DO(init_async_stub, InitAsync)                                               \
   DO(resume_stub, Resume)                                                      \
   DO(return_async_stub, ReturnAsync)                                           \
   DO(return_async_not_future_stub, ReturnAsyncNotFuture)                       \
+  DO(init_async_star_stub, InitAsyncStar)                                      \
+  DO(yield_async_star_stub, YieldAsyncStar)                                    \
+  DO(return_async_star_stub, ReturnAsyncStar)                                  \
   DO(instance_of_stub, InstanceOf)
 
 #define ISOLATE_OBJECT_STORE_FIELD_LIST(R_, RW)                                \
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 5677ff9..6b5dab8 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -3292,10 +3292,15 @@
   intptr_t frame_size_;
   uword pc_;
 
-  COMPRESSED_POINTER_FIELD(InstancePtr, future)
+  // Holds function-specific object which is returned from
+  // SuspendState.init* method.
+  // For async functions: _Future instance.
+  // For async* functions: _AsyncStarStreamController instance.
+  COMPRESSED_POINTER_FIELD(InstancePtr, function_data)
+
   COMPRESSED_POINTER_FIELD(ClosurePtr, then_callback)
   COMPRESSED_POINTER_FIELD(ClosurePtr, error_callback)
-  VISIT_FROM(future)
+  VISIT_FROM(function_data)
   VISIT_TO(error_callback)
 
  public:
diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc
index 749e1d2..a7e7a92 100644
--- a/runtime/vm/raw_object_fields.cc
+++ b/runtime/vm/raw_object_fields.cc
@@ -191,7 +191,7 @@
   F(RegExp, two_byte_sticky_)                                                  \
   F(RegExp, external_one_byte_sticky_)                                         \
   F(RegExp, external_two_byte_sticky_)                                         \
-  F(SuspendState, future_)                                                     \
+  F(SuspendState, function_data_)                                              \
   F(SuspendState, then_callback_)                                              \
   F(SuspendState, error_callback_)                                             \
   F(WeakProperty, key_)                                                        \
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index b1b3345..ac9d41a 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -711,13 +711,14 @@
 
 // Allocate a SuspendState object.
 // Arg0: frame size.
-// Arg1: future.
+// Arg1: function data.
 // Return value: newly allocated object.
 DEFINE_RUNTIME_ENTRY(AllocateSuspendState, 2) {
   const Smi& frame_size = Smi::CheckedHandle(zone, arguments.ArgAt(0));
-  const Instance& future = Instance::CheckedHandle(zone, arguments.ArgAt(1));
+  const Instance& function_data =
+      Instance::CheckedHandle(zone, arguments.ArgAt(1));
   const SuspendState& result = SuspendState::Handle(
-      zone, SuspendState::New(frame_size.Value(), future,
+      zone, SuspendState::New(frame_size.Value(), function_data,
                               SpaceForRuntimeAllocation()));
   arguments.SetReturn(result);
 }
diff --git a/runtime/vm/stack_trace.cc b/runtime/vm/stack_trace.cc
index d172704..a5c7bdd 100644
--- a/runtime/vm/stack_trace.cc
+++ b/runtime/vm/stack_trace.cc
@@ -70,7 +70,7 @@
       callback_instance_(Object::Handle(zone)),
       future_impl_class(Class::Handle(zone)),
       future_listener_class(Class::Handle(zone)),
-      async_start_stream_controller_class(Class::Handle(zone)),
+      async_star_stream_controller_class(Class::Handle(zone)),
       stream_controller_class(Class::Handle(zone)),
       sync_stream_controller_class(Class::Handle(zone)),
       controller_subscription_class(Class::Handle(zone)),
@@ -95,9 +95,9 @@
       async_lib.LookupClassAllowPrivate(Symbols::_FutureListener());
   ASSERT(!future_listener_class.IsNull());
   // - async*:
-  async_start_stream_controller_class =
+  async_star_stream_controller_class =
       async_lib.LookupClassAllowPrivate(Symbols::_AsyncStarStreamController());
-  ASSERT(!async_start_stream_controller_class.IsNull());
+  ASSERT(!async_star_stream_controller_class.IsNull());
   stream_controller_class =
       async_lib.LookupClassAllowPrivate(Symbols::_StreamController());
   ASSERT(!stream_controller_class.IsNull());
@@ -130,7 +130,7 @@
   ASSERT(!future_listener_result_field.IsNull());
   // - async*:
   controller_controller_field =
-      async_start_stream_controller_class.LookupFieldAllowPrivate(
+      async_star_stream_controller_class.LookupFieldAllowPrivate(
           Symbols::controller());
   ASSERT(!controller_controller_field.IsNull());
   state_field =
@@ -163,14 +163,19 @@
 
 ClosurePtr CallerClosureFinder::FindCallerInAsyncGenClosure(
     const Context& receiver_context) {
-  // Get the async* _StreamController.
+  // Get the async* _AsyncStarStreamController.
   context_entry_ = receiver_context.At(Context::kControllerIndex);
-  ASSERT(context_entry_.IsInstance());
-  ASSERT(context_entry_.GetClassId() ==
-         async_start_stream_controller_class.id());
+  return FindCallerInAsyncStarStreamController(context_entry_);
+}
 
-  const Instance& controller = Instance::Cast(context_entry_);
-  controller_ = controller.GetField(controller_controller_field);
+ClosurePtr CallerClosureFinder::FindCallerInAsyncStarStreamController(
+    const Object& async_star_stream_controller) {
+  ASSERT(async_star_stream_controller.IsInstance());
+  ASSERT(async_star_stream_controller.GetClassId() ==
+         async_star_stream_controller_class.id());
+
+  controller_ = Instance::Cast(async_star_stream_controller)
+                    .GetField(controller_controller_field);
   ASSERT(!controller_.IsNull());
   ASSERT(controller_.GetClassId() == sync_stream_controller_class.id());
 
@@ -269,8 +274,15 @@
 
 ClosurePtr CallerClosureFinder::FindCallerFromSuspendState(
     const SuspendState& suspend_state) {
-  future_ = suspend_state.future();
-  return GetCallerInFutureImpl(future_);
+  context_entry_ = suspend_state.function_data();
+  if (context_entry_.GetClassId() == future_impl_class.id()) {
+    return GetCallerInFutureImpl(context_entry_);
+  } else if (context_entry_.GetClassId() ==
+             async_star_stream_controller_class.id()) {
+    return FindCallerInAsyncStarStreamController(context_entry_);
+  } else {
+    UNREACHABLE();
+  }
 }
 
 ClosurePtr CallerClosureFinder::UnwrapAsyncThen(const Closure& closure) {
@@ -289,14 +301,15 @@
 
 bool CallerClosureFinder::IsCompactAsyncCallback(const Function& function) {
   parent_function_ = function.parent_function();
-  return parent_function_.recognized_kind() ==
-         MethodRecognizer::kSuspendState_createAsyncCallbacks;
+  auto kind = parent_function_.recognized_kind();
+  return (kind == MethodRecognizer::kSuspendState_createAsyncCallbacks) ||
+         (kind == MethodRecognizer::kSuspendState_createAsyncStarCallback);
 }
 
 SuspendStatePtr CallerClosureFinder::GetSuspendStateFromAsyncCallback(
     const Closure& closure) {
   ASSERT(IsCompactAsyncCallback(Function::Handle(closure.function())));
-  // Async handler only captures the receiver (SuspendState).
+  // Async/async* handler only captures the receiver (SuspendState).
   receiver_context_ = closure.context();
   RELEASE_ASSERT(receiver_context_.num_variables() == 1);
   return SuspendState::RawCast(receiver_context_.At(0));
@@ -469,7 +482,8 @@
     return Closure::null();
   }
 
-  if (function.IsCompactAsyncFunction()) {
+  if (function.IsCompactAsyncFunction() ||
+      function.IsCompactAsyncStarFunction()) {
     auto& suspend_state = Object::Handle(
         zone, *reinterpret_cast<ObjectPtr*>(LocalVarAddress(
                   frame->fp(), runtime_frame_layout.FrameSlotForVariableIndex(
diff --git a/runtime/vm/stack_trace.h b/runtime/vm/stack_trace.h
index bab4fd1..2e33b71 100644
--- a/runtime/vm/stack_trace.h
+++ b/runtime/vm/stack_trace.h
@@ -31,6 +31,12 @@
   // Returns either the `onData` or the Future awaiter.
   ClosurePtr FindCallerInAsyncGenClosure(const Context& receiver_context);
 
+  // Find caller closure from an _AsyncStarStreamController instance
+  // corresponding to async* function.
+  // Returns either the `onData` or the Future awaiter.
+  ClosurePtr FindCallerInAsyncStarStreamController(
+      const Object& async_star_stream_controller);
+
   // Find caller closure from a function receiver closure.
   // For async* functions, async functions, `Future.timeout` and `Future.wait`,
   // we can do this by finding and following their awaited Futures.
@@ -40,11 +46,11 @@
   ClosurePtr FindCallerFromSuspendState(const SuspendState& suspend_state);
 
   // Returns true if given closure function is a Future callback
-  // corresponding to an async function.
+  // corresponding to an async/async* function or async* body callback.
   bool IsCompactAsyncCallback(const Function& function);
 
-  // Returns SuspendState from the given Future callback which corresponds
-  // to an async function.
+  // Returns SuspendState from the given callback which corresponds
+  // to an async/async* function.
   SuspendStatePtr GetSuspendStateFromAsyncCallback(const Closure& closure);
 
   // Finds the awaited Future from an async function receiver closure.
@@ -88,7 +94,7 @@
 
   Class& future_impl_class;
   Class& future_listener_class;
-  Class& async_start_stream_controller_class;
+  Class& async_star_stream_controller_class;
   Class& stream_controller_class;
   Class& sync_stream_controller_class;
   Class& controller_subscription_class;
diff --git a/runtime/vm/stub_code_list.h b/runtime/vm/stub_code_list.h
index b035700..f9110be 100644
--- a/runtime/vm/stub_code_list.h
+++ b/runtime/vm/stub_code_list.h
@@ -149,11 +149,14 @@
   V(InstantiateTypeArgumentsMayShareInstantiatorTA)                            \
   V(InstantiateTypeArgumentsMayShareFunctionTA)                                \
   V(NoSuchMethodDispatcher)                                                    \
-  V(AwaitAsync)                                                                \
+  V(Await)                                                                     \
   V(InitAsync)                                                                 \
   V(Resume)                                                                    \
   V(ReturnAsync)                                                               \
   V(ReturnAsyncNotFuture)                                                      \
+  V(InitAsyncStar)                                                             \
+  V(YieldAsyncStar)                                                            \
+  V(ReturnAsyncStar)                                                           \
   V(AsyncExceptionHandler)                                                     \
   V(UnknownDartCode)
 
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 34053dc..7eb6d2d 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -241,6 +241,7 @@
   V(SpaceWhereNewLine, " where\n")                                             \
   V(StackOverflowError, "StackOverflowError")                                  \
   V(StackTraceParameter, ":stack_trace")                                       \
+  V(Stream, "Stream")                                                          \
   V(StringBase, "_StringBase")                                                 \
   V(Struct, "Struct")                                                          \
   V(SubtypeTestCache, "SubtypeTestCache")                                      \
@@ -410,7 +411,7 @@
   V(_WeakProperty, "_WeakProperty")                                            \
   V(_WeakReferenceImpl, "_WeakReferenceImpl")                                  \
   V(_typedDataBase, "_typedDataBase")                                          \
-  V(_awaitAsync, "_awaitAsync")                                                \
+  V(_await, "_await")                                                          \
   V(_classRangeCheck, "_classRangeCheck")                                      \
   V(_ensureScheduleImmediate, "_ensureScheduleImmediate")                      \
   V(_future, "_future")                                                        \
@@ -420,6 +421,7 @@
   V(_handleNativeFinalizerMessage, "_handleNativeFinalizerMessage")            \
   V(_hasValue, "_hasValue")                                                    \
   V(_initAsync, "_initAsync")                                                  \
+  V(_initAsyncStar, "_initAsyncStar")                                          \
   V(_instanceOf, "_instanceOf")                                                \
   V(_listGetAt, "_listGetAt")                                                  \
   V(_listLength, "_listLength")                                                \
@@ -439,6 +441,7 @@
   V(_resultOrListeners, "_resultOrListeners")                                  \
   V(_returnAsync, "_returnAsync")                                              \
   V(_returnAsyncNotFuture, "_returnAsyncNotFuture")                            \
+  V(_returnAsyncStar, "_returnAsyncStar")                                      \
   V(_runExtension, "_runExtension")                                            \
   V(_runPendingImmediateCallback, "_runPendingImmediateCallback")              \
   V(_scanFlags, "_scanFlags")                                                  \
@@ -451,6 +454,9 @@
   V(_toString, "_toString")                                                    \
   V(_varData, "_varData")                                                      \
   V(_wordCharacterMap, "_wordCharacterMap")                                    \
+  V(_yieldAsyncStar, "_yieldAsyncStar")                                        \
+  V(add, "add")                                                                \
+  V(addStream, "addStream")                                                    \
   V(callback, "callback")                                                      \
   V(capture_length, ":capture_length")                                         \
   V(capture_start_index, ":capture_start_index")                               \
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 32dc3ba..dc5b90b 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -168,9 +168,12 @@
 
 #define CACHED_FUNCTION_ENTRY_POINTS_LIST(V)                                   \
   V(suspend_state_init_async)                                                  \
-  V(suspend_state_await_async)                                                 \
+  V(suspend_state_await)                                                       \
   V(suspend_state_return_async)                                                \
   V(suspend_state_return_async_not_future)                                     \
+  V(suspend_state_init_async_star)                                             \
+  V(suspend_state_yield_async_star)                                            \
+  V(suspend_state_return_async_star)                                           \
   V(suspend_state_handle_exception)
 
 // This assertion marks places which assume that boolean false immediate
diff --git a/sdk/lib/_internal/vm/lib/async_patch.dart b/sdk/lib/_internal/vm/lib/async_patch.dart
index 27eb7e6..d6f6c74 100644
--- a/sdk/lib/_internal/vm/lib/async_patch.dart
+++ b/sdk/lib/_internal/vm/lib/async_patch.dart
@@ -110,7 +110,7 @@
 class _AsyncStarStreamController<T> {
   @pragma("vm:entry-point")
   StreamController<T> controller;
-  Function asyncStarBody;
+  Function? asyncStarBody;
   bool isAdding = false;
   bool onListenReceived = false;
   bool isScheduled = false;
@@ -127,7 +127,7 @@
   Stream<T> get stream {
     final Stream<T> local = controller.stream;
     if (local is _StreamImpl<T>) {
-      local._generator = asyncStarBody;
+      local._generator = asyncStarBody!;
     }
     return local;
   }
@@ -137,7 +137,7 @@
     isSuspendedAtYield = false;
     final bool? argument = continuationArgument;
     continuationArgument = null;
-    asyncStarBody(argument, null);
+    asyncStarBody!(argument, null);
   }
 
   void scheduleGenerator() {
@@ -158,6 +158,7 @@
   // controller.add(e);
   // suspend;
   // if (controller.isCancelled) return;
+  @pragma("vm:entry-point", "call")
   bool add(T event) {
     if (!onListenReceived) _fatal("yield before stream is listened to");
     if (isSuspendedAtYield) _fatal("unexpected yield");
@@ -174,6 +175,7 @@
   // Adds the elements of stream into this controller's stream.
   // The generator will be scheduled again when all of the
   // elements of the added stream have been consumed.
+  @pragma("vm:entry-point", "call")
   void addStream(Stream<T> stream) {
     if (!onListenReceived) _fatal("yield before stream is listened to");
 
@@ -327,7 +329,7 @@
   @pragma("vm:invisible")
   static Object? _initAsync<T>() {
     if (_trace) print('_initAsync<$T>');
-    return new _Future<T>();
+    return _Future<T>();
   }
 
   @pragma("vm:invisible")
@@ -371,14 +373,14 @@
 
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
-  Object? _awaitAsync(Object? object) {
+  Object? _await(Object? object) {
     if (_trace) print('_awaitAsync (object=$object)');
     if (_thenCallback == null) {
       _createAsyncCallbacks();
     }
     _awaitHelper(object, unsafeCast<dynamic Function(dynamic)>(_thenCallback),
         unsafeCast<dynamic Function(Object, StackTrace)>(_errorCallback));
-    return _future;
+    return _functionData;
   }
 
   @pragma("vm:entry-point", "call")
@@ -391,7 +393,7 @@
     _Future future;
     bool isSync = true;
     if (suspendState is _SuspendState) {
-      future = suspendState._future;
+      future = unsafeCast<_Future>(suspendState._functionData);
     } else {
       future = unsafeCast<_Future>(suspendState);
       isSync = false;
@@ -411,7 +413,7 @@
     _Future future;
     bool isSync = true;
     if (suspendState is _SuspendState) {
-      future = suspendState._future;
+      future = unsafeCast<_Future>(suspendState._functionData);
     } else {
       future = unsafeCast<_Future>(suspendState);
       isSync = false;
@@ -422,31 +424,79 @@
 
   @pragma("vm:entry-point", "call")
   @pragma("vm:invisible")
-  static Future _handleException(
+  static Object? _initAsyncStar<T>() {
+    if (_trace) print('_initAsyncStar<$T>');
+    return _AsyncStarStreamController<T>(null);
+  }
+
+  @pragma("vm:invisible")
+  @pragma("vm:recognized", "other")
+  _createAsyncStarCallback(_AsyncStarStreamController controller) {
+    controller.asyncStarBody = (value, _) {
+      if (_trace) print('asyncStarBody callback (value=$value)');
+      _resume(value, null, null);
+    };
+  }
+
+  @pragma("vm:entry-point", "call")
+  @pragma("vm:invisible")
+  Object? _yieldAsyncStar(Object? object) {
+    final controller = unsafeCast<_AsyncStarStreamController>(_functionData);
+    if (controller.asyncStarBody == null) {
+      _createAsyncStarCallback(controller);
+      return controller.stream;
+    }
+    return null;
+  }
+
+  @pragma("vm:entry-point", "call")
+  @pragma("vm:invisible")
+  static void _returnAsyncStar(Object suspendState, Object? returnValue) {
+    if (_trace) {
+      print('_returnAsyncStar (suspendState=$suspendState, '
+          'returnValue=$returnValue)');
+    }
+    final controller = unsafeCast<_AsyncStarStreamController>(
+        unsafeCast<_SuspendState>(suspendState)._functionData);
+    controller.close();
+  }
+
+  @pragma("vm:entry-point", "call")
+  @pragma("vm:invisible")
+  static Object? _handleException(
       Object suspendState, Object exception, StackTrace stackTrace) {
     if (_trace) {
       print('_handleException (suspendState=$suspendState, '
           'exception=$exception, stackTrace=$stackTrace)');
     }
-    _Future future;
+    Object? functionData;
     bool isSync = true;
     if (suspendState is _SuspendState) {
-      future = suspendState._future;
+      functionData = suspendState._functionData;
     } else {
-      future = unsafeCast<_Future>(suspendState);
+      functionData = suspendState;
       isSync = false;
     }
-    _completeOnAsyncError(future, exception, stackTrace, isSync);
-    return future;
+    if (functionData is _Future) {
+      // async function.
+      _completeOnAsyncError(functionData, exception, stackTrace, isSync);
+    } else if (functionData is _AsyncStarStreamController) {
+      // async* function.
+      functionData.addError(exception, stackTrace);
+      functionData.close();
+    } else {
+      throw 'Unexpected function data ${functionData.runtimeType} $functionData';
+    }
+    return functionData;
   }
 
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  external set _future(_Future value);
+  external set _functionData(Object value);
 
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  external _Future get _future;
+  external Object get _functionData;
 
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
@@ -467,5 +517,5 @@
   @pragma("vm:recognized", "other")
   @pragma("vm:never-inline")
   external void _resume(
-      dynamic value, Object? exception, StackTrace? stackTrace);
+      Object? value, Object? exception, StackTrace? stackTrace);
 }