From 4075e8b3f984927e8da9d8ab1f5d4ee0d7e32ae0 Mon Sep 17 00:00:00 2001 From: Alexander Markov Date: Mon, 2 May 2022 20:53:01 +0000 Subject: [PATCH] [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 Commit-Queue: Alexander Markov Reviewed-by: Martin Kustermann --- pkg/kernel/binary.md | 2 +- pkg/vm/lib/transformations/continuation.dart | 13 +- runtime/vm/code_descriptors.h | 4 +- .../backend/flow_graph_compiler_arm.cc | 2 +- .../backend/flow_graph_compiler_arm64.cc | 2 +- .../backend/flow_graph_compiler_ia32.cc | 2 +- .../backend/flow_graph_compiler_riscv.cc | 2 +- .../backend/flow_graph_compiler_x64.cc | 2 +- runtime/vm/compiler/backend/il.cc | 45 +- runtime/vm/compiler/backend/il.h | 4 +- runtime/vm/compiler/backend/il_arm.cc | 2 +- runtime/vm/compiler/backend/il_arm64.cc | 2 +- runtime/vm/compiler/backend/il_ia32.cc | 2 +- runtime/vm/compiler/backend/il_printer.cc | 10 +- runtime/vm/compiler/backend/il_riscv.cc | 2 +- runtime/vm/compiler/backend/il_x64.cc | 2 +- runtime/vm/compiler/backend/range_analysis.cc | 2 +- runtime/vm/compiler/backend/slot.cc | 2 +- runtime/vm/compiler/backend/slot.h | 2 +- .../frontend/kernel_binary_flowgraph.cc | 113 +- runtime/vm/compiler/frontend/kernel_to_il.cc | 4 +- runtime/vm/compiler/frontend/scope_builder.cc | 21 +- runtime/vm/compiler/recognized_methods_list.h | 10 +- runtime/vm/compiler/runtime_api.h | 9 +- .../vm/compiler/runtime_offsets_extracted.h | 1424 ++++++++++------- runtime/vm/compiler/runtime_offsets_list.h | 7 +- runtime/vm/compiler/stub_code_compiler.cc | 33 +- runtime/vm/constants_arm.h | 9 +- runtime/vm/constants_arm64.h | 9 +- runtime/vm/constants_ia32.h | 11 +- runtime/vm/constants_riscv.h | 9 +- runtime/vm/constants_x64.h | 9 +- runtime/vm/kernel.h | 2 - runtime/vm/kernel_binary.h | 6 + runtime/vm/kernel_loader.cc | 11 + runtime/vm/object.cc | 8 +- runtime/vm/object.h | 29 +- runtime/vm/object_store.cc | 29 +- runtime/vm/object_store.h | 18 +- runtime/vm/raw_object.h | 9 +- runtime/vm/raw_object_fields.cc | 2 +- runtime/vm/runtime_entry.cc | 7 +- runtime/vm/stack_trace.cc | 46 +- runtime/vm/stack_trace.h | 14 +- runtime/vm/stub_code_list.h | 5 +- runtime/vm/symbols.h | 8 +- runtime/vm/thread.h | 5 +- sdk/lib/_internal/vm/lib/async_patch.dart | 84 +- 48 files changed, 1289 insertions(+), 766 deletions(-) diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md index 895c2aba8b59..c9620606a87f 100644 --- a/pkg/kernel/binary.md +++ b/pkg/kernel/binary.md @@ -1371,7 +1371,7 @@ type TryFinally extends Statement { 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 f158e8e92195..42018968dfb4 100644 --- a/pkg/vm/lib/transformations/continuation.dart +++ b/pkg/vm/lib/transformations/continuation.dart @@ -158,9 +158,16 @@ class RecursiveContinuationRewriter extends RemovingTransformer { 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 9251781d3de4..e268ff03c7ec 100644 --- a/runtime/vm/code_descriptors.h +++ b/runtime/vm/code_descriptors.h @@ -77,7 +77,9 @@ class ExceptionHandlerList : public ZoneAllocated { }; 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 7b14f31534ef..c03025e0643d 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 @@ void FlowGraphCompiler::EmitPrologue() { } 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 67fed8a9eb37..362e199d250a 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 @@ void FlowGraphCompiler::EmitPrologue() { } 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 c23ff8a62fd8..257243aba335 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 @@ void FlowGraphCompiler::EmitPrologue() { } 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 2c40fdc1109e..c129e1b7805d 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 @@ void FlowGraphCompiler::EmitPrologue() { } 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 e6c3b1ebbc09..59db090fd001 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 @@ void FlowGraphCompiler::EmitPrologue() { } 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 768d5c4a6b5b..4a8bc6cbbb73 100644 --- a/runtime/vm/compiler/backend/il.cc +++ b/runtime/vm/compiler/backend/il.cc @@ -6901,16 +6901,25 @@ void RawStoreFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { } 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()); - } - return Code::ZoneHandle( - compiler->zone(), - compiler->isolate_group()->object_store()->return_async_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(); + } } void NativeReturnInstr::EmitReturnMoves(FlowGraphCompiler* compiler) { @@ -7230,10 +7239,12 @@ LocationSummary* Call1ArgStubInstr::MakeLocationSummary(Zone* zone, 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 @@ void Call1ArgStubInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 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 d0bbaed9be40..6b6c9019e6f1 100644 --- a/runtime/vm/compiler/backend/il.h +++ b/runtime/vm/compiler/backend/il.h @@ -9567,8 +9567,10 @@ class SimdOpInstr : public Definition { 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 cf3345c63a02..493238ef704f 100644 --- a/runtime/vm/compiler/backend/il_arm.cc +++ b/runtime/vm/compiler/backend/il_arm.cc @@ -484,7 +484,7 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 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 a6a35de582b8..4d0bf7cc9429 100644 --- a/runtime/vm/compiler/backend/il_arm64.cc +++ b/runtime/vm/compiler/backend/il_arm64.cc @@ -411,7 +411,7 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 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 3a4a93544aed..f2ebddaef030 100644 --- a/runtime/vm/compiler/backend/il_ia32.cc +++ b/runtime/vm/compiler/backend/il_ia32.cc @@ -233,7 +233,7 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 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 a4ed678e55fd..76b1c00a3bd9 100644 --- a/runtime/vm/compiler/backend/il_printer.cc +++ b/runtime/vm/compiler/backend/il_printer.cc @@ -1362,8 +1362,14 @@ void Call1ArgStubInstr::PrintOperandsTo(BaseTextBuffer* f) const { 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 d646861bd94c..74459f70718a 100644 --- a/runtime/vm/compiler/backend/il_riscv.cc +++ b/runtime/vm/compiler/backend/il_riscv.cc @@ -464,7 +464,7 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 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 75475b16a920..170932f465e7 100644 --- a/runtime/vm/compiler/backend/il_x64.cc +++ b/runtime/vm/compiler/backend/il_x64.cc @@ -338,7 +338,7 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 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 708308fdbd22..f2cf0abfed38 100644 --- a/runtime/vm/compiler/backend/range_analysis.cc +++ b/runtime/vm/compiler/backend/range_analysis.cc @@ -2814,7 +2814,7 @@ void LoadFieldInstr::InferRange(RangeAnalysis* analysis, Range* range) { 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 77d0153f1f9f..74e10bc84b07 100644 --- a/runtime/vm/compiler/backend/slot.cc +++ b/runtime/vm/compiler/backend/slot.cc @@ -243,7 +243,7 @@ bool Slot::IsImmutableLengthSlot() const { 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 12609d663930..e4efe293ccd0 100644 --- a/runtime/vm/compiler/backend/slot.h +++ b/runtime/vm/compiler/backend/slot.h @@ -73,7 +73,7 @@ class ParsedFunction; 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 ab59d684ab5d..6bbd86183c13 100644 --- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc +++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc @@ -684,6 +684,24 @@ Fragment StreamingFlowGraphBuilder::InitSuspendableFunction( 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::BuildLibraryPrefixAction( 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 @@ Fragment StreamingFlowGraphBuilder::BuildAwaitExpression( instructions += BuildExpression(); // read operand. - instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwaitAsync); + instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwait); return instructions; } @@ -5228,8 +5247,83 @@ Fragment StreamingFlowGraphBuilder::BuildYieldStatement( 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 : + // + // _AsyncStarStreamController controller = :suspend_state._functionData; + // if (controller.add()) { + // return; + // } + // suspend(); + // + // Generate the following code for yield* : + // + // _AsyncStarStreamController controller = :suspend_state._functionData; + // controller.addStream(); + // 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 @@ Fragment StreamingFlowGraphBuilder::BuildFunctionNode( 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 @@ Fragment StreamingFlowGraphBuilder::BuildFunctionNode( 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 6f0e43c77ce7..86576be75c03 100644 --- a/runtime/vm/compiler/frontend/kernel_to_il.cc +++ b/runtime/vm/compiler/frontend/kernel_to_il.cc @@ -834,7 +834,7 @@ Fragment FlowGraphBuilder::NativeFunctionBody(const Function& function, 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 @@ Fragment FlowGraphBuilder::NativeFunctionBody(const Function& function, 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 c20ee5459a67..6363a5ec8738 100644 --- a/runtime/vm/compiler/frontend/scope_builder.cc +++ b/runtime/vm/compiler/frontend/scope_builder.cc @@ -89,7 +89,7 @@ ScopeBuildingResult* ScopeBuilder::BuildScopes() { 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 @@ void ScopeBuilder::VisitStatement() { 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 f1ce6f5d3539..e887d2494e4b 100644 --- a/runtime/vm/compiler/recognized_methods_list.h +++ b/runtime/vm/compiler/recognized_methods_list.h @@ -83,8 +83,10 @@ namespace dart { 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 @@ namespace dart { 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 267337f4789e..31c7822ba66c 100644 --- a/runtime/vm/compiler/runtime_api.h +++ b/runtime/vm/compiler/runtime_api.h @@ -992,7 +992,7 @@ class SuspendState : public AllStatic { 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 @@ class Thread : public AllStatic { 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 738ed65fbba3..2fc188c83e0d 100644 --- a/runtime/vm/compiler/runtime_offsets_extracted.h +++ b/runtime/vm/compiler/runtime_offsets_extracted.h @@ -248,7 +248,8 @@ static constexpr dart::compiler::target::word 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 52; 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_not_address_offset = 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 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 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 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 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 52; 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_not_address_offset = 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 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 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 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 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 52; 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_not_address_offset = 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 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 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 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 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 52; 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_not_address_offset = 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 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 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 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 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 52; 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_not_address_offset = 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 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 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 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 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 52; 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_not_address_offset = 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 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 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 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 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 @@ static constexpr dart::compiler::target::word 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 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 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 @@ static constexpr dart::compiler::target::word 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_end_offset = 104; 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_not_address_offset = 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 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 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 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 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 52; 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 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 @@ static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 52; 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 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 @@ static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 52; 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 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 @@ static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 52; 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 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 @@ static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 @@ static constexpr dart::compiler::target::word 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 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 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 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_end_offset = 104; 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 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_object_null_offset = 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 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 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 @@ static constexpr dart::compiler::target::word 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 8fa14a39b6d3..04aa47b5cf3a 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 1049101e8c01..5c9fdeca8b12 100644 --- a/runtime/vm/compiler/stub_code_compiler.cc +++ b/runtime/vm/compiler/stub_code_compiler.cc @@ -1287,7 +1287,7 @@ void StubCodeCompiler::GenerateSuspendStub( 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 @@ void StubCodeCompiler::GenerateSuspendStub( __ 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 @@ void StubCodeCompiler::GenerateSuspendStub( 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 @@ void StubCodeCompiler::GenerateSuspendStub( __ 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 @@ void StubCodeCompiler::GenerateSuspendStub( __ 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 @@ void StubCodeCompiler::GenerateInitAsyncStub(Assembler* assembler) { 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 @@ void StubCodeCompiler::GenerateReturnAsyncNotFutureStub(Assembler* assembler) { 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 722f1263b224..b63efecadd4e 100644 --- a/runtime/vm/constants_arm.h +++ b/runtime/vm/constants_arm.h @@ -532,18 +532,18 @@ struct DoubleToIntegerStubABI { 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 @@ struct ResumeStubABI { 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 da0c13293f64..8ec2b3e7bec4 100644 --- a/runtime/vm/constants_arm64.h +++ b/runtime/vm/constants_arm64.h @@ -366,18 +366,18 @@ struct DoubleToIntegerStubABI { 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 @@ struct ResumeStubABI { 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 2fa98908cd7b..1169aa402340 100644 --- a/runtime/vm/constants_ia32.h +++ b/runtime/vm/constants_ia32.h @@ -260,16 +260,16 @@ struct DoubleToIntegerStubABI { 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 @@ struct SuspendStubABI { 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 @@ struct ResumeStubABI { 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 8d7a0859df86..4fb57fc2fc7f 100644 --- a/runtime/vm/constants_riscv.h +++ b/runtime/vm/constants_riscv.h @@ -378,18 +378,18 @@ struct DoubleToIntegerStubABI { 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 @@ struct ResumeStubABI { 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 1f2212608eb5..51828eabf2a6 100644 --- a/runtime/vm/constants_x64.h +++ b/runtime/vm/constants_x64.h @@ -335,13 +335,13 @@ struct DoubleToIntegerStubABI { 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 @@ struct SuspendStubABI { 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 @@ struct ResumeStubABI { 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 d9b9ddfdc2f4..bb496ef2abf5 100644 --- a/runtime/vm/kernel.h +++ b/runtime/vm/kernel.h @@ -56,8 +56,6 @@ class StringIndex { 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 6d7b33eaa0f5..08d9da7e3209 100644 --- a/runtime/vm/kernel_binary.h +++ b/runtime/vm/kernel_binary.h @@ -212,6 +212,12 @@ enum InstanceInvocationFlags { kInstanceInvocationFlagBoundsSafe = 1 << 1, }; +// 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 3dcbc81a9ace..bab3326c87bc 100644 --- a/runtime/vm/kernel_loader.cc +++ b/runtime/vm/kernel_loader.cc @@ -2039,6 +2039,16 @@ void KernelLoader::LoadProcedure(const Library& library, 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 @@ void KernelLoader::LoadProcedure(const Library& library, break; } ASSERT(!function.IsCompactAsyncFunction()); + ASSERT(!function.IsCompactAsyncStarFunction()); } if (!native_name.IsNull()) { diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc index a9fffe2c245f..da4f7348ab2b 100644 --- a/runtime/vm/object.cc +++ b/runtime/vm/object.cc @@ -26036,7 +26036,7 @@ DEFINE_FLAG_HANDLER(DwarfStackTracesHandler, "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 @@ SuspendStatePtr SuspendState::New(intptr_t frame_size, 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 @@ void SuspendState::set_pc(uword pc) const { 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 bea56ecdcfa7..b5eaa99016ce 100644 --- a/runtime/vm/object.h +++ b/runtime/vm/object.h @@ -3171,7 +3171,7 @@ class Function : public Object { // 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 @@ class Function : public Object { 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 @@ class SuspendState : public Instance { 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 @@ class SuspendState : public Instance { } 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 @@ class SuspendState : public Instance { 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 7cc7f02b6e60..f2959f4e3231 100644 --- a/runtime/vm/object_store.cc +++ b/runtime/vm/object_store.cc @@ -286,8 +286,17 @@ void ObjectStore::InitKnownObjects() { 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 @@ void ObjectStore::InitKnownObjects() { } } + 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 @@ void ObjectStore::InitKnownObjects() { 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 @@ void ObjectStore::InitKnownObjects() { 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 ee7844a31b9f..674d1b4180fe 100644 --- a/runtime/vm/object_store.h +++ b/runtime/vm/object_store.h @@ -165,15 +165,21 @@ class ObjectPointerVisitor; 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 @@ class ObjectPointerVisitor; 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 @@ class ObjectPointerVisitor; 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 5677ff9820b9..6b5dab88d272 100644 --- a/runtime/vm/raw_object.h +++ b/runtime/vm/raw_object.h @@ -3292,10 +3292,15 @@ class UntaggedSuspendState : public UntaggedInstance { 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 749e1d2f80f5..a7e7a92331e8 100644 --- a/runtime/vm/raw_object_fields.cc +++ b/runtime/vm/raw_object_fields.cc @@ -191,7 +191,7 @@ namespace dart { 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 b1b3345a9670..ac9d41a2e7bc 100644 --- a/runtime/vm/runtime_entry.cc +++ b/runtime/vm/runtime_entry.cc @@ -711,13 +711,14 @@ DEFINE_RUNTIME_ENTRY(CloneContext, 1) { // 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 d1727043ccee..a5c7bdd5f794 100644 --- a/runtime/vm/stack_trace.cc +++ b/runtime/vm/stack_trace.cc @@ -70,7 +70,7 @@ CallerClosureFinder::CallerClosureFinder(Zone* zone) 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 @@ CallerClosureFinder::CallerClosureFinder(Zone* zone) 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 @@ CallerClosureFinder::CallerClosureFinder(Zone* zone) 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::GetCallerInFutureImpl(const Object& future) { 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_); +} + +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()); - const Instance& controller = Instance::Cast(context_entry_); - controller_ = controller.GetField(controller_controller_field); + 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::FindCaller(const Closure& receiver_closure) { 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 @@ ClosurePtr CallerClosureFinder::UnwrapAsyncThen(const Closure& closure) { 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 @@ ClosurePtr StackTraceUtils::ClosureFromFrameFunction( return Closure::null(); } - if (function.IsCompactAsyncFunction()) { + if (function.IsCompactAsyncFunction() || + function.IsCompactAsyncStarFunction()) { auto& suspend_state = Object::Handle( zone, *reinterpret_cast(LocalVarAddress( frame->fp(), runtime_frame_layout.FrameSlotForVariableIndex( diff --git a/runtime/vm/stack_trace.h b/runtime/vm/stack_trace.h index bab4fd1db3d9..2e33b715ac87 100644 --- a/runtime/vm/stack_trace.h +++ b/runtime/vm/stack_trace.h @@ -31,6 +31,12 @@ class CallerClosureFinder { // 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 @@ class CallerClosureFinder { 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 CallerClosureFinder { 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 b035700c6a05..f9110bea5bfc 100644 --- a/runtime/vm/stub_code_list.h +++ b/runtime/vm/stub_code_list.h @@ -149,11 +149,14 @@ namespace dart { 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 34053dc7bccf..7eb6d2d68942 100644 --- a/runtime/vm/symbols.h +++ b/runtime/vm/symbols.h @@ -241,6 +241,7 @@ class ObjectPointerVisitor; 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 @@ class ObjectPointerVisitor; 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 @@ class ObjectPointerVisitor; 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 @@ class ObjectPointerVisitor; 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 @@ class ObjectPointerVisitor; 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 32dc3ba441d8..dc5b90bb4ae1 100644 --- a/runtime/vm/thread.h +++ b/runtime/vm/thread.h @@ -168,9 +168,12 @@ class Thread; #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 27eb7e684fae..d6f6c74335e3 100644 --- a/sdk/lib/_internal/vm/lib/async_patch.dart +++ b/sdk/lib/_internal/vm/lib/async_patch.dart @@ -110,7 +110,7 @@ void _asyncStarMoveNextHelper(var stream) { class _AsyncStarStreamController { @pragma("vm:entry-point") StreamController controller; - Function asyncStarBody; + Function? asyncStarBody; bool isAdding = false; bool onListenReceived = false; bool isScheduled = false; @@ -127,7 +127,7 @@ class _AsyncStarStreamController { Stream get stream { final Stream local = controller.stream; if (local is _StreamImpl) { - local._generator = asyncStarBody; + local._generator = asyncStarBody!; } return local; } @@ -137,7 +137,7 @@ class _AsyncStarStreamController { isSuspendedAtYield = false; final bool? argument = continuationArgument; continuationArgument = null; - asyncStarBody(argument, null); + asyncStarBody!(argument, null); } void scheduleGenerator() { @@ -158,6 +158,7 @@ class _AsyncStarStreamController { // 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 @@ class _AsyncStarStreamController { // 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 stream) { if (!onListenReceived) _fatal("yield before stream is listened to"); @@ -327,7 +329,7 @@ class _SuspendState { @pragma("vm:invisible") static Object? _initAsync() { if (_trace) print('_initAsync<$T>'); - return new _Future(); + return _Future(); } @pragma("vm:invisible") @@ -371,14 +373,14 @@ class _SuspendState { @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(_thenCallback), unsafeCast(_errorCallback)); - return _future; + return _functionData; } @pragma("vm:entry-point", "call") @@ -391,7 +393,7 @@ class _SuspendState { _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 @@ class _SuspendState { _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 @@ class _SuspendState { @pragma("vm:entry-point", "call") @pragma("vm:invisible") - static Future _handleException( + static Object? _initAsyncStar() { + if (_trace) print('_initAsyncStar<$T>'); + return _AsyncStarStreamController(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 @@ class _SuspendState { @pragma("vm:recognized", "other") @pragma("vm:never-inline") external void _resume( - dynamic value, Object? exception, StackTrace? stackTrace); + Object? value, Object? exception, StackTrace? stackTrace); }