diff --git a/pkg/dart2bytecode/lib/bytecode_generator.dart b/pkg/dart2bytecode/lib/bytecode_generator.dart index 07e0cf56222..06c6626c22a 100644 --- a/pkg/dart2bytecode/lib/bytecode_generator.dart +++ b/pkg/dart2bytecode/lib/bytecode_generator.dart @@ -141,6 +141,8 @@ class BytecodeGenerator extends RecursiveVisitor { int maxSourcePosition = 0; Member? dynModuleEntryPoint; + bool isInDeeplyImmutableClass = false; + BytecodeGenerator( ast.Component component, CoreTypes coreTypes, @@ -196,6 +198,9 @@ class BytecodeGenerator extends RecursiveVisitor { @override void visitClass(Class node) { + isInDeeplyImmutableClass = + pragmaParser.parsedPragmas( + node.annotations).isNotEmpty; startMembers(); visitList(node.constructors, this); visitList(node.procedures, this); @@ -323,6 +328,11 @@ class BytecodeGenerator extends RecursiveVisitor { flags |= ClassDeclaration.hasAnnotationsFlag; if (annotations.hasPragma) { flags |= ClassDeclaration.hasPragmaFlag; + if (pragmaParser + .parsedPragmas(cls.annotations) + .isNotEmpty) { + flags |= ClassDeclaration.isDeeplyImmutableFlag; + } } } @@ -1046,6 +1056,10 @@ class BytecodeGenerator extends RecursiveVisitor { ? ffiLibraryIndex.getTopLevelProcedure('dart:ffi', '_ffiCall') : null; + late Procedure ensureDeeplyImmutable = + libraryIndex.getTopLevelProcedure('dart:_internal', + '_ensureDeeplyImmutable'); + // Selector for implicit dynamic calls 'foo(...)' where // variable 'foo' has type 'dynamic'. late final implicitCallName = Name('implicit:call'); @@ -1136,6 +1150,12 @@ class BytecodeGenerator extends RecursiveVisitor { _generateNode(initializer); final int cpIndex = cp.addInstanceField(field); + if (isInDeeplyImmutableClass) { + // TODO(dartbug.com/61078): Use static type to avoid runtime check. + _genDirectCall( + ensureDeeplyImmutable, objectTable.getArgDescHandle(1), 1); + } + asm.emitStoreFieldTOS(cpIndex); initializedFields.add(field); diff --git a/pkg/dart2bytecode/lib/declarations.dart b/pkg/dart2bytecode/lib/declarations.dart index c2aaad79b62..99d9fdcaf0d 100644 --- a/pkg/dart2bytecode/lib/declarations.dart +++ b/pkg/dart2bytecode/lib/declarations.dart @@ -100,6 +100,7 @@ class ClassDeclaration extends BytecodeDeclaration { static const isBaseClassFlag = 1 << 11; static const isInterfaceFlag = 1 << 12; static const isFinalFlag = 1 << 13; + static const isDeeplyImmutableFlag = 1 << 14; ObjectHandle? name; final int flags; @@ -200,6 +201,9 @@ class ClassDeclaration extends BytecodeDeclaration { if ((flags & hasPragmaFlag) != 0) { sb.write(', has-pragma'); } + if ((flags & isDeeplyImmutableFlag) != 0) { + sb.write(', deeply-immutable'); + } if ((flags & hasSourcePositionsFlag) != 0) { sb.write(', pos = $position, end-pos = $endPosition'); } diff --git a/pkg/front_end/lib/src/codes/cfe_codes_generated.dart b/pkg/front_end/lib/src/codes/cfe_codes_generated.dart index 3d378fb833c..64e96bcea18 100644 --- a/pkg/front_end/lib/src/codes/cfe_codes_generated.dart +++ b/pkg/front_end/lib/src/codes/cfe_codes_generated.dart @@ -4666,7 +4666,7 @@ const MessageCode codeFfiDeeplyImmutableFieldsMustBeDeeplyImmutable = const MessageCode( "FfiDeeplyImmutableFieldsMustBeDeeplyImmutable", problemMessage: - """Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', and classes annotated with `@pragma('vm:deeply-immutable')`.""", + """Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', function types and classes annotated with `@pragma('vm:deeply-immutable')`.""", correctionMessage: """Try changing the type of this field to a deeply immutable type or mark the type of this field as deeply immutable.""", ); diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml index e061886efd0..5cd06d4201b 100644 --- a/pkg/front_end/messages.yaml +++ b/pkg/front_end/messages.yaml @@ -5037,7 +5037,7 @@ ffiDeeplyImmutableClassesMustBeFinalOrSealed: ffiDeeplyImmutableFieldsMustBeDeeplyImmutable: # Used by dart:ffi parameters: none - problemMessage: "Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', and classes annotated with `@pragma('vm:deeply-immutable')`." + problemMessage: "Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', function types and classes annotated with `@pragma('vm:deeply-immutable')`." correctionMessage: 'Try changing the type of this field to a deeply immutable type or mark the type of this field as deeply immutable.' external: test/ffi_test.dart diff --git a/pkg/native_compiler/lib/runtime/vm_offsets.g.dart b/pkg/native_compiler/lib/runtime/vm_offsets.g.dart index 2be59185fd3..bb5533b034a 100644 --- a/pkg/native_compiler/lib/runtime/vm_offsets.g.dart +++ b/pkg/native_compiler/lib/runtime/vm_offsets.g.dart @@ -881,11 +881,11 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_AllocateArray_entry_point_offset => 0x2e8; @override - int get Thread_DeoptimizeCopyFrame_entry_point_offset => 0x700; + int get Thread_DeoptimizeCopyFrame_entry_point_offset => 0x708; @override - int get Thread_active_exception_offset => 0x6c0; + int get Thread_active_exception_offset => 0x6c8; @override - int get Thread_active_stacktrace_offset => 0x6c8; + int get Thread_active_stacktrace_offset => 0x6d0; @override int get Thread_array_write_barrier_entry_point_offset => 0x200; @override @@ -903,7 +903,7 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_allocate_object_slow_entry_point_offset => 0x230; @override - int get Thread_api_top_scope_offset => 0x890; + int get Thread_api_top_scope_offset => 0x898; @override int get Thread_async_exception_handler_stub_offset => 0x160; @override @@ -919,15 +919,15 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_call_to_runtime_stub_offset => 0xd8; @override - int get Thread_dart_stream_offset => 0x8e8; + int get Thread_dart_stream_offset => 0x8f0; @override int get Thread_dispatch_table_array_offset => 0x68; @override - int get Thread_double_truncate_round_supported_offset => 0x898; + int get Thread_double_truncate_round_supported_offset => 0x8a0; @override - int get Thread_service_extension_stream_offset => 0x8f0; + int get Thread_service_extension_stream_offset => 0x8f8; @override - int get Thread_thread_locals_offset => 0x8f8; + int get Thread_thread_locals_offset => 0x900; @override int get Thread_optimize_entry_offset => 0x258; @override @@ -945,7 +945,7 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_enter_safepoint_stub_offset => 0x1e0; @override - int get Thread_execution_state_offset => 0x6e8; + int get Thread_execution_state_offset => 0x6f0; @override int get Thread_exit_safepoint_stub_offset => 0x1e8; @override @@ -965,7 +965,7 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_float_zerow_address_offset => 0x2e0; @override - int get Thread_global_object_pool_offset => 0x6d0; + int get Thread_global_object_pool_offset => 0x6d8; @override int get Thread_interpret_call_entry_point_offset => 0x2a0; @override @@ -973,11 +973,11 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_invoke_dart_code_stub_offset => 0xc8; @override - int get Thread_exit_through_ffi_offset => 0x6f8; + int get Thread_exit_through_ffi_offset => 0x700; @override - int get Thread_isolate_offset => 0x670; + int get Thread_isolate_offset => 0x678; @override - int get Thread_isolate_group_offset => 0x678; + int get Thread_isolate_group_offset => 0x680; @override int get Thread_field_table_values_offset => 0x70; @override @@ -987,9 +987,9 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_lazy_specialize_type_test_stub_offset => 0x1d8; @override - int get Thread_old_marking_stack_block_offset => 0x6a0; + int get Thread_old_marking_stack_block_offset => 0x6a8; @override - int get Thread_new_marking_stack_block_offset => 0x6a8; + int get Thread_new_marking_stack_block_offset => 0x6b0; @override int get Thread_megamorphic_call_checked_entry_offset => 0x248; @override @@ -1045,15 +1045,15 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_resume_interpreter_adjusted_entry_point_offset => 0x280; @override - int get Thread_resume_pc_offset => 0x6d8; + int get Thread_resume_pc_offset => 0x6e0; @override - int get Thread_saved_shadow_call_stack_offset => 0x6e0; + int get Thread_saved_shadow_call_stack_offset => 0x6e8; @override - int get Thread_safepoint_state_offset => 0x6f0; + int get Thread_safepoint_state_offset => 0x6f8; @override int get Thread_shared_field_table_values_offset => 0x78; @override - int get Thread_single_step_offset => 0x8c8; + int get Thread_single_step_offset => 0x8d0; @override int get Thread_slow_type_test_stub_offset => 0x1d0; @override @@ -1061,9 +1061,9 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_stack_limit_offset => 0x48; @override - int get Thread_saved_stack_limit_offset => 0x680; + int get Thread_saved_stack_limit_offset => 0x688; @override - int get Thread_stack_overflow_flags_offset => 0x688; + int get Thread_stack_overflow_flags_offset => 0x690; @override int get Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset => 0x240; @@ -1075,60 +1075,60 @@ final class Arm64VMOffsets extends VMOffsets { @override int get Thread_stack_overflow_shared_without_fpu_regs_stub_offset => 0x188; @override - int get Thread_store_buffer_block_offset => 0x698; + int get Thread_store_buffer_block_offset => 0x6a0; @override - int get Thread_suspend_state_await_entry_point_offset => 0x620; + int get Thread_suspend_state_await_entry_point_offset => 0x628; @override int get Thread_suspend_state_await_with_type_check_entry_point_offset => - 0x628; + 0x630; @override - int get Thread_suspend_state_init_async_entry_point_offset => 0x618; + int get Thread_suspend_state_init_async_entry_point_offset => 0x620; @override - int get Thread_suspend_state_return_async_entry_point_offset => 0x630; + int get Thread_suspend_state_return_async_entry_point_offset => 0x638; @override int get Thread_suspend_state_return_async_not_future_entry_point_offset => - 0x638; + 0x640; @override - int get Thread_suspend_state_init_async_star_entry_point_offset => 0x640; + int get Thread_suspend_state_init_async_star_entry_point_offset => 0x648; @override - int get Thread_suspend_state_yield_async_star_entry_point_offset => 0x648; + int get Thread_suspend_state_yield_async_star_entry_point_offset => 0x650; @override - int get Thread_suspend_state_return_async_star_entry_point_offset => 0x650; + int get Thread_suspend_state_return_async_star_entry_point_offset => 0x658; @override - int get Thread_suspend_state_init_sync_star_entry_point_offset => 0x658; + int get Thread_suspend_state_init_sync_star_entry_point_offset => 0x660; @override int get Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset => - 0x660; + 0x668; @override - int get Thread_suspend_state_handle_exception_entry_point_offset => 0x668; + int get Thread_suspend_state_handle_exception_entry_point_offset => 0x670; @override - int get Thread_top_exit_frame_info_offset => 0x690; + int get Thread_top_exit_frame_info_offset => 0x698; @override int get Thread_top_offset => 0x58; @override int get Thread_top_resource_offset => 0x20; @override - int get Thread_unboxed_runtime_arg_offset => 0x8a0; + int get Thread_unboxed_runtime_arg_offset => 0x8a8; @override - int get Thread_vm_tag_offset => 0x6b8; + int get Thread_vm_tag_offset => 0x6c0; @override int get Thread_write_barrier_entry_point_offset => 0x1f8; @override int get Thread_write_barrier_mask_offset => 0x50; @override - int get Thread_next_task_id_offset => 0x8b0; + int get Thread_next_task_id_offset => 0x8b8; @override - int get Thread_random_offset => 0x8b8; + int get Thread_random_offset => 0x8c0; @override int get Thread_jump_to_frame_entry_point_offset => 0x270; @override - int get Thread_tsan_utils_offset => 0x8c0; + int get Thread_tsan_utils_offset => 0x8c8; @override - int get Thread_current_tag_offset => 0x8d8; + int get Thread_current_tag_offset => 0x8e0; @override - int get Thread_default_tag_offset => 0x8e0; + int get Thread_default_tag_offset => 0x8e8; @override - int get Thread_user_tag_offset => 0x8d0; + int get Thread_user_tag_offset => 0x8d8; @override int get TsanUtils_setjmp_function_offset => 0x0; @override @@ -1231,7 +1231,6 @@ final class Arm64VMOffsets extends VMOffsets { List get Code_entry_point_offset => [0x8, 0x18, 0x10, 0x20]; @override List get Thread_write_barrier_wrappers_thread_offset => [ - 0x578, 0x580, 0x588, 0x590, @@ -1246,17 +1245,18 @@ final class Arm64VMOffsets extends VMOffsets { 0x5d8, 0x5e0, 0x5e8, - -1, - -1, - -1, - -1, 0x5f0, + -1, + -1, + -1, + -1, 0x5f8, - -1, - -1, 0x600, + -1, + -1, 0x608, 0x610, + 0x618, -1, -1, -1, @@ -1786,11 +1786,11 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_AllocateArray_entry_point_offset => 0x2e8; @override - int get Thread_DeoptimizeCopyFrame_entry_point_offset => 0x700; + int get Thread_DeoptimizeCopyFrame_entry_point_offset => 0x708; @override - int get Thread_active_exception_offset => 0x6c0; + int get Thread_active_exception_offset => 0x6c8; @override - int get Thread_active_stacktrace_offset => 0x6c8; + int get Thread_active_stacktrace_offset => 0x6d0; @override int get Thread_array_write_barrier_entry_point_offset => 0x200; @override @@ -1808,7 +1808,7 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_allocate_object_slow_entry_point_offset => 0x230; @override - int get Thread_api_top_scope_offset => 0x890; + int get Thread_api_top_scope_offset => 0x898; @override int get Thread_async_exception_handler_stub_offset => 0x160; @override @@ -1824,15 +1824,15 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_call_to_runtime_stub_offset => 0xd8; @override - int get Thread_dart_stream_offset => 0x8e8; + int get Thread_dart_stream_offset => 0x8f0; @override int get Thread_dispatch_table_array_offset => 0x68; @override - int get Thread_double_truncate_round_supported_offset => 0x898; + int get Thread_double_truncate_round_supported_offset => 0x8a0; @override - int get Thread_service_extension_stream_offset => 0x8f0; + int get Thread_service_extension_stream_offset => 0x8f8; @override - int get Thread_thread_locals_offset => 0x8f8; + int get Thread_thread_locals_offset => 0x900; @override int get Thread_optimize_entry_offset => 0x258; @override @@ -1850,7 +1850,7 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_enter_safepoint_stub_offset => 0x1e0; @override - int get Thread_execution_state_offset => 0x6e8; + int get Thread_execution_state_offset => 0x6f0; @override int get Thread_exit_safepoint_stub_offset => 0x1e8; @override @@ -1870,7 +1870,7 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_float_zerow_address_offset => 0x2e0; @override - int get Thread_global_object_pool_offset => 0x6d0; + int get Thread_global_object_pool_offset => 0x6d8; @override int get Thread_interpret_call_entry_point_offset => 0x2a0; @override @@ -1878,11 +1878,11 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_invoke_dart_code_stub_offset => 0xc8; @override - int get Thread_exit_through_ffi_offset => 0x6f8; + int get Thread_exit_through_ffi_offset => 0x700; @override - int get Thread_isolate_offset => 0x670; + int get Thread_isolate_offset => 0x678; @override - int get Thread_isolate_group_offset => 0x678; + int get Thread_isolate_group_offset => 0x680; @override int get Thread_field_table_values_offset => 0x70; @override @@ -1892,9 +1892,9 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_lazy_specialize_type_test_stub_offset => 0x1d8; @override - int get Thread_old_marking_stack_block_offset => 0x6a0; + int get Thread_old_marking_stack_block_offset => 0x6a8; @override - int get Thread_new_marking_stack_block_offset => 0x6a8; + int get Thread_new_marking_stack_block_offset => 0x6b0; @override int get Thread_megamorphic_call_checked_entry_offset => 0x248; @override @@ -1950,11 +1950,11 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_resume_interpreter_adjusted_entry_point_offset => 0x280; @override - int get Thread_resume_pc_offset => 0x6d8; + int get Thread_resume_pc_offset => 0x6e0; @override - int get Thread_saved_shadow_call_stack_offset => 0x6e0; + int get Thread_saved_shadow_call_stack_offset => 0x6e8; @override - int get Thread_safepoint_state_offset => 0x6f0; + int get Thread_safepoint_state_offset => 0x6f8; @override int get Thread_shared_field_table_values_offset => 0x78; @override @@ -1964,9 +1964,9 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_stack_limit_offset => 0x48; @override - int get Thread_saved_stack_limit_offset => 0x680; + int get Thread_saved_stack_limit_offset => 0x688; @override - int get Thread_stack_overflow_flags_offset => 0x688; + int get Thread_stack_overflow_flags_offset => 0x690; @override int get Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset => 0x240; @@ -1978,60 +1978,60 @@ final class Arm64ProductVMOffsets extends VMOffsets { @override int get Thread_stack_overflow_shared_without_fpu_regs_stub_offset => 0x188; @override - int get Thread_store_buffer_block_offset => 0x698; + int get Thread_store_buffer_block_offset => 0x6a0; @override - int get Thread_suspend_state_await_entry_point_offset => 0x620; + int get Thread_suspend_state_await_entry_point_offset => 0x628; @override int get Thread_suspend_state_await_with_type_check_entry_point_offset => - 0x628; + 0x630; @override - int get Thread_suspend_state_init_async_entry_point_offset => 0x618; + int get Thread_suspend_state_init_async_entry_point_offset => 0x620; @override - int get Thread_suspend_state_return_async_entry_point_offset => 0x630; + int get Thread_suspend_state_return_async_entry_point_offset => 0x638; @override int get Thread_suspend_state_return_async_not_future_entry_point_offset => - 0x638; + 0x640; @override - int get Thread_suspend_state_init_async_star_entry_point_offset => 0x640; + int get Thread_suspend_state_init_async_star_entry_point_offset => 0x648; @override - int get Thread_suspend_state_yield_async_star_entry_point_offset => 0x648; + int get Thread_suspend_state_yield_async_star_entry_point_offset => 0x650; @override - int get Thread_suspend_state_return_async_star_entry_point_offset => 0x650; + int get Thread_suspend_state_return_async_star_entry_point_offset => 0x658; @override - int get Thread_suspend_state_init_sync_star_entry_point_offset => 0x658; + int get Thread_suspend_state_init_sync_star_entry_point_offset => 0x660; @override int get Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset => - 0x660; + 0x668; @override - int get Thread_suspend_state_handle_exception_entry_point_offset => 0x668; + int get Thread_suspend_state_handle_exception_entry_point_offset => 0x670; @override - int get Thread_top_exit_frame_info_offset => 0x690; + int get Thread_top_exit_frame_info_offset => 0x698; @override int get Thread_top_offset => 0x58; @override int get Thread_top_resource_offset => 0x20; @override - int get Thread_unboxed_runtime_arg_offset => 0x8a0; + int get Thread_unboxed_runtime_arg_offset => 0x8a8; @override - int get Thread_vm_tag_offset => 0x6b8; + int get Thread_vm_tag_offset => 0x6c0; @override int get Thread_write_barrier_entry_point_offset => 0x1f8; @override int get Thread_write_barrier_mask_offset => 0x50; @override - int get Thread_next_task_id_offset => 0x8b0; + int get Thread_next_task_id_offset => 0x8b8; @override - int get Thread_random_offset => 0x8b8; + int get Thread_random_offset => 0x8c0; @override int get Thread_jump_to_frame_entry_point_offset => 0x270; @override - int get Thread_tsan_utils_offset => 0x8c0; + int get Thread_tsan_utils_offset => 0x8c8; @override - int get Thread_current_tag_offset => 0x8d8; + int get Thread_current_tag_offset => 0x8e0; @override - int get Thread_default_tag_offset => 0x8e0; + int get Thread_default_tag_offset => 0x8e8; @override - int get Thread_user_tag_offset => 0x8d0; + int get Thread_user_tag_offset => 0x8d8; @override int get TsanUtils_setjmp_function_offset => 0x0; @override @@ -2134,7 +2134,6 @@ final class Arm64ProductVMOffsets extends VMOffsets { List get Code_entry_point_offset => [0x8, 0x18, 0x10, 0x20]; @override List get Thread_write_barrier_wrappers_thread_offset => [ - 0x578, 0x580, 0x588, 0x590, @@ -2149,17 +2148,18 @@ final class Arm64ProductVMOffsets extends VMOffsets { 0x5d8, 0x5e0, 0x5e8, - -1, - -1, - -1, - -1, 0x5f0, + -1, + -1, + -1, + -1, 0x5f8, - -1, - -1, 0x600, + -1, + -1, 0x608, 0x610, + 0x618, -1, -1, -1, @@ -2498,6 +2498,7 @@ enum StubCode { FfiAsyncCallbackSend, CheckIsolateFieldAccess, CheckedStoreIntoShared, + EnsureDeeplyImmutable, UnknownDartCode, } @@ -2584,6 +2585,7 @@ enum RuntimeEntry { ResumeInterpreter, InitializeSharedField, FatalError, + EnsureDeeplyImmutable, } enum LeafRuntimeEntry { diff --git a/pkg/vm/lib/modular/transformations/deeply_immutable.dart b/pkg/vm/lib/modular/transformations/deeply_immutable.dart index 0b6bf0bc6ea..4ada99b658d 100644 --- a/pkg/vm/lib/modular/transformations/deeply_immutable.dart +++ b/pkg/vm/lib/modular/transformations/deeply_immutable.dart @@ -139,16 +139,6 @@ class DeeplyImmutableValidator { } } - if ((node.name == 'ScopedThreadLocal' || node.name == 'FinalThreadLocal')) { - final uri = node.enclosingLibrary.importUri; - if (uri.isScheme('dart') && uri.path == '_vm') { - // ScopedThreadLocal has non-deeply-immutable initializer, - // but we allow it. - // TODO(dartbug.com/61962): remove this once the bug is fixed. - return; - } - } - // All instance fields should be non-late final and deeply immutable. for (final field in node.fields) { if (field.isStatic) { @@ -185,6 +175,11 @@ class DeeplyImmutableValidator { if (dartType is TypeParameterType) { return _isDeeplyImmutableDartType(dartType.bound); } + if (dartType is FunctionType) { + // Relies on dynamic check of whether closure actually captures only + // deeply-immutable values. + return true; + } return false; } diff --git a/pkg/vm/lib/transformations/pragma.dart b/pkg/vm/lib/transformations/pragma.dart index a753237d914..0108a67d651 100644 --- a/pkg/vm/lib/transformations/pragma.dart +++ b/pkg/vm/lib/transformations/pragma.dart @@ -18,6 +18,7 @@ const kVmPlatformConstPragmaName = "vm:platform-const"; const kVmPlatformConstIfPragmaName = "vm:platform-const-if"; const kVmFfiNative = "vm:ffi:native"; const kVmSharedPragmaName = "vm:shared"; +const kVmDeeplyImmutablePragmaName = "vm:deeply-immutable"; // Pragmas recognized by dart2wasm const kWasmEntryPointPragmaName = "wasm:entry-point"; @@ -96,6 +97,10 @@ class ParsedVmSharedPragma implements ParsedPragma { const ParsedVmSharedPragma(); } +class ParsedVmDeeplyImmutablePragma implements ParsedPragma { + const ParsedVmDeeplyImmutablePragma(); +} + abstract class PragmaAnnotationParser { /// May return 'null' if the annotation does not represent a recognized /// @pragma. @@ -241,6 +246,8 @@ class ConstantPragmaAnnotationParser implements PragmaAnnotationParser { return const ParsedDynModuleEntryPointPragma(); case kVmSharedPragmaName: return const ParsedVmSharedPragma(); + case kVmDeeplyImmutablePragmaName: + return const ParsedVmDeeplyImmutablePragma(); default: return null; } diff --git a/runtime/docs/deeply_immutable.md b/runtime/docs/deeply_immutable.md index b5889b719f9..eb9267ab1a9 100644 --- a/runtime/docs/deeply_immutable.md +++ b/runtime/docs/deeply_immutable.md @@ -9,7 +9,7 @@ Deeply immutable instances can be shared across isolates within the same group. A deeply immutable type is a type for which all instances that have this type are deeply immutable. This is useful for static checks on classes annotated `@pragma('vm:deeply-immutable')`. -All the instance fields of such classes must have a deeply immutable type. +If an instance field has a deeply immutable type, it doesn't require any runtime checks for the values it gets. Instance fields of function types are also allowed in `@pragma('vm:deeply-immutable')` classes, but runtime checks will ensure that only immutable values are captured by the inititalizing values. A list of immutable types: @@ -36,8 +36,9 @@ instances can also be deeply immutable while their type is not deeply immutable: * `StackTrace` (can be implemented externally, not `final`) * `Type` (can be implemented externally, not `final`) * const object (the class can be deeply immutable) +* function types (closures can capture arbritary contents) -This means users cannot mark classes with fields typed with these types as `@pragma('vm:deeply-immutable')`. +This means users cannot mark classes with fields typed with these types as `@pragma('vm:deeply-immutable')`. Only exception is the function types, which are still allowed, but incur runtime-check. ## Shallowly immutable instances @@ -50,8 +51,8 @@ The VM also has shallow immutability. ### Deeply and shallowly immutable instances -The `UntaggedObject::ImmutableBit` tracks whether an instance is deeply or shallowly immutable at runtime. -For shallow immutable objects, the VM needs to know the layout and what to check when to check for to check deep immutability at runtime. +The `UntaggedObject::ShallowImmutableBit` and `UntaggedObject::DeeplyImmutableBit` track whether an instance is shallowly or deeply immutable at runtime. +For shallow immutable objects, the VM needs to know the layout and what to check when to check for to check deep immutability at runtime. During objects lifecycle if the object is inspected, it can get it shallow-immutable bit upgraded to deeply-immutable bit. ### Deeply immutable types @@ -64,10 +65,10 @@ This bit can be set in two ways: The `vm:deeply-immutable` pragma is added to classes of which their _type_ is deeply immutable. -This puts the following restrictions on these classes: +This puts the following compile-time restrictions on these classes: 1. All instance fields must - 1. have a deeply immutable type, + 1. either have a deeply immutable or function type, 2. be final, and 3. be non-late. 2. The class must be `final` or `sealed`. @@ -75,5 +76,9 @@ This puts the following restrictions on these classes: 3. All subtypes must be deeply immutable. This ensures 1.1. can be trusted. 4. The super type must be deeply immutable (except for Object). +5. Context captured by closures must be deeply-immutable. + +Compile-time restructions are enforced by [DeeplyImmutableValidator](../../pkg/vm/lib/transformations/ffi/deeply_immutable.dart). + +Run-time checks are inserted to ensure that function-type instance fields are initialized with closure that only capture deeply-immutable values. -These restructions are enforced by [DeeplyImmutableValidator](../../pkg/vm/lib/transformations/ffi/deeply_immutable.dart). diff --git a/runtime/lib/concurrent.cc b/runtime/lib/concurrent.cc index a614694b49e..619fcc2674f 100644 --- a/runtime/lib/concurrent.cc +++ b/runtime/lib/concurrent.cc @@ -127,8 +127,9 @@ DEFINE_FFI_NATIVE_ENTRY(IsolateGroup_runSync, { DARTSCOPE(current_thread); - FfiCallbackMetadata::EnsureTriviallyImmutable( - current_thread->zone(), Object::Handle(Api::UnwrapHandle(closure))); + auto& object = + Object::Handle(current_thread->zone(), Api::UnwrapHandle(closure)); + object.EnsureDeeplyImmutable(current_thread->zone()); } Isolate* saved_isolate = current_thread->isolate(); diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc index 9991ef7c442..16f52b4336f 100644 --- a/runtime/lib/object.cc +++ b/runtime/lib/object.cc @@ -619,6 +619,12 @@ DEFINE_NATIVE_ENTRY(Internal_loadDynamicModule, 0, 1) { #endif // defined(DART_DYNAMIC_MODULES) } +DEFINE_NATIVE_ENTRY(Internal_ensureDeeplyImmutable, 0, 1) { + GET_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(0)); + value.EnsureDeeplyImmutable(zone); + return value.ptr(); +} + DEFINE_NATIVE_ENTRY(InvocationMirror_unpackTypeArguments, 0, 2) { const TypeArguments& type_arguments = TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)); diff --git a/runtime/tests/vm/dart/isolates/fast_object_copy2_test.dart b/runtime/tests/vm/dart/isolates/fast_object_copy2_test.dart index 720aecf919a..1c5c2be185b 100644 --- a/runtime/tests/vm/dart/isolates/fast_object_copy2_test.dart +++ b/runtime/tests/vm/dart/isolates/fast_object_copy2_test.dart @@ -30,6 +30,8 @@ class A { dynamic m(T a, H b) => this; } +List list = ["Hello", "world"]; + // When running with isolate groups enabled, we can share all of the following // objects. final sharableObjects = [ @@ -123,8 +125,27 @@ final sharableObjects = [ someFloat64x2: Float64x2(4.4, 5.5), someDeeplyImmutable: null, somePointer: Pointer.fromAddress(0x8badf00d), + someClosure: () => 31, ), somePointer: Pointer.fromAddress(0xdeadbeef), + someClosure: () => 42, + ), + DeeplyImmutable( + someString: 'someString', + someNullableString: 'someString', + someInt: 3, + someDouble: 3.3, + someBool: false, + someNull: null, + someInt32x4: Int32x4(0, 1, 2, 3), + someFloat32x4: Float32x4(0.0, 1.1, 2.2, 3.3), + someFloat64x2: Float64x2(4.4, 5.5), + someDeeplyImmutable: null, + somePointer: Pointer.fromAddress(0xdeadbeef), + someClosure: () { + list.add("kuka"); + return list; + }, ), ]; @@ -282,6 +303,7 @@ final class DeeplyImmutable { final Float64x2 someFloat64x2; final DeeplyImmutable? someDeeplyImmutable; final Pointer somePointer; + final Function() someClosure; DeeplyImmutable({ required this.someString, @@ -295,5 +317,6 @@ final class DeeplyImmutable { required this.someFloat64x2, this.someDeeplyImmutable, required this.somePointer, + required this.someClosure, }); } diff --git a/runtime/vm/app_snapshot.cc b/runtime/vm/app_snapshot.cc index 23efb7176b5..39e9ff21dce 100644 --- a/runtime/vm/app_snapshot.cc +++ b/runtime/vm/app_snapshot.cc @@ -168,7 +168,7 @@ class SerializationCluster : public ZoneAllocated { cid_(cid), target_instance_size_(target_instance_size), is_canonical_(is_canonical), - is_immutable_(Object::ShouldHaveImmutabilityBitSet(cid)) { + is_deeply_immutable_(Object::ShouldHaveDeeplyImmutabilityBitSet(cid)) { ASSERT(target_instance_size == kSizeVaries || target_instance_size >= 0); } virtual ~SerializationCluster() {} @@ -190,7 +190,7 @@ class SerializationCluster : public ZoneAllocated { const char* name() const { return name_; } intptr_t cid() const { return cid_; } bool is_canonical() const { return is_canonical_; } - bool is_immutable() const { return is_immutable_; } + bool is_deeply_immutable() const { return is_deeply_immutable_; } intptr_t size() const { return size_; } intptr_t num_objects() const { return num_objects_; } @@ -208,7 +208,7 @@ class SerializationCluster : public ZoneAllocated { const intptr_t cid_; const intptr_t target_instance_size_; const bool is_canonical_; - const bool is_immutable_; + const bool is_deeply_immutable_; intptr_t size_ = 0; intptr_t num_objects_ = 0; intptr_t target_memory_size_ = 0; @@ -218,10 +218,10 @@ class DeserializationCluster : public ZoneAllocated { public: explicit DeserializationCluster(const char* name, bool is_canonical = false, - bool is_immutable = false) + bool is_deeply_immutable = false) : name_(name), is_canonical_(is_canonical), - is_immutable_(is_immutable), + is_deeply_immutable_(is_deeply_immutable), start_index_(-1), stop_index_(-1) {} virtual ~DeserializationCluster() {} @@ -248,14 +248,14 @@ class DeserializationCluster : public ZoneAllocated { const char* name() const { return name_; } bool is_canonical() const { return is_canonical_; } - bool is_immutable() const { return is_immutable_; } + bool is_deeply_immutable() const { return is_deeply_immutable_; } protected: void ReadAllocFixedSize(Deserializer* deserializer, intptr_t instance_size); const char* const name_; const bool is_canonical_; - const bool is_immutable_; + const bool is_deeply_immutable_; // The range of the ref array that belongs to this cluster. intptr_t start_index_; intptr_t stop_index_; @@ -687,13 +687,13 @@ class Deserializer : public ThreadStackResource { intptr_t size, bool is_canonical = false) { InitializeHeader(raw, cid, size, is_canonical, - ShouldHaveImmutabilityBitSetCid(cid)); + Object::ShouldHaveDeeplyImmutabilityBitSet(cid)); } static void InitializeHeader(ObjectPtr raw, intptr_t cid, intptr_t size, bool is_canonical, - bool is_immutable); + bool is_deeply_immutable); // Reads raw data (for basic types). // sizeof(T) must be in {1,2,4,8}. @@ -887,7 +887,7 @@ void Deserializer::InitializeHeader(ObjectPtr raw, intptr_t class_id, intptr_t size, bool is_canonical, - bool is_immutable) { + bool is_deeply_immutable) { ASSERT(Utils::IsAligned(size, kObjectAlignment)); uword tags = 0; tags = UntaggedObject::ClassIdTag::update(class_id, tags); @@ -897,7 +897,9 @@ void Deserializer::InitializeHeader(ObjectPtr raw, tags = UntaggedObject::NotMarkedBit::update(true, tags); tags = UntaggedObject::OldAndNotRememberedBit::update(true, tags); tags = UntaggedObject::NewOrEvacuationCandidateBit::update(false, tags); - tags = UntaggedObject::ImmutableBit::update(is_immutable, tags); + tags = UntaggedObject::ShallowImmutableBit::update( + Object::ShouldHaveShallowImmutabilityBitSet(class_id), tags); + tags = UntaggedObject::DeeplyImmutableBit::update(is_deeply_immutable, tags); raw->untag()->tags_ = tags; } @@ -906,9 +908,10 @@ void SerializationCluster::WriteAndMeasureAlloc(Serializer* serializer) { intptr_t start_size = serializer->bytes_written(); intptr_t start_data = serializer->GetDataSize(); intptr_t start_objects = serializer->next_ref_index(); - uint32_t tags = UntaggedObject::ClassIdTag::encode(cid_) | - UntaggedObject::CanonicalBit::encode(is_canonical()) | - UntaggedObject::ImmutableBit::encode(is_immutable()); + uint32_t tags = + UntaggedObject::ClassIdTag::encode(cid_) | + UntaggedObject::CanonicalBit::encode(is_canonical()) | + UntaggedObject::DeeplyImmutableBit::encode(is_deeply_immutable()); serializer->Write(tags); WriteAlloc(serializer); intptr_t stop_size = serializer->bytes_written(); @@ -4555,9 +4558,9 @@ class AbstractInstanceDeserializationCluster : public DeserializationCluster { protected: explicit AbstractInstanceDeserializationCluster(const char* name, bool is_canonical, - bool is_immutable, + bool is_deeply_immutable, bool is_root_unit) - : DeserializationCluster(name, is_canonical, is_immutable), + : DeserializationCluster(name, is_canonical, is_deeply_immutable), is_root_unit_(is_root_unit) {} const bool is_root_unit_; @@ -4584,11 +4587,11 @@ class InstanceDeserializationCluster public: explicit InstanceDeserializationCluster(intptr_t cid, bool is_canonical, - bool is_immutable, + bool is_deeply_immutable, bool is_root_unit) : AbstractInstanceDeserializationCluster("Instance", is_canonical, - is_immutable, + is_deeply_immutable, is_root_unit), cid_(cid) {} ~InstanceDeserializationCluster() {} @@ -4611,7 +4614,7 @@ class InstanceDeserializationCluster const intptr_t cid = cid_; const bool mark_canonical = is_root_unit_ && is_canonical(); - const bool is_immutable = is_immutable_; + const bool is_deeply_immutable = is_deeply_immutable_; intptr_t next_field_offset = next_field_offset_in_words_ << kCompressedWordSizeLog2; intptr_t instance_size = Object::RoundedAllocationSize( @@ -4621,7 +4624,7 @@ class InstanceDeserializationCluster for (intptr_t id = start_index_, n = stop_index_; id < n; id++) { InstancePtr instance = static_cast(d.Ref(id)); Deserializer::InitializeHeader(instance, cid, instance_size, - mark_canonical, is_immutable); + mark_canonical, is_deeply_immutable); intptr_t offset = Instance::NextFieldOffset(); while (offset < next_field_offset) { if (unboxed_fields_bitmap.Get(offset / kCompressedWordSize)) { @@ -5248,11 +5251,11 @@ class ClosureDeserializationCluster : public AbstractInstanceDeserializationCluster { public: explicit ClosureDeserializationCluster(bool is_canonical, - bool is_immutable, + bool is_deeply_immutable, bool is_root_unit) : AbstractInstanceDeserializationCluster("Closure", is_canonical, - is_immutable, + is_deeply_immutable, is_root_unit) {} ~ClosureDeserializationCluster() {} @@ -5345,12 +5348,10 @@ class MintSerializationCluster : public SerializationCluster { class MintDeserializationCluster : public AbstractInstanceDeserializationCluster { public: - explicit MintDeserializationCluster(bool is_canonical, - bool is_immutable, - bool is_root_unit) + explicit MintDeserializationCluster(bool is_canonical, bool is_root_unit) : AbstractInstanceDeserializationCluster("int", is_canonical, - is_immutable, + /*is_deeply_immutable=*/true, is_root_unit) {} ~MintDeserializationCluster() {} @@ -5417,14 +5418,12 @@ class DoubleSerializationCluster : public SerializationCluster { class DoubleDeserializationCluster : public AbstractInstanceDeserializationCluster { public: - explicit DoubleDeserializationCluster(bool is_canonical, - bool is_immutable, - bool is_root_unit) + explicit DoubleDeserializationCluster(bool is_canonical, bool is_root_unit) : AbstractInstanceDeserializationCluster("double", is_canonical, - is_immutable, + /*is_deeply_immutable=*/true, is_root_unit) { - ASSERT(Object::ShouldHaveImmutabilityBitSet(kDoubleCid)); + ASSERT(Object::ShouldHaveDeeplyImmutabilityBitSet(kDoubleCid)); } ~DoubleDeserializationCluster() {} @@ -5492,11 +5491,10 @@ class Simd128DeserializationCluster public: explicit Simd128DeserializationCluster(intptr_t cid, bool is_canonical, - bool is_immutable, bool is_root_unit) : AbstractInstanceDeserializationCluster("Simd128", is_canonical, - is_immutable, + /*is_deeply_immutable=*/true, is_root_unit), cid_(cid) {} ~Simd128DeserializationCluster() {} @@ -5511,7 +5509,7 @@ class Simd128DeserializationCluster Deserializer::Local d(d_); const intptr_t cid = cid_; const bool mark_canonical = is_root_unit_ && is_canonical(); - const bool is_immutable = ShouldHaveImmutabilityBitSetCid(cid); + const bool is_immutable = Object::ShouldHaveDeeplyImmutabilityBitSet(cid); for (intptr_t id = start_index_, n = stop_index_; id < n; id++) { ObjectPtr vector = d.Ref(id); Deserializer::InitializeHeader(vector, cid, Int32x4::InstanceSize(), @@ -5641,11 +5639,11 @@ class RecordDeserializationCluster : public AbstractInstanceDeserializationCluster { public: explicit RecordDeserializationCluster(bool is_canonical, - bool is_immutable, + bool is_deeply_immutable, bool is_root_unit) : AbstractInstanceDeserializationCluster("Record", is_canonical, - is_immutable, + is_deeply_immutable, is_root_unit) {} ~RecordDeserializationCluster() {} @@ -6278,11 +6276,11 @@ class MapDeserializationCluster public: explicit MapDeserializationCluster(intptr_t cid, bool is_canonical, - bool is_immutable, + bool is_deeply_immutable, bool is_root_unit) : AbstractInstanceDeserializationCluster("Map", is_canonical, - is_immutable, + is_deeply_immutable, is_root_unit), cid_(cid) {} ~MapDeserializationCluster() {} @@ -6355,11 +6353,11 @@ class SetDeserializationCluster public: explicit SetDeserializationCluster(intptr_t cid, bool is_canonical, - bool is_immutable, + bool is_deeply_immutable, bool is_root_unit) : AbstractInstanceDeserializationCluster("Set", is_canonical, - is_immutable, + is_deeply_immutable, is_root_unit), cid_(cid) {} ~SetDeserializationCluster() {} @@ -6497,11 +6495,11 @@ class ArrayDeserializationCluster public: explicit ArrayDeserializationCluster(intptr_t cid, bool is_canonical, - bool is_immutable, + bool is_deeply_immutable, bool is_root_unit) : AbstractInstanceDeserializationCluster("Array", is_canonical, - is_immutable, + is_deeply_immutable, is_root_unit), cid_(cid) {} ~ArrayDeserializationCluster() {} @@ -6521,7 +6519,7 @@ class ArrayDeserializationCluster const intptr_t cid = cid_; const bool stamp_canonical = is_root_unit_ && is_canonical(); - const bool is_immutable = ShouldHaveImmutabilityBitSetCid(cid); + const bool is_immutable = Object::ShouldHaveDeeplyImmutabilityBitSet(cid); for (intptr_t id = start_index_, n = stop_index_; id < n; id++) { ArrayPtr array = static_cast(d.Ref(id)); const intptr_t length = d.ReadUnsigned(); @@ -9013,11 +9011,12 @@ DeserializationCluster* Deserializer::ReadCluster() { const uint32_t tags = Read(); const intptr_t cid = UntaggedObject::ClassIdTag::decode(tags); const bool is_canonical = UntaggedObject::CanonicalBit::decode(tags); - const bool is_immutable = UntaggedObject::ImmutableBit::decode(tags); + const bool is_deeply_immutable = + UntaggedObject::DeeplyImmutableBit::decode(tags); Zone* Z = zone_; if (cid >= kNumPredefinedCids || cid == kInstanceCid) { return new (Z) InstanceDeserializationCluster( - cid, is_canonical, is_immutable, !is_non_root_unit_); + cid, is_canonical, is_deeply_immutable, !is_non_root_unit_); } if (IsTypedDataViewClassId(cid)) { ASSERT(!is_canonical); @@ -9151,25 +9150,28 @@ DeserializationCluster* Deserializer::ReadCluster() { return new (Z) TypeParameterDeserializationCluster(is_canonical, !is_non_root_unit_); case kClosureCid: - return new (Z) ClosureDeserializationCluster(is_canonical, is_immutable, - !is_non_root_unit_); + return new (Z) ClosureDeserializationCluster( + is_canonical, is_deeply_immutable, !is_non_root_unit_); case kMintCid: - return new (Z) MintDeserializationCluster(is_canonical, is_immutable, - !is_non_root_unit_); + RELEASE_ASSERT(is_deeply_immutable); + return new (Z) + MintDeserializationCluster(is_canonical, !is_non_root_unit_); case kDoubleCid: - return new (Z) DoubleDeserializationCluster(is_canonical, is_immutable, - !is_non_root_unit_); + RELEASE_ASSERT(is_deeply_immutable); + return new (Z) + DoubleDeserializationCluster(is_canonical, !is_non_root_unit_); case kInt32x4Cid: case kFloat32x4Cid: case kFloat64x2Cid: - return new (Z) Simd128DeserializationCluster( - cid, is_canonical, is_immutable, !is_non_root_unit_); + RELEASE_ASSERT(is_deeply_immutable); + return new (Z) + Simd128DeserializationCluster(cid, is_canonical, !is_non_root_unit_); case kGrowableObjectArrayCid: ASSERT(!is_canonical); return new (Z) GrowableObjectArrayDeserializationCluster(); case kRecordCid: - return new (Z) RecordDeserializationCluster(is_canonical, is_immutable, - !is_non_root_unit_); + return new (Z) RecordDeserializationCluster( + is_canonical, is_deeply_immutable, !is_non_root_unit_); case kStackTraceCid: ASSERT(!is_canonical); return new (Z) StackTraceDeserializationCluster(); @@ -9184,19 +9186,20 @@ DeserializationCluster* Deserializer::ReadCluster() { UNREACHABLE(); case kConstMapCid: return new (Z) MapDeserializationCluster( - kConstMapCid, is_canonical, is_immutable, !is_non_root_unit_); + kConstMapCid, is_canonical, is_deeply_immutable, !is_non_root_unit_); case kSetCid: // We do not have mutable hash sets in snapshots. UNREACHABLE(); case kConstSetCid: return new (Z) SetDeserializationCluster( - kConstSetCid, is_canonical, is_immutable, !is_non_root_unit_); + kConstSetCid, is_canonical, is_deeply_immutable, !is_non_root_unit_); case kArrayCid: return new (Z) ArrayDeserializationCluster( - kArrayCid, is_canonical, is_immutable, !is_non_root_unit_); + kArrayCid, is_canonical, is_deeply_immutable, !is_non_root_unit_); case kImmutableArrayCid: - return new (Z) ArrayDeserializationCluster( - kImmutableArrayCid, is_canonical, is_immutable, !is_non_root_unit_); + return new (Z) + ArrayDeserializationCluster(kImmutableArrayCid, is_canonical, + is_deeply_immutable, !is_non_root_unit_); case kWeakArrayCid: return new (Z) WeakArrayDeserializationCluster(); case kStringCid: @@ -9207,7 +9210,7 @@ DeserializationCluster* Deserializer::ReadCluster() { CLASS_LIST_FFI_TYPE_MARKER(CASE_FFI_CID) #undef CASE_FFI_CID return new (Z) InstanceDeserializationCluster( - cid, is_canonical, is_immutable, !is_non_root_unit_); + cid, is_canonical, is_deeply_immutable, !is_non_root_unit_); case kDeltaEncodedTypedDataCid: return new (Z) DeltaEncodedTypedDataDeserializationCluster(); default: diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h index b3dea612676..7acc1a06486 100644 --- a/runtime/vm/bootstrap_natives.h +++ b/runtime/vm/bootstrap_natives.h @@ -279,6 +279,7 @@ namespace dart { V(Internal_deoptimizeFunctionsOnStack, 0) \ V(Internal_allocateObjectInstructionsStart, 0) \ V(Internal_allocateObjectInstructionsEnd, 0) \ + V(Internal_ensureDeeplyImmutable, 1) \ V(InvocationMirror_unpackTypeArguments, 2) \ V(NoSuchMethodError_existingMethodSignature, 3) \ V(ThreadLocal_allocateId, 0) \ diff --git a/runtime/vm/bytecode_reader.cc b/runtime/vm/bytecode_reader.cc index 8f5ef6da174..fa7018ce121 100644 --- a/runtime/vm/bytecode_reader.cc +++ b/runtime/vm/bytecode_reader.cc @@ -2311,6 +2311,7 @@ void BytecodeReaderHelper::ReadClassDeclaration(const Class& cls) { const int kIsBaseClassFlag = 1 << 11; const int kIsInterfaceFlag = 1 << 12; const int kIsFinalFlag = 1 << 13; + const int kIsDeeplyImmutableFlag = 1 << 14; // Class is allocated when reading library declaration in // BytecodeReaderHelper::ReadLibraryDeclaration. @@ -2370,6 +2371,9 @@ void BytecodeReaderHelper::ReadClassDeclaration(const Class& cls) { if ((flags & kIsFinalFlag) != 0) { cls.set_is_final(); } + if ((flags & kIsDeeplyImmutableFlag) != 0) { + cls.set_is_deeply_immutable(true); + } intptr_t num_type_arguments = 0; if ((flags & kHasTypeArgumentsFlag) != 0) { diff --git a/runtime/vm/class_id.h b/runtime/vm/class_id.h index 1055ce6da84..2307c1a2aa5 100644 --- a/runtime/vm/class_id.h +++ b/runtime/vm/class_id.h @@ -599,13 +599,6 @@ inline bool IsShallowlyImmutableCid(intptr_t predefined_cid) { IsUnmodifiableTypedDataViewClassId(predefined_cid); } -// See documentation on ImmutableBit in raw_object.h -inline bool ShouldHaveImmutabilityBitSetCid(intptr_t predefined_cid) { - ASSERT(predefined_cid < kNumPredefinedCids); - return IsDeeplyImmutableCid(predefined_cid) || - IsShallowlyImmutableCid(predefined_cid); -} - inline bool IsFfiTypeClassId(intptr_t index) { switch (index) { case kPointerCid: diff --git a/runtime/vm/compiler/backend/constant_propagator.cc b/runtime/vm/compiler/backend/constant_propagator.cc index 901bb6dd0a1..44f3838561f 100644 --- a/runtime/vm/compiler/backend/constant_propagator.cc +++ b/runtime/vm/compiler/backend/constant_propagator.cc @@ -287,6 +287,9 @@ void ConstantPropagator::VisitGuardFieldLength(GuardFieldLengthInstr* instr) {} void ConstantPropagator::VisitGuardFieldType(GuardFieldTypeInstr* instr) {} +void ConstantPropagator::VisitCheckFieldImmutability( + CheckFieldImmutabilityInstr* instr) {} + void ConstantPropagator::VisitCheckSmi(CheckSmiInstr* instr) {} void ConstantPropagator::VisitTailCall(TailCallInstr* instr) {} diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.h b/runtime/vm/compiler/backend/flow_graph_compiler.h index 2259ac86e19..bc02db3892b 100644 --- a/runtime/vm/compiler/backend/flow_graph_compiler.h +++ b/runtime/vm/compiler/backend/flow_graph_compiler.h @@ -359,8 +359,8 @@ class FieldAccessErrorSlowPath : public ThrowErrorSlowPathCode { class CheckedStoreIntoSharedSlowPath : public TemplateSlowPathCode { public: - explicit CheckedStoreIntoSharedSlowPath(StoreStaticFieldInstr* instruction, - Register value) + CheckedStoreIntoSharedSlowPath(StoreStaticFieldInstr* instruction, + Register value) : TemplateSlowPathCode(instruction), value_(value) {} virtual void EmitNativeCode(FlowGraphCompiler* compiler); @@ -375,6 +375,20 @@ class CheckedStoreIntoSharedSlowPath Register value() const { return value_; } }; +class EnsureDeeplyImmutableSlowPath : public TemplateSlowPathCode { + public: + EnsureDeeplyImmutableSlowPath(CheckFieldImmutabilityInstr* instruction, + Register value) + : TemplateSlowPathCode(instruction), value_(value) {} + + virtual void EmitNativeCode(FlowGraphCompiler* compiler); + + private: + Register value_; + + Register value() const { return value_; } +}; + enum class TypeTestOutcome { kConclusive, kNotConclusive }; class FlowGraphCompiler : public ValueObject { diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc index 84c7e0933f8..b1a00d7a6d9 100644 --- a/runtime/vm/compiler/backend/il.cc +++ b/runtime/vm/compiler/backend/il.cc @@ -1057,6 +1057,11 @@ bool GuardFieldTypeInstr::AttributesEqual(const Instruction& other) const { return field().ptr() == other.AsGuardFieldType()->field().ptr(); } +bool CheckFieldImmutabilityInstr::AttributesEqual( + const Instruction& other) const { + return field().ptr() == other.AsCheckFieldImmutability()->field().ptr(); +} + Instruction* AssertSubtypeInstr::Canonicalize(FlowGraph* flow_graph) { // If all inputs needed to check instantiation are constant, instantiate the // sub and super type and remove the instruction if the subtype test succeeds. @@ -3944,6 +3949,10 @@ Instruction* GuardFieldTypeInstr::Canonicalize(FlowGraph* flow_graph) { : nullptr; } +Instruction* CheckFieldImmutabilityInstr::Canonicalize(FlowGraph* flow_graph) { + return this; +} + Instruction* CheckSmiInstr::Canonicalize(FlowGraph* flow_graph) { return (value()->Type()->ToCid() == kSmiCid) ? nullptr : this; } @@ -6437,6 +6446,34 @@ void CheckedStoreIntoSharedSlowPath::EmitNativeCode( __ Jump(exit_label()); } +void EnsureDeeplyImmutableSlowPath::EmitNativeCode( + FlowGraphCompiler* compiler) { + __ Comment("EnsureDeeplyImmutableSlowPath"); + __ Bind(entry_label()); + + LocationSummary* locs = instruction()->locs(); + locs->live_registers()->Remove(locs->out(0)); + + compiler->SaveLiveRegisters(locs); + + auto slow_path_env = + compiler->SlowPathEnvironmentFor(instruction(), /*num_slow_path_args=*/0); + +#if defined(TARGET_ARCH_IA32) + __ MoveRegister(EnsureDeeplyImmutableStubABI::kValueReg, value()); +#else + ASSERT(value() == EnsureDeeplyImmutableStubABI::kValueReg); +#endif + + compiler->GenerateStubCall(instruction()->source(), + StubCode::EnsureDeeplyImmutable(), + UntaggedPcDescriptors::kOther, locs, + instruction()->deopt_id(), slow_path_env); + + compiler->RestoreLiveRegisters(instruction()->locs()); + __ Jump(exit_label()); +} + void UnboxInstr::EmitLoadFromBoxWithDeopt(FlowGraphCompiler* compiler) { const intptr_t box_cid = BoxCid(); ASSERT(box_cid != kSmiCid); // Should never reach here with Smi-able ints. diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h index 617d488e9d5..91d3e88fee9 100644 --- a/runtime/vm/compiler/backend/il.h +++ b/runtime/vm/compiler/backend/il.h @@ -520,6 +520,7 @@ struct InstrAttrs { M(GuardFieldClass, _) \ M(GuardFieldLength, _) \ M(GuardFieldType, _) \ + M(CheckFieldImmutability, _) \ M(IfThenElse, kNoGC) \ M(MaterializeObject, _) \ M(TestInt, kNoGC) \ @@ -6608,6 +6609,55 @@ class GuardFieldTypeInstr : public GuardFieldInstr { DISALLOW_COPY_AND_ASSIGN(GuardFieldTypeInstr); }; +// Throws if [value] is not immutable. +// +// This is used when it's impossible to conclude from the variable static type +// whether value is immutable(in case of closures, for example). +class CheckFieldImmutabilityInstr : public TemplateInstruction<1, Throws> { + public: + CheckFieldImmutabilityInstr(Value* value, + const Field& field, + intptr_t deopt_id) + : TemplateInstruction(deopt_id), field_(field) { + SetInputAt(0, value); + CheckField(field); + } + + Value* value() const { return inputs_[0]; } + enum { + kValue = 0, + }; + + const Field& field() const { return field_; } + + DECLARE_INSTRUCTION(CheckFieldImmutability) + + virtual bool ComputeCanDeoptimize() const { return false; } + virtual bool ComputeCanDeoptimizeAfterCall() const { + return !CompilerState::Current().is_aot(); + } + virtual bool CanBecomeDeoptimizationTarget() const { return true; } + + virtual bool AllowsCSE() const { return true; } + virtual bool HasUnknownSideEffects() const { return false; } + + virtual Instruction* Canonicalize(FlowGraph* flow_graph); + + virtual bool AttributesEqual(const Instruction& other) const; + + PRINT_OPERANDS_TO_SUPPORT + +#define FIELD_LIST(F) F(const Field&, field_) + + DECLARE_INSTRUCTION_SERIALIZABLE_FIELDS(CheckFieldImmutabilityInstr, + TemplateInstruction, + FIELD_LIST) +#undef FIELD_LIST + + private: + DISALLOW_COPY_AND_ASSIGN(CheckFieldImmutabilityInstr); +}; + enum class SlowPathOnSentinelValue { kDoNothing, kThrowAccessError, // This is part of shared field implementation. diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc index 9ecd6cc8a58..e0863d6ff2f 100644 --- a/runtime/vm/compiler/backend/il_arm.cc +++ b/runtime/vm/compiler/backend/il_arm.cc @@ -2776,6 +2776,39 @@ void GuardFieldLengthInstr::EmitNativeCode(FlowGraphCompiler* compiler) { DEFINE_UNIMPLEMENTED_INSTRUCTION(GuardFieldTypeInstr) +LocationSummary* CheckFieldImmutabilityInstr::MakeLocationSummary( + Zone* zone, + bool opt) const { + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 1; + LocationSummary* summary = new (zone) LocationSummary( + zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath); + summary->set_in( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kValueReg)); + summary->set_temp( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kTempReg)); + return summary; +} + +void CheckFieldImmutabilityInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + const Register value = locs()->in(0).reg(); + const Register temp = locs()->temp(0).reg(); + + auto slow_path = new EnsureDeeplyImmutableSlowPath(this, value); + compiler->AddSlowPathCode(slow_path); + + __ BranchIfSmi(value, slow_path->exit_label(), + compiler::Assembler::kNearJump); + __ ldrb(temp, compiler::FieldAddress( + value, compiler::target::Object::tags_offset())); + __ TestImmediate(temp, + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit); + // If immutability bit is not set, go to runtime. + __ b(slow_path->entry_label(), ZERO); + + __ Bind(slow_path->exit_label()); +} + LocationSummary* LoadCodeUnitsInstr::MakeLocationSummary(Zone* zone, bool opt) const { const bool might_box = (representation() == kTagged) && !can_pack_into_smi(); @@ -2946,17 +2979,11 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 1 << compiler::target::UntaggedObject::kCanonicalBit); // If canonical bit is set, no need for runtime check. __ b(&allow_store, NOT_ZERO); - __ TestImmediate(temp, - 1 << compiler::target::UntaggedObject::kImmutableBit); + __ TestImmediate( + temp, 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit); // If immutability bit is not set, go to runtime. __ b(checked_store_into_shared_slow_path->entry_label(), ZERO); - // If immutability bit is set, skip runtime unless it's a Closure - // (see raw_object.h ImmutableBit description for deep vs shallow). - __ LoadClassId(temp, value); - __ CompareImmediate(temp, kClosureCid); - __ b(checked_store_into_shared_slow_path->entry_label(), EQ); - __ Bind(&allow_store); } } @@ -6339,8 +6366,11 @@ void CheckWritableInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ ldr(TMP, compiler::FieldAddress(locs()->in(0).reg(), compiler::target::Object::tags_offset())); // In the first byte. - ASSERT(compiler::target::UntaggedObject::kImmutableBit < 8); - __ TestImmediate(TMP, 1 << compiler::target::UntaggedObject::kImmutableBit); + ASSERT(compiler::target::UntaggedObject::kDeeplyImmutableBit < 8); + ASSERT(compiler::target::UntaggedObject::kShallowImmutableBit < 8); + __ TestImmediate( + TMP, 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit | + 1 << compiler::target::UntaggedObject::kShallowImmutableBit); __ b(slow_path->entry_label(), NOT_ZERO); } diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc index 7f3f07ab57a..4e14b6ed054 100644 --- a/runtime/vm/compiler/backend/il_arm64.cc +++ b/runtime/vm/compiler/backend/il_arm64.cc @@ -2559,13 +2559,7 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { compiler::target::UntaggedObject::kCanonicalBit); // If immutability bit is not set, go to runtime. __ tbz(checked_store_into_shared_slow_path->entry_label(), temp, - compiler::target::UntaggedObject::kImmutableBit); - - // If immutability bit is set, skip runtime unless it's a Closure - // (see raw_object.h ImmutableBit description for deep vs shallow). - __ LoadClassId(temp, value); - __ CompareImmediate(temp, kClosureCid); - __ b(checked_store_into_shared_slow_path->entry_label(), EQ); + compiler::target::UntaggedObject::kDeeplyImmutableBit); __ Bind(&allow_store); } @@ -2591,6 +2585,39 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { } } +LocationSummary* CheckFieldImmutabilityInstr::MakeLocationSummary( + Zone* zone, + bool opt) const { + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 1; + LocationSummary* summary = new (zone) LocationSummary( + zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath); + summary->set_in( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kValueReg)); + summary->set_temp( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kTempReg)); + return summary; +} + +void CheckFieldImmutabilityInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + const Register value = locs()->in(0).reg(); + const Register temp = locs()->temp(0).reg(); + + auto slow_path = new EnsureDeeplyImmutableSlowPath(this, value); + compiler->AddSlowPathCode(slow_path); + + __ BranchIfSmi(value, slow_path->exit_label(), + compiler::Assembler::kNearJump); + __ ldr(temp, + compiler::FieldAddress(value, compiler::target::Object::tags_offset()), + compiler::kUnsignedByte); + // If immutability bit is not set, go to runtime. + __ tbz(slow_path->entry_label(), temp, + compiler::target::UntaggedObject::kDeeplyImmutableBit); + + __ Bind(slow_path->exit_label()); +} + LocationSummary* InstanceOfInstr::MakeLocationSummary(Zone* zone, bool opt) const { const intptr_t kNumInputs = 3; @@ -5337,9 +5364,12 @@ void CheckWritableInstr::EmitNativeCode(FlowGraphCompiler* compiler) { compiler::target::Object::tags_offset()), compiler::kUnsignedByte); // In the first byte. - ASSERT(compiler::target::UntaggedObject::kImmutableBit < 8); - __ tbnz(slow_path->entry_label(), TMP, - compiler::target::UntaggedObject::kImmutableBit); + ASSERT(compiler::target::UntaggedObject::kDeeplyImmutableBit < 8); + ASSERT(compiler::target::UntaggedObject::kShallowImmutableBit < 8); + __ TestImmediate( + TMP, 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit | + 1 << compiler::target::UntaggedObject::kShallowImmutableBit); + __ b(slow_path->entry_label(), NOT_ZERO); } class Int64DivideSlowPath : public ThrowErrorSlowPathCode { diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc index 1a1fbe1c46c..1ba72bf8cd9 100644 --- a/runtime/vm/compiler/backend/il_ia32.cc +++ b/runtime/vm/compiler/backend/il_ia32.cc @@ -2102,6 +2102,41 @@ void GuardFieldLengthInstr::EmitNativeCode(FlowGraphCompiler* compiler) { } } +LocationSummary* CheckFieldImmutabilityInstr::MakeLocationSummary( + Zone* zone, + bool opt) const { + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 1; + LocationSummary* summary = new (zone) LocationSummary( + zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath); + summary->set_in( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kValueReg)); + summary->set_temp( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kTempReg)); + return summary; +} + +void CheckFieldImmutabilityInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + const Register value = locs()->in(0).reg(); + const Register temp = locs()->temp(0).reg(); + + auto slow_path = new EnsureDeeplyImmutableSlowPath(this, value); + compiler->AddSlowPathCode(slow_path); + + __ BranchIfSmi(value, slow_path->exit_label(), + compiler::Assembler::kNearJump); + + __ movl(temp, compiler::FieldAddress( + value, compiler::target::Object::tags_offset())); + __ testl(temp, + compiler::Immediate( + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit)); + // If immutability bit is not set, go to runtime. + __ j(ZERO, slow_path->entry_label(), compiler::Assembler::kNearJump); + + __ Bind(slow_path->exit_label()); +} + LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone, bool opt) const { const intptr_t kNumTemps = @@ -2157,17 +2192,12 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 1 << compiler::target::UntaggedObject::kCanonicalBit)); // If canonical bit is set, no need for runtime check. __ j(NOT_ZERO, &allow_store); - __ testl(temp, compiler::Immediate( - 1 << compiler::target::UntaggedObject::kImmutableBit)); + __ testl(temp, + compiler::Immediate( + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit)); // If immutability bit is not set, go to runtime. __ j(ZERO, checked_store_into_shared_slow_path->entry_label()); - // If immutability bit is set, skip runtime unless it's a Closure - // (see raw_object.h ImmutableBit description for deep vs shallow). - __ LoadClassId(temp, in); - __ CompareImmediate(temp, kClosureCid); - __ BranchIf(EQUAL, checked_store_into_shared_slow_path->entry_label()); - __ Bind(&allow_store); } } @@ -5460,8 +5490,10 @@ void CheckWritableInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ movl(temp, compiler::FieldAddress(locs()->in(0).reg(), compiler::target::Object::tags_offset())); - __ testl(temp, compiler::Immediate( - 1 << compiler::target::UntaggedObject::kImmutableBit)); + __ testl(temp, + compiler::Immediate( + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit | + 1 << compiler::target::UntaggedObject::kShallowImmutableBit)); __ j(NOT_ZERO, slow_path->entry_label()); } diff --git a/runtime/vm/compiler/backend/il_printer.cc b/runtime/vm/compiler/backend/il_printer.cc index 67813865637..f6c040754c2 100644 --- a/runtime/vm/compiler/backend/il_printer.cc +++ b/runtime/vm/compiler/backend/il_printer.cc @@ -959,6 +959,11 @@ void GuardFieldInstr::PrintOperandsTo(BaseTextBuffer* f) const { value()->PrintTo(f); } +void CheckFieldImmutabilityInstr::PrintOperandsTo(BaseTextBuffer* f) const { + f->Printf("%s , ", String::Handle(field().name()).ToCString()); + value()->PrintTo(f); +} + void StoreFieldInstr::PrintOperandsTo(BaseTextBuffer* f) const { instance()->PrintTo(f); f->Printf(" . %s = ", slot().Name()); diff --git a/runtime/vm/compiler/backend/il_riscv.cc b/runtime/vm/compiler/backend/il_riscv.cc index e71ff92abfd..01b61eba609 100644 --- a/runtime/vm/compiler/backend/il_riscv.cc +++ b/runtime/vm/compiler/backend/il_riscv.cc @@ -2449,6 +2449,39 @@ static void LoadValueCid(FlowGraphCompiler* compiler, DEFINE_UNIMPLEMENTED_INSTRUCTION(GuardFieldTypeInstr) +LocationSummary* CheckFieldImmutabilityInstr::MakeLocationSummary( + Zone* zone, + bool opt) const { + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 1; + LocationSummary* summary = new (zone) LocationSummary( + zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath); + summary->set_in( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kValueReg)); + summary->set_temp( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kTempReg)); + return summary; +} + +void CheckFieldImmutabilityInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + const Register value = locs()->in(0).reg(); + const Register temp = locs()->temp(0).reg(); + + auto slow_path = new EnsureDeeplyImmutableSlowPath(this, value); + compiler->AddSlowPathCode(slow_path); + + __ BranchIfSmi(value, slow_path->exit_label(), + compiler::Assembler::kNearJump); + __ lbu(temp, compiler::FieldAddress(value, + compiler::target::Object::tags_offset())); + __ andi(temp, temp, + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit); + // If immutability bit is not set, go to runtime. + __ beqz(temp, slow_path->entry_label()); + + __ Bind(slow_path->exit_label()); +} + LocationSummary* GuardFieldClassInstr::MakeLocationSummary(Zone* zone, bool opt) const { const intptr_t kNumInputs = 1; @@ -2754,16 +2787,11 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ andi(temp, TMP, 1 << compiler::target::UntaggedObject::kCanonicalBit); // If canonical bit is set, no need for runtime check. __ bnez(temp, &allow_store); - __ andi(temp, TMP, 1 << compiler::target::UntaggedObject::kImmutableBit); - // If immutability bit is not set, go to runtime. + __ andi(temp, TMP, + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit); + // If deeply immutability bit is not set, go to runtime. __ beqz(temp, checked_store_into_shared_slow_path->entry_label()); - // If immutability bit is set, skip runtime unless it's a Closure - // (see raw_object.h ImmutableBit description for deep vs shallow). - __ LoadClassId(TMP, value); - __ CompareImmediate(TMP, kClosureCid); - __ BranchIf(EQ, checked_store_into_shared_slow_path->entry_label()); - __ Bind(&allow_store); } } @@ -5486,8 +5514,11 @@ void CheckWritableInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ lbu(TMP, compiler::FieldAddress(locs()->in(0).reg(), compiler::target::Object::tags_offset())); // In the first byte. - ASSERT(compiler::target::UntaggedObject::kImmutableBit < 8); - __ andi(TMP, TMP, 1 << compiler::target::UntaggedObject::kImmutableBit); + ASSERT(compiler::target::UntaggedObject::kDeeplyImmutableBit < 8); + ASSERT(compiler::target::UntaggedObject::kShallowImmutableBit < 8); + __ andi(TMP, TMP, + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit | + 1 << compiler::target::UntaggedObject::kShallowImmutableBit); __ bnez(TMP, slow_path->entry_label()); } diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc index f26d2eb9bca..4f68512899b 100644 --- a/runtime/vm/compiler/backend/il_x64.cc +++ b/runtime/vm/compiler/backend/il_x64.cc @@ -2477,6 +2477,40 @@ void GuardFieldTypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ Bind(&ok); } +LocationSummary* CheckFieldImmutabilityInstr::MakeLocationSummary( + Zone* zone, + bool opt) const { + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 1; + LocationSummary* summary = new (zone) LocationSummary( + zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath); + summary->set_in( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kValueReg)); + summary->set_temp( + 0, Location::RegisterLocation(EnsureDeeplyImmutableStubABI::kTempReg)); + return summary; +} + +void CheckFieldImmutabilityInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + const Register value = locs()->in(0).reg(); + const Register temp = locs()->temp(0).reg(); + + auto slow_path = new EnsureDeeplyImmutableSlowPath(this, value); + compiler->AddSlowPathCode(slow_path); + + __ BranchIfSmi(value, slow_path->exit_label(), + compiler::Assembler::kNearJump); + __ movq(temp, compiler::FieldAddress( + value, compiler::target::Object::tags_offset())); + __ testq(temp, + compiler::Immediate( + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit)); + // If deep immutability bit is not set, go to runtime. + __ j(ZERO, slow_path->entry_label()); + + __ Bind(slow_path->exit_label()); +} + LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone, bool opt) const { const intptr_t kNumInputs = 1; @@ -2527,17 +2561,12 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 1 << compiler::target::UntaggedObject::kCanonicalBit)); // If canonical bit is set, no need for runtime check. __ j(NOT_ZERO, &allow_store); - __ testq(temp, compiler::Immediate( - 1 << compiler::target::UntaggedObject::kImmutableBit)); - // If immutability bit is not set, go to runtime. + __ testq(temp, + compiler::Immediate( + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit)); + // If deep immutability bit is not set, go to runtime. __ j(ZERO, checked_store_into_shared_slow_path->entry_label()); - // If immutability bit is set, skip runtime unless it's a Closure - // (see raw_object.h ImmutableBit description for deep vs shallow). - __ LoadClassId(temp, value); - __ CompareImmediate(temp, kClosureCid); - __ BranchIf(EQUAL, checked_store_into_shared_slow_path->entry_label()); - __ Bind(&allow_store); } } @@ -5649,8 +5678,10 @@ void CheckWritableInstr::EmitNativeCode(FlowGraphCompiler* compiler) { compiler->AddSlowPathCode(slow_path); __ movq(TMP, compiler::FieldAddress(locs()->in(0).reg(), compiler::target::Object::tags_offset())); - __ testq(TMP, compiler::Immediate( - 1 << compiler::target::UntaggedObject::kImmutableBit)); + __ testq(TMP, + compiler::Immediate( + 1 << compiler::target::UntaggedObject::kDeeplyImmutableBit | + 1 << compiler::target::UntaggedObject::kShallowImmutableBit)); __ j(NOT_ZERO, slow_path->entry_label()); } diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc index caa7615611f..1f7b9c4896f 100644 --- a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc +++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc @@ -597,7 +597,8 @@ Fragment BaseFlowGraphBuilder::StoreField( Fragment BaseFlowGraphBuilder::StoreFieldGuarded( const Field& field, - StoreFieldInstr::Kind kind /* = StoreFieldInstr::Kind::kOther */) { + StoreFieldInstr::Kind kind /* = StoreFieldInstr::Kind::kOther */, + bool requires_immutability_check /* = false */) { Fragment instructions; const Field& field_clone = MayCloneField(Z, field); if (IG->use_field_guards()) { @@ -632,6 +633,13 @@ Fragment BaseFlowGraphBuilder::StoreFieldGuarded( new (Z) GuardFieldTypeInstr(Pop(), field_clone, GetNextDeoptId()); } } + if (requires_immutability_check) { + ASSERT(kind == StoreFieldInstr::Kind::kInitializing); + LocalVariable* store_expression = MakeTemporary(); + instructions += LoadLocal(store_expression); + instructions <<= new (Z) + CheckFieldImmutabilityInstr(Pop(), field_clone, GetNextDeoptId()); + } instructions += StoreNativeField(Slot::Get(field_clone, parsed_function_), kind); return instructions; diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.h b/runtime/vm/compiler/frontend/base_flow_graph_builder.h index ef270a9315d..abe739bcb0c 100644 --- a/runtime/vm/compiler/frontend/base_flow_graph_builder.h +++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.h @@ -263,7 +263,8 @@ class BaseFlowGraphBuilder { StoreBarrierType emit_store_barrier = kEmitStoreBarrier); Fragment StoreFieldGuarded( const Field& field, - StoreFieldInstr::Kind kind = StoreFieldInstr::Kind::kOther); + StoreFieldInstr::Kind kind = StoreFieldInstr::Kind::kOther, + bool requires_immutability_check = false); Fragment LoadStaticField(const Field& field, bool calls_initializer); Fragment RedefinitionWithType(const AbstractType& type); Fragment ReachabilityFence(); diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc index 985b3c25ca5..f9ed67677d2 100644 --- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc +++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc @@ -178,8 +178,11 @@ Fragment StreamingFlowGraphBuilder::BuildFieldInitializer( if (only_for_side_effects) { instructions += Drop(); } else { + const auto& klass = Class::Handle(field.Owner()); + // TODO(dartbug.com/61078): Use static type to avoid runtime check. instructions += flow_graph_builder_->StoreFieldGuarded( - field, StoreFieldInstr::Kind::kInitializing); + field, StoreFieldInstr::Kind::kInitializing, + klass.is_deeply_immutable()); } return instructions; } diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc index 21d56306a84..3806fc40b69 100644 --- a/runtime/vm/compiler/runtime_api.cc +++ b/runtime/vm/compiler/runtime_api.cc @@ -368,8 +368,10 @@ uword MakeTagWordForNewSpaceObject(classid_t cid, uword instance_size) { dart::UntaggedObject::NewOrEvacuationCandidateBit::encode(true) | dart::UntaggedObject::AlwaysSetBit::encode(true) | dart::UntaggedObject::NotMarkedBit::encode(true) | - dart::UntaggedObject::ImmutableBit::encode( - dart::Object::ShouldHaveImmutabilityBitSet(cid)); + dart::UntaggedObject::ShallowImmutableBit::encode( + dart::Object::ShouldHaveShallowImmutabilityBitSet(cid)) | + dart::UntaggedObject::DeeplyImmutableBit::encode( + dart::Object::ShouldHaveDeeplyImmutabilityBitSet(cid)); } word Object::tags_offset() { @@ -391,8 +393,11 @@ const word UntaggedObject::kOldAndNotRememberedBit = const word UntaggedObject::kNotMarkedBit = dart::UntaggedObject::NotMarkedBit::shift(); -const word UntaggedObject::kImmutableBit = - dart::UntaggedObject::ImmutableBit::shift(); +const word UntaggedObject::kShallowImmutableBit = + dart::UntaggedObject::ShallowImmutableBit::shift(); + +const word UntaggedObject::kDeeplyImmutableBit = + dart::UntaggedObject::DeeplyImmutableBit::shift(); const word UntaggedObject::kSizeTagPos = dart::UntaggedObject::SizeTagBits::shift(); diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h index 95e0e9106d7..49e052088d8 100644 --- a/runtime/vm/compiler/runtime_api.h +++ b/runtime/vm/compiler/runtime_api.h @@ -422,7 +422,8 @@ class UntaggedObject : public AllStatic { static const word kNewOrEvacuationCandidateBit; static const word kOldAndNotRememberedBit; static const word kNotMarkedBit; - static const word kImmutableBit; + static const word kShallowImmutableBit; + static const word kDeeplyImmutableBit; static const word kSizeTagPos; static const word kSizeTagSize; static const word kClassIdTagPos; diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h index c75670d234c..2d9e317518a 100644 --- a/runtime/vm/compiler/runtime_offsets_extracted.h +++ b/runtime/vm/compiler/runtime_offsets_extracted.h @@ -321,11 +321,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x350; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x354; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x330; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x334; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x338; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -343,7 +343,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x418; + 0x41c; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -356,15 +356,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x104; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0x6c; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x454; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x45c; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x41c; + Thread_double_truncate_round_supported_offset = 0x420; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x458; + Thread_service_extension_stream_offset = 0x460; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x45c; + 0x464; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x12c; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -381,7 +381,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x30; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x344; + 0x348; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -401,7 +401,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x338; + 0x33c; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -409,10 +409,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x34c; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x308; + 0x350; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x30c; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x30c; + 0x310; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -422,9 +422,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x320; + Thread_old_marking_stack_block_offset = 0x324; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x324; + Thread_new_marking_stack_block_offset = 0x328; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -473,23 +473,23 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x154; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x33c; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x340; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x340; + Thread_saved_shadow_call_stack_offset = 0x344; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x348; + 0x34c; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x3c; -static constexpr dart::compiler::target::word Thread_single_step_offset = 0x444; +static constexpr dart::compiler::target::word Thread_single_step_offset = 0x44c; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 0xe8; static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x13c; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x310; + 0x314; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x314; + Thread_stack_overflow_flags_offset = 0x318; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -499,49 +499,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x31c; + 0x320; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x2e0; + Thread_suspend_state_await_entry_point_offset = 0x2e4; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2e4; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x2dc; + Thread_suspend_state_init_async_entry_point_offset = 0x2e0; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x2e8; + Thread_suspend_state_return_async_entry_point_offset = 0x2ec; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2ec; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x2f0; + Thread_suspend_state_init_async_star_entry_point_offset = 0x2f4; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x2f4; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x2f8; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x2f8; + Thread_suspend_state_return_async_star_entry_point_offset = 0x2fc; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x2fc; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x300; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x300; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x304; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x304; + Thread_suspend_state_handle_exception_entry_point_offset = 0x308; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x318; + Thread_top_exit_frame_info_offset = 0x31c; static constexpr dart::compiler::target::word Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x420; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x32c; + Thread_unboxed_runtime_arg_offset = 0x428; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x330; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x28; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x430; -static constexpr dart::compiler::target::word Thread_random_offset = 0x438; + 0x438; +static constexpr dart::compiler::target::word Thread_random_offset = 0x440; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x138; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x440; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x44c; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x450; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x448; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x448; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x454; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x458; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x450; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -626,8 +626,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x2bc, 0x2c0, 0x2c4, 0x2c8, 0x2cc, -1, 0x2d0, -1, - 0x2d4, 0x2d8, -1, -1, -1, -1, -1, -1}; + 0x2c0, 0x2c4, 0x2c8, 0x2cc, 0x2d0, -1, 0x2d4, -1, + 0x2d8, 0x2dc, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8; static constexpr dart::compiler::target::word Array_header_size = 0xc; @@ -1043,11 +1043,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6b8; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c0; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x678; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x680; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x688; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -1065,7 +1065,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x848; + 0x850; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -1078,15 +1078,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x208; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xd8; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8a0; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8a8; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x850; + Thread_double_truncate_round_supported_offset = 0x858; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8a8; + Thread_service_extension_stream_offset = 0x8b0; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x8b0; + 0x8b8; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -1103,7 +1103,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x60; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6a0; + 0x6a8; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -1123,7 +1123,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x688; + 0x690; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -1131,10 +1131,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x6b0; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x628; + 0x6b8; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x630; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x630; + 0x638; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -1144,9 +1144,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x658; + Thread_old_marking_stack_block_offset = 0x660; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x660; + Thread_new_marking_stack_block_offset = 0x668; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -1195,23 +1195,23 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2a8; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x690; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x698; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x698; + Thread_saved_shadow_call_stack_offset = 0x6a0; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6a8; + 0x6b0; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x78; -static constexpr dart::compiler::target::word Thread_single_step_offset = 0x880; +static constexpr dart::compiler::target::word Thread_single_step_offset = 0x888; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 0x1d0; static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x278; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x638; + 0x640; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x640; + Thread_stack_overflow_flags_offset = 0x648; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -1221,49 +1221,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x650; + 0x658; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x5d8; + Thread_suspend_state_await_entry_point_offset = 0x5e0; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e0; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e8; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x5d0; + Thread_suspend_state_init_async_entry_point_offset = 0x5d8; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x5e8; + Thread_suspend_state_return_async_entry_point_offset = 0x5f0; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f0; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f8; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x5f8; + Thread_suspend_state_init_async_star_entry_point_offset = 0x600; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x600; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x608; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x608; + Thread_suspend_state_return_async_star_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x610; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x618; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x620; + Thread_suspend_state_handle_exception_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x648; + Thread_top_exit_frame_info_offset = 0x650; static constexpr dart::compiler::target::word Thread_top_offset = 0x58; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x858; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x670; + Thread_unboxed_runtime_arg_offset = 0x860; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x678; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x868; -static constexpr dart::compiler::target::word Thread_random_offset = 0x870; + 0x870; +static constexpr dart::compiler::target::word Thread_random_offset = 0x878; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x270; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x878; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x890; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x898; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x888; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x880; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x898; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8a0; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x890; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -1352,8 +1352,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x578, 0x580, 0x588, 0x590, -1, -1, 0x598, 0x5a0, - 0x5a8, 0x5b0, 0x5b8, -1, 0x5c0, 0x5c8, -1, -1}; + 0x580, 0x588, 0x590, 0x598, -1, -1, 0x5a0, 0x5a8, + 0x5b0, 0x5b8, 0x5c0, -1, 0x5c8, 0x5d0, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x18; @@ -1765,11 +1765,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x344; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x348; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x324; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x328; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x32c; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -1787,7 +1787,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x40c; + 0x410; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -1804,7 +1804,7 @@ static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x44c; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x410; + Thread_double_truncate_round_supported_offset = 0x414; static constexpr dart::compiler::target::word Thread_service_extension_stream_offset = 0x450; static constexpr dart::compiler::target::word Thread_thread_locals_offset = @@ -1825,7 +1825,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x30; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x338; + 0x33c; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -1845,7 +1845,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x32c; + 0x330; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -1853,10 +1853,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x340; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x2fc; + 0x344; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x300; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x300; + 0x304; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -1866,9 +1866,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x314; + Thread_old_marking_stack_block_offset = 0x318; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x318; + Thread_new_marking_stack_block_offset = 0x31c; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -1917,11 +1917,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x154; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x330; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x334; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x334; + Thread_saved_shadow_call_stack_offset = 0x338; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x33c; + 0x340; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x3c; static constexpr dart::compiler::target::word Thread_single_step_offset = 0x43c; @@ -1931,9 +1931,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x13c; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x304; + 0x308; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x308; + Thread_stack_overflow_flags_offset = 0x30c; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -1943,36 +1943,36 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x310; + 0x314; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x2d4; + Thread_suspend_state_await_entry_point_offset = 0x2d8; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2d8; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2dc; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x2d0; + Thread_suspend_state_init_async_entry_point_offset = 0x2d4; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x2dc; + Thread_suspend_state_return_async_entry_point_offset = 0x2e0; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2e0; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2e4; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x2e4; + Thread_suspend_state_init_async_star_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x2e8; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x2ec; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x2ec; + Thread_suspend_state_return_async_star_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x2f0; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x2f4; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x2f4; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x2f8; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x2f8; + Thread_suspend_state_handle_exception_entry_point_offset = 0x2fc; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x30c; + Thread_top_exit_frame_info_offset = 0x310; static constexpr dart::compiler::target::word Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word Thread_unboxed_runtime_arg_offset = 0x418; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x320; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x324; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = @@ -2070,7 +2070,7 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x2bc, 0x2c0, 0x2c4, 0x2c8, -1, -1, -1, 0x2cc}; + 0x2c0, 0x2c4, 0x2c8, 0x2cc, -1, -1, -1, 0x2d0}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8; static constexpr dart::compiler::target::word Array_header_size = 0xc; @@ -2486,11 +2486,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x700; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x708; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x6c0; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x6c8; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x6d0; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -2508,7 +2508,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x890; + 0x898; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -2521,15 +2521,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x208; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xd8; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8e8; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8f0; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x898; + Thread_double_truncate_round_supported_offset = 0x8a0; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8f0; + Thread_service_extension_stream_offset = 0x8f8; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x8f8; + 0x900; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -2546,7 +2546,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x60; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6e8; + 0x6f0; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -2566,7 +2566,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x6d0; + 0x6d8; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -2574,10 +2574,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x6f8; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x670; + 0x700; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x678; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x678; + 0x680; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -2587,9 +2587,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x6a0; + Thread_old_marking_stack_block_offset = 0x6a8; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x6a8; + Thread_new_marking_stack_block_offset = 0x6b0; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -2638,23 +2638,23 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2a8; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6d8; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6e0; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x6e0; + Thread_saved_shadow_call_stack_offset = 0x6e8; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6f0; + 0x6f8; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x78; -static constexpr dart::compiler::target::word Thread_single_step_offset = 0x8c8; +static constexpr dart::compiler::target::word Thread_single_step_offset = 0x8d0; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 0x1d0; static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x278; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x680; + 0x688; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x688; + Thread_stack_overflow_flags_offset = 0x690; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -2664,49 +2664,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x698; + 0x6a0; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x620; + Thread_suspend_state_await_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x628; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x618; + Thread_suspend_state_init_async_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x630; + Thread_suspend_state_return_async_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x638; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x640; + Thread_suspend_state_init_async_star_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x648; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x650; + Thread_suspend_state_return_async_star_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x658; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x660; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x668; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x668; + Thread_suspend_state_handle_exception_entry_point_offset = 0x670; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x690; + Thread_top_exit_frame_info_offset = 0x698; static constexpr dart::compiler::target::word Thread_top_offset = 0x58; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x8a0; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6b8; + Thread_unboxed_runtime_arg_offset = 0x8a8; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6c0; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x8b0; -static constexpr dart::compiler::target::word Thread_random_offset = 0x8b8; + 0x8b8; +static constexpr dart::compiler::target::word Thread_random_offset = 0x8c0; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x270; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8c0; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8d8; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8e0; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8d0; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8c8; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8e0; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8e8; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8d8; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -2795,10 +2795,10 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x578, 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, - 0x5b8, 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, -1, - -1, -1, -1, 0x5f0, 0x5f8, -1, -1, 0x600, - 0x608, 0x610, -1, -1, -1, -1, -1, -1}; + 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, + 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, -1, + -1, -1, -1, 0x5f8, 0x600, -1, -1, 0x608, + 0x610, 0x618, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x18; @@ -3212,11 +3212,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c0; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c8; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x680; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x688; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x690; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x208; static constexpr dart::compiler::target::word @@ -3234,7 +3234,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x238; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x850; + 0x858; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x168; static constexpr dart::compiler::target::word @@ -3247,15 +3247,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x210; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xe0; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8a8; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8b0; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x70; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x858; + Thread_double_truncate_round_supported_offset = 0x860; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8b0; + Thread_service_extension_stream_offset = 0x8b8; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x8b8; + 0x8c0; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x260; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -3272,7 +3272,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x68; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6a8; + 0x6b0; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1f0; static constexpr dart::compiler::target::word @@ -3292,7 +3292,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e8; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x690; + 0x698; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a8; static constexpr dart::compiler::target::word @@ -3300,10 +3300,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xd0; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x6b8; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x630; + 0x6c0; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x638; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x638; + 0x640; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -3313,9 +3313,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x660; + Thread_old_marking_stack_block_offset = 0x668; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x668; + Thread_new_marking_stack_block_offset = 0x670; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x250; static constexpr dart::compiler::target::word @@ -3364,23 +3364,23 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2b0; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x288; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x698; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6a0; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x6a0; + Thread_saved_shadow_call_stack_offset = 0x6a8; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6b0; + 0x6b8; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x80; -static constexpr dart::compiler::target::word Thread_single_step_offset = 0x888; +static constexpr dart::compiler::target::word Thread_single_step_offset = 0x890; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x280; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x640; + 0x648; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x648; + Thread_stack_overflow_flags_offset = 0x650; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x248; static constexpr dart::compiler::target::word @@ -3390,50 +3390,50 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x190; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x658; + 0x660; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x5e0; + Thread_suspend_state_await_entry_point_offset = 0x5e8; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e8; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5f0; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x5d8; + Thread_suspend_state_init_async_entry_point_offset = 0x5e0; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x5f0; + Thread_suspend_state_return_async_entry_point_offset = 0x5f8; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f8; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x600; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x600; + Thread_suspend_state_init_async_star_entry_point_offset = 0x608; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x608; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x610; + Thread_suspend_state_return_async_star_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x618; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x620; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x628; + Thread_suspend_state_handle_exception_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x650; + Thread_top_exit_frame_info_offset = 0x658; static constexpr dart::compiler::target::word Thread_top_offset = 0x60; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x860; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x678; + Thread_unboxed_runtime_arg_offset = 0x868; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x680; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_heap_base_offset = 0x58; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x870; -static constexpr dart::compiler::target::word Thread_random_offset = 0x878; + 0x878; +static constexpr dart::compiler::target::word Thread_random_offset = 0x880; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x278; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x880; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x898; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8a0; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x890; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x888; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8a0; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8a8; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x898; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -3520,8 +3520,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x580, 0x588, 0x590, 0x598, -1, -1, 0x5a0, 0x5a8, - 0x5b0, 0x5b8, 0x5c0, -1, 0x5c8, 0x5d0, -1, -1}; + 0x588, 0x590, 0x598, 0x5a0, -1, -1, 0x5a8, 0x5b0, + 0x5b8, 0x5c0, 0x5c8, -1, 0x5d0, 0x5d8, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x10; @@ -3935,11 +3935,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x708; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x710; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x6c8; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x6d0; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x6d8; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x208; static constexpr dart::compiler::target::word @@ -3957,7 +3957,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x238; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x898; + 0x8a0; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x168; static constexpr dart::compiler::target::word @@ -3970,15 +3970,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x210; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xe0; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8f0; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8f8; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x70; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x8a0; + Thread_double_truncate_round_supported_offset = 0x8a8; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8f8; + Thread_service_extension_stream_offset = 0x900; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x900; + 0x908; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x260; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -3995,7 +3995,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x68; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6f0; + 0x6f8; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1f0; static constexpr dart::compiler::target::word @@ -4015,7 +4015,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e8; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x6d8; + 0x6e0; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a8; static constexpr dart::compiler::target::word @@ -4023,10 +4023,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xd0; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x700; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x678; + 0x708; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x680; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x680; + 0x688; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -4036,9 +4036,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x6a8; + Thread_old_marking_stack_block_offset = 0x6b0; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x6b0; + Thread_new_marking_stack_block_offset = 0x6b8; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x250; static constexpr dart::compiler::target::word @@ -4087,23 +4087,23 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2b0; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x288; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6e0; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6e8; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x6e8; + Thread_saved_shadow_call_stack_offset = 0x6f0; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6f8; + 0x700; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x80; -static constexpr dart::compiler::target::word Thread_single_step_offset = 0x8d0; +static constexpr dart::compiler::target::word Thread_single_step_offset = 0x8d8; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x280; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x688; + 0x690; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x690; + Thread_stack_overflow_flags_offset = 0x698; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x248; static constexpr dart::compiler::target::word @@ -4113,50 +4113,50 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x190; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x6a0; + 0x6a8; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x628; + Thread_suspend_state_await_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x630; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x620; + Thread_suspend_state_init_async_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x638; + Thread_suspend_state_return_async_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x640; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x648; + Thread_suspend_state_init_async_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x650; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x658; + Thread_suspend_state_return_async_star_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x660; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x668; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x668; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x670; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x670; + Thread_suspend_state_handle_exception_entry_point_offset = 0x678; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x698; + Thread_top_exit_frame_info_offset = 0x6a0; static constexpr dart::compiler::target::word Thread_top_offset = 0x60; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x8a8; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6c0; + Thread_unboxed_runtime_arg_offset = 0x8b0; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6c8; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_heap_base_offset = 0x58; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x8b8; -static constexpr dart::compiler::target::word Thread_random_offset = 0x8c0; + 0x8c0; +static constexpr dart::compiler::target::word Thread_random_offset = 0x8c8; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x278; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8c8; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8e0; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8e8; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8d8; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8d0; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8e8; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8f0; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8e0; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -4243,10 +4243,10 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, - 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, -1, - -1, -1, -1, 0x5f8, 0x600, -1, -1, 0x608, - 0x610, 0x618, -1, -1, -1, -1, -1, -1}; + 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, 0x5c0, + 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, 0x5f8, -1, + -1, -1, -1, 0x600, 0x608, -1, -1, 0x610, + 0x618, 0x620, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x10; @@ -4658,11 +4658,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x378; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x37c; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x358; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x35c; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x360; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -4680,7 +4680,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x440; + 0x444; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -4693,15 +4693,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x104; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0x6c; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x47c; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x484; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x444; + Thread_double_truncate_round_supported_offset = 0x448; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x480; + Thread_service_extension_stream_offset = 0x488; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x484; + 0x48c; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x12c; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -4718,7 +4718,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x30; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x36c; + 0x370; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -4738,7 +4738,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x360; + 0x364; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -4746,10 +4746,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x374; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x330; + 0x378; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x334; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x334; + 0x338; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -4759,9 +4759,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x348; + Thread_old_marking_stack_block_offset = 0x34c; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x34c; + Thread_new_marking_stack_block_offset = 0x350; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -4810,23 +4810,23 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x154; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x364; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x368; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x368; + Thread_saved_shadow_call_stack_offset = 0x36c; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x370; + 0x374; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x3c; -static constexpr dart::compiler::target::word Thread_single_step_offset = 0x46c; +static constexpr dart::compiler::target::word Thread_single_step_offset = 0x474; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 0xe8; static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x13c; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x338; + 0x33c; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x33c; + Thread_stack_overflow_flags_offset = 0x340; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -4836,49 +4836,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x344; + 0x348; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x308; + Thread_suspend_state_await_entry_point_offset = 0x30c; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x30c; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x310; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x304; + Thread_suspend_state_init_async_entry_point_offset = 0x308; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x310; + Thread_suspend_state_return_async_entry_point_offset = 0x314; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x314; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x318; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x318; + Thread_suspend_state_init_async_star_entry_point_offset = 0x31c; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x31c; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x320; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x320; + Thread_suspend_state_return_async_star_entry_point_offset = 0x324; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x324; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x328; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x328; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x32c; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x32c; + Thread_suspend_state_handle_exception_entry_point_offset = 0x330; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x340; + Thread_top_exit_frame_info_offset = 0x344; static constexpr dart::compiler::target::word Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x448; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x354; + Thread_unboxed_runtime_arg_offset = 0x450; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x358; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x28; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x458; -static constexpr dart::compiler::target::word Thread_random_offset = 0x460; + 0x460; +static constexpr dart::compiler::target::word Thread_random_offset = 0x468; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x138; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x468; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x474; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x478; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x470; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x470; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x47c; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x480; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x478; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -4963,9 +4963,9 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - -1, -1, -1, -1, -1, 0x2bc, 0x2c0, 0x2c4, -1, -1, 0x2c8, - 0x2cc, 0x2d0, -1, -1, -1, 0x2d4, 0x2d8, 0x2dc, 0x2e0, 0x2e4, 0x2e8, - 0x2ec, 0x2f0, -1, -1, -1, -1, 0x2f4, 0x2f8, 0x2fc, 0x300}; + -1, -1, -1, -1, -1, 0x2c0, 0x2c4, 0x2c8, -1, -1, 0x2cc, + 0x2d0, 0x2d4, -1, -1, -1, 0x2d8, 0x2dc, 0x2e0, 0x2e4, 0x2e8, 0x2ec, + 0x2f0, 0x2f4, -1, -1, -1, -1, 0x2f8, 0x2fc, 0x300, 0x304}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8; static constexpr dart::compiler::target::word Array_header_size = 0xc; @@ -5381,11 +5381,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6f0; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6f8; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x6b0; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x6b8; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x6c0; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -5403,7 +5403,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x880; + 0x888; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -5416,15 +5416,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x208; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xd8; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8d8; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8e0; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x888; + Thread_double_truncate_round_supported_offset = 0x890; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8e0; + Thread_service_extension_stream_offset = 0x8e8; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x8e8; + 0x8f0; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -5441,7 +5441,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x60; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6d8; + 0x6e0; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -5461,7 +5461,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x6c0; + 0x6c8; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -5469,10 +5469,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x6e8; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x660; + 0x6f0; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x668; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x668; + 0x670; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -5482,9 +5482,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x690; + Thread_old_marking_stack_block_offset = 0x698; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x698; + Thread_new_marking_stack_block_offset = 0x6a0; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -5533,23 +5533,23 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2a8; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6c8; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6d0; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x6d0; + Thread_saved_shadow_call_stack_offset = 0x6d8; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6e0; + 0x6e8; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x78; -static constexpr dart::compiler::target::word Thread_single_step_offset = 0x8b8; +static constexpr dart::compiler::target::word Thread_single_step_offset = 0x8c0; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 0x1d0; static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x278; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x670; + 0x678; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x678; + Thread_stack_overflow_flags_offset = 0x680; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -5559,49 +5559,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x688; + 0x690; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x610; + Thread_suspend_state_await_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x618; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x608; + Thread_suspend_state_init_async_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x620; + Thread_suspend_state_return_async_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x628; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x630; + Thread_suspend_state_init_async_star_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x638; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x640; + Thread_suspend_state_return_async_star_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x648; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x650; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x658; + Thread_suspend_state_handle_exception_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x680; + Thread_top_exit_frame_info_offset = 0x688; static constexpr dart::compiler::target::word Thread_top_offset = 0x58; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x890; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6a8; + Thread_unboxed_runtime_arg_offset = 0x898; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6b0; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x8a0; -static constexpr dart::compiler::target::word Thread_random_offset = 0x8a8; + 0x8a8; +static constexpr dart::compiler::target::word Thread_random_offset = 0x8b0; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x270; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8b0; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8c8; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8d0; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8c0; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8b8; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8d0; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8d8; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8c8; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -5690,9 +5690,9 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - -1, -1, -1, -1, -1, 0x578, 0x580, 0x588, -1, -1, 0x590, - 0x598, 0x5a0, -1, -1, -1, 0x5a8, 0x5b0, 0x5b8, 0x5c0, 0x5c8, 0x5d0, - 0x5d8, 0x5e0, -1, -1, -1, -1, 0x5e8, 0x5f0, 0x5f8, 0x600}; + -1, -1, -1, -1, -1, 0x580, 0x588, 0x590, -1, -1, 0x598, + 0x5a0, 0x5a8, -1, -1, -1, 0x5b0, 0x5b8, 0x5c0, 0x5c8, 0x5d0, 0x5d8, + 0x5e0, 0x5e8, -1, -1, -1, -1, 0x5f0, 0x5f8, 0x600, 0x608}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x18; @@ -6097,11 +6097,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x350; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x354; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x330; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x334; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x338; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -6119,7 +6119,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x418; + 0x41c; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -6132,15 +6132,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x104; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0x6c; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x454; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x45c; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x41c; + Thread_double_truncate_round_supported_offset = 0x420; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x458; + Thread_service_extension_stream_offset = 0x460; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x45c; + 0x464; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x12c; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -6157,7 +6157,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x30; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x344; + 0x348; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -6177,7 +6177,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x338; + 0x33c; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -6185,10 +6185,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x34c; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x308; + 0x350; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x30c; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x30c; + 0x310; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -6198,9 +6198,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x320; + Thread_old_marking_stack_block_offset = 0x324; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x324; + Thread_new_marking_stack_block_offset = 0x328; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -6249,11 +6249,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x154; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x33c; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x340; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x340; + Thread_saved_shadow_call_stack_offset = 0x344; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x348; + 0x34c; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x3c; static constexpr dart::compiler::target::word @@ -6262,9 +6262,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x13c; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x310; + 0x314; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x314; + Thread_stack_overflow_flags_offset = 0x318; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -6274,49 +6274,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x31c; + 0x320; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x2e0; + Thread_suspend_state_await_entry_point_offset = 0x2e4; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2e4; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x2dc; + Thread_suspend_state_init_async_entry_point_offset = 0x2e0; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x2e8; + Thread_suspend_state_return_async_entry_point_offset = 0x2ec; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2ec; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x2f0; + Thread_suspend_state_init_async_star_entry_point_offset = 0x2f4; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x2f4; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x2f8; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x2f8; + Thread_suspend_state_return_async_star_entry_point_offset = 0x2fc; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x2fc; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x300; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x300; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x304; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x304; + Thread_suspend_state_handle_exception_entry_point_offset = 0x308; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x318; + Thread_top_exit_frame_info_offset = 0x31c; static constexpr dart::compiler::target::word Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x420; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x32c; + Thread_unboxed_runtime_arg_offset = 0x428; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x330; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x28; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x430; -static constexpr dart::compiler::target::word Thread_random_offset = 0x438; + 0x438; +static constexpr dart::compiler::target::word Thread_random_offset = 0x440; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x138; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x440; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x44c; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x450; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x448; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x448; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x454; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x458; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x450; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -6401,8 +6401,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x2bc, 0x2c0, 0x2c4, 0x2c8, 0x2cc, -1, 0x2d0, -1, - 0x2d4, 0x2d8, -1, -1, -1, -1, -1, -1}; + 0x2c0, 0x2c4, 0x2c8, 0x2cc, 0x2d0, -1, 0x2d4, -1, + 0x2d8, 0x2dc, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8; static constexpr dart::compiler::target::word Array_header_size = 0xc; @@ -6811,11 +6811,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6b8; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c0; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x678; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x680; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x688; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -6833,7 +6833,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x848; + 0x850; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -6846,15 +6846,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x208; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xd8; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8a0; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8a8; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x850; + Thread_double_truncate_round_supported_offset = 0x858; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8a8; + Thread_service_extension_stream_offset = 0x8b0; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x8b0; + 0x8b8; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -6871,7 +6871,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x60; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6a0; + 0x6a8; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -6891,7 +6891,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x688; + 0x690; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -6899,10 +6899,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x6b0; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x628; + 0x6b8; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x630; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x630; + 0x638; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -6912,9 +6912,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x658; + Thread_old_marking_stack_block_offset = 0x660; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x660; + Thread_new_marking_stack_block_offset = 0x668; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -6963,11 +6963,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2a8; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x690; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x698; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x698; + Thread_saved_shadow_call_stack_offset = 0x6a0; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6a8; + 0x6b0; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -6976,9 +6976,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x278; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x638; + 0x640; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x640; + Thread_stack_overflow_flags_offset = 0x648; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -6988,49 +6988,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x650; + 0x658; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x5d8; + Thread_suspend_state_await_entry_point_offset = 0x5e0; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e0; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e8; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x5d0; + Thread_suspend_state_init_async_entry_point_offset = 0x5d8; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x5e8; + Thread_suspend_state_return_async_entry_point_offset = 0x5f0; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f0; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f8; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x5f8; + Thread_suspend_state_init_async_star_entry_point_offset = 0x600; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x600; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x608; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x608; + Thread_suspend_state_return_async_star_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x610; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x618; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x620; + Thread_suspend_state_handle_exception_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x648; + Thread_top_exit_frame_info_offset = 0x650; static constexpr dart::compiler::target::word Thread_top_offset = 0x58; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x858; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x670; + Thread_unboxed_runtime_arg_offset = 0x860; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x678; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x868; -static constexpr dart::compiler::target::word Thread_random_offset = 0x870; + 0x870; +static constexpr dart::compiler::target::word Thread_random_offset = 0x878; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x270; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x878; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x890; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x898; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x888; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x880; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x898; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8a0; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x890; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -7119,8 +7119,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x578, 0x580, 0x588, 0x590, -1, -1, 0x598, 0x5a0, - 0x5a8, 0x5b0, 0x5b8, -1, 0x5c0, 0x5c8, -1, -1}; + 0x580, 0x588, 0x590, 0x598, -1, -1, 0x5a0, 0x5a8, + 0x5b0, 0x5b8, 0x5c0, -1, 0x5c8, 0x5d0, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x18; @@ -7525,11 +7525,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x344; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x348; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x324; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x328; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x32c; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -7547,7 +7547,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x40c; + 0x410; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -7564,7 +7564,7 @@ static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x44c; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x410; + Thread_double_truncate_round_supported_offset = 0x414; static constexpr dart::compiler::target::word Thread_service_extension_stream_offset = 0x450; static constexpr dart::compiler::target::word Thread_thread_locals_offset = @@ -7585,7 +7585,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x30; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x338; + 0x33c; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -7605,7 +7605,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x32c; + 0x330; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -7613,10 +7613,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x340; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x2fc; + 0x344; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x300; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x300; + 0x304; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -7626,9 +7626,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x314; + Thread_old_marking_stack_block_offset = 0x318; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x318; + Thread_new_marking_stack_block_offset = 0x31c; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -7677,11 +7677,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x154; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x330; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x334; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x334; + Thread_saved_shadow_call_stack_offset = 0x338; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x33c; + 0x340; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x3c; static constexpr dart::compiler::target::word @@ -7690,9 +7690,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x13c; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x304; + 0x308; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x308; + Thread_stack_overflow_flags_offset = 0x30c; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -7702,36 +7702,36 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x310; + 0x314; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x2d4; + Thread_suspend_state_await_entry_point_offset = 0x2d8; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2d8; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2dc; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x2d0; + Thread_suspend_state_init_async_entry_point_offset = 0x2d4; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x2dc; + Thread_suspend_state_return_async_entry_point_offset = 0x2e0; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2e0; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2e4; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x2e4; + Thread_suspend_state_init_async_star_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x2e8; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x2ec; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x2ec; + Thread_suspend_state_return_async_star_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x2f0; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x2f4; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x2f4; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x2f8; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x2f8; + Thread_suspend_state_handle_exception_entry_point_offset = 0x2fc; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x30c; + Thread_top_exit_frame_info_offset = 0x310; static constexpr dart::compiler::target::word Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word Thread_unboxed_runtime_arg_offset = 0x418; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x320; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x324; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = @@ -7829,7 +7829,7 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x2bc, 0x2c0, 0x2c4, 0x2c8, -1, -1, -1, 0x2cc}; + 0x2c0, 0x2c4, 0x2c8, 0x2cc, -1, -1, -1, 0x2d0}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8; static constexpr dart::compiler::target::word Array_header_size = 0xc; @@ -8238,11 +8238,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x700; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x708; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x6c0; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x6c8; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x6d0; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -8260,7 +8260,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x890; + 0x898; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -8273,15 +8273,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x208; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xd8; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8e8; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8f0; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x898; + Thread_double_truncate_round_supported_offset = 0x8a0; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8f0; + Thread_service_extension_stream_offset = 0x8f8; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x8f8; + 0x900; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -8298,7 +8298,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x60; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6e8; + 0x6f0; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -8318,7 +8318,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x6d0; + 0x6d8; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -8326,10 +8326,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x6f8; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x670; + 0x700; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x678; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x678; + 0x680; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -8339,9 +8339,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x6a0; + Thread_old_marking_stack_block_offset = 0x6a8; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x6a8; + Thread_new_marking_stack_block_offset = 0x6b0; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -8390,11 +8390,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2a8; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6d8; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6e0; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x6e0; + Thread_saved_shadow_call_stack_offset = 0x6e8; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6f0; + 0x6f8; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -8403,9 +8403,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x278; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x680; + 0x688; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x688; + Thread_stack_overflow_flags_offset = 0x690; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -8415,49 +8415,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x698; + 0x6a0; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x620; + Thread_suspend_state_await_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x628; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x618; + Thread_suspend_state_init_async_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x630; + Thread_suspend_state_return_async_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x638; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x640; + Thread_suspend_state_init_async_star_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x648; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x650; + Thread_suspend_state_return_async_star_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x658; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x660; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x668; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x668; + Thread_suspend_state_handle_exception_entry_point_offset = 0x670; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x690; + Thread_top_exit_frame_info_offset = 0x698; static constexpr dart::compiler::target::word Thread_top_offset = 0x58; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x8a0; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6b8; + Thread_unboxed_runtime_arg_offset = 0x8a8; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6c0; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x8b0; -static constexpr dart::compiler::target::word Thread_random_offset = 0x8b8; + 0x8b8; +static constexpr dart::compiler::target::word Thread_random_offset = 0x8c0; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x270; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8c0; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8d8; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8e0; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8d0; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8c8; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8e0; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8e8; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8d8; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -8546,10 +8546,10 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x578, 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, - 0x5b8, 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, -1, - -1, -1, -1, 0x5f0, 0x5f8, -1, -1, 0x600, - 0x608, 0x610, -1, -1, -1, -1, -1, -1}; + 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, + 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, -1, + -1, -1, -1, 0x5f8, 0x600, -1, -1, 0x608, + 0x610, 0x618, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x18; @@ -8956,11 +8956,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c0; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c8; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x680; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x688; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x690; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x208; static constexpr dart::compiler::target::word @@ -8978,7 +8978,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x238; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x850; + 0x858; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x168; static constexpr dart::compiler::target::word @@ -8991,15 +8991,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x210; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xe0; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8a8; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8b0; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x70; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x858; + Thread_double_truncate_round_supported_offset = 0x860; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8b0; + Thread_service_extension_stream_offset = 0x8b8; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x8b8; + 0x8c0; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x260; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -9016,7 +9016,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x68; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6a8; + 0x6b0; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1f0; static constexpr dart::compiler::target::word @@ -9036,7 +9036,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e8; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x690; + 0x698; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a8; static constexpr dart::compiler::target::word @@ -9044,10 +9044,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xd0; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x6b8; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x630; + 0x6c0; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x638; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x638; + 0x640; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -9057,9 +9057,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x660; + Thread_old_marking_stack_block_offset = 0x668; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x668; + Thread_new_marking_stack_block_offset = 0x670; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x250; static constexpr dart::compiler::target::word @@ -9108,11 +9108,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2b0; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x288; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x698; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6a0; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x6a0; + Thread_saved_shadow_call_stack_offset = 0x6a8; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6b0; + 0x6b8; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x80; static constexpr dart::compiler::target::word @@ -9121,9 +9121,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x280; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x640; + 0x648; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x648; + Thread_stack_overflow_flags_offset = 0x650; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x248; static constexpr dart::compiler::target::word @@ -9133,50 +9133,50 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x190; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x658; + 0x660; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x5e0; + Thread_suspend_state_await_entry_point_offset = 0x5e8; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e8; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5f0; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x5d8; + Thread_suspend_state_init_async_entry_point_offset = 0x5e0; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x5f0; + Thread_suspend_state_return_async_entry_point_offset = 0x5f8; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f8; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x600; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x600; + Thread_suspend_state_init_async_star_entry_point_offset = 0x608; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x608; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x610; + Thread_suspend_state_return_async_star_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x618; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x620; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x628; + Thread_suspend_state_handle_exception_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x650; + Thread_top_exit_frame_info_offset = 0x658; static constexpr dart::compiler::target::word Thread_top_offset = 0x60; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x860; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x678; + Thread_unboxed_runtime_arg_offset = 0x868; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x680; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_heap_base_offset = 0x58; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x870; -static constexpr dart::compiler::target::word Thread_random_offset = 0x878; + 0x878; +static constexpr dart::compiler::target::word Thread_random_offset = 0x880; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x278; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x880; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x898; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8a0; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x890; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x888; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8a0; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8a8; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x898; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -9263,8 +9263,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x580, 0x588, 0x590, 0x598, -1, -1, 0x5a0, 0x5a8, - 0x5b0, 0x5b8, 0x5c0, -1, 0x5c8, 0x5d0, -1, -1}; + 0x588, 0x590, 0x598, 0x5a0, -1, -1, 0x5a8, 0x5b0, + 0x5b8, 0x5c0, 0x5c8, -1, 0x5d0, 0x5d8, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x10; @@ -9671,11 +9671,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x708; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x710; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x6c8; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x6d0; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x6d8; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x208; static constexpr dart::compiler::target::word @@ -9693,7 +9693,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x238; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x898; + 0x8a0; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x168; static constexpr dart::compiler::target::word @@ -9706,15 +9706,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x210; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xe0; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8f0; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8f8; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x70; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x8a0; + Thread_double_truncate_round_supported_offset = 0x8a8; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8f8; + Thread_service_extension_stream_offset = 0x900; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x900; + 0x908; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x260; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -9731,7 +9731,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x68; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6f0; + 0x6f8; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1f0; static constexpr dart::compiler::target::word @@ -9751,7 +9751,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e8; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x6d8; + 0x6e0; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a8; static constexpr dart::compiler::target::word @@ -9759,10 +9759,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xd0; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x700; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x678; + 0x708; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x680; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x680; + 0x688; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -9772,9 +9772,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x6a8; + Thread_old_marking_stack_block_offset = 0x6b0; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x6b0; + Thread_new_marking_stack_block_offset = 0x6b8; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x250; static constexpr dart::compiler::target::word @@ -9823,11 +9823,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2b0; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x288; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6e0; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6e8; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x6e8; + Thread_saved_shadow_call_stack_offset = 0x6f0; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6f8; + 0x700; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x80; static constexpr dart::compiler::target::word @@ -9836,9 +9836,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x280; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x688; + 0x690; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x690; + Thread_stack_overflow_flags_offset = 0x698; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x248; static constexpr dart::compiler::target::word @@ -9848,50 +9848,50 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x190; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x6a0; + 0x6a8; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x628; + Thread_suspend_state_await_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x630; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x620; + Thread_suspend_state_init_async_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x638; + Thread_suspend_state_return_async_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x640; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x648; + Thread_suspend_state_init_async_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x650; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x658; + Thread_suspend_state_return_async_star_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x660; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x668; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x668; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x670; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x670; + Thread_suspend_state_handle_exception_entry_point_offset = 0x678; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x698; + Thread_top_exit_frame_info_offset = 0x6a0; static constexpr dart::compiler::target::word Thread_top_offset = 0x60; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x8a8; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6c0; + Thread_unboxed_runtime_arg_offset = 0x8b0; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6c8; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_heap_base_offset = 0x58; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x8b8; -static constexpr dart::compiler::target::word Thread_random_offset = 0x8c0; + 0x8c0; +static constexpr dart::compiler::target::word Thread_random_offset = 0x8c8; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x278; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8c8; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8e0; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8e8; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8d8; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8d0; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8e8; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8f0; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8e0; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -9978,10 +9978,10 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, - 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, -1, - -1, -1, -1, 0x5f8, 0x600, -1, -1, 0x608, - 0x610, 0x618, -1, -1, -1, -1, -1, -1}; + 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, 0x5c0, + 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, 0x5f8, -1, + -1, -1, -1, 0x600, 0x608, -1, -1, 0x610, + 0x618, 0x620, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x10; @@ -10386,11 +10386,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x378; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x37c; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x358; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x35c; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x360; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -10408,7 +10408,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x440; + 0x444; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -10421,15 +10421,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x104; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0x6c; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x47c; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x484; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x444; + Thread_double_truncate_round_supported_offset = 0x448; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x480; + Thread_service_extension_stream_offset = 0x488; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x484; + 0x48c; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x12c; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -10446,7 +10446,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x30; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x36c; + 0x370; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -10466,7 +10466,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x360; + 0x364; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -10474,10 +10474,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x374; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x330; + 0x378; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x334; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x334; + 0x338; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -10487,9 +10487,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x348; + Thread_old_marking_stack_block_offset = 0x34c; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x34c; + Thread_new_marking_stack_block_offset = 0x350; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -10538,11 +10538,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x154; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x364; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x368; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x368; + Thread_saved_shadow_call_stack_offset = 0x36c; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x370; + 0x374; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x3c; static constexpr dart::compiler::target::word @@ -10551,9 +10551,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x13c; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x338; + 0x33c; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x33c; + Thread_stack_overflow_flags_offset = 0x340; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -10563,49 +10563,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x344; + 0x348; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x308; + Thread_suspend_state_await_entry_point_offset = 0x30c; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x30c; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x310; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x304; + Thread_suspend_state_init_async_entry_point_offset = 0x308; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x310; + Thread_suspend_state_return_async_entry_point_offset = 0x314; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x314; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x318; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x318; + Thread_suspend_state_init_async_star_entry_point_offset = 0x31c; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x31c; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x320; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x320; + Thread_suspend_state_return_async_star_entry_point_offset = 0x324; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x324; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x328; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x328; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x32c; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x32c; + Thread_suspend_state_handle_exception_entry_point_offset = 0x330; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x340; + Thread_top_exit_frame_info_offset = 0x344; static constexpr dart::compiler::target::word Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x448; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x354; + Thread_unboxed_runtime_arg_offset = 0x450; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x358; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x28; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x458; -static constexpr dart::compiler::target::word Thread_random_offset = 0x460; + 0x460; +static constexpr dart::compiler::target::word Thread_random_offset = 0x468; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x138; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x468; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x474; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x478; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x470; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x470; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x47c; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x480; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x478; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -10690,9 +10690,9 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - -1, -1, -1, -1, -1, 0x2bc, 0x2c0, 0x2c4, -1, -1, 0x2c8, - 0x2cc, 0x2d0, -1, -1, -1, 0x2d4, 0x2d8, 0x2dc, 0x2e0, 0x2e4, 0x2e8, - 0x2ec, 0x2f0, -1, -1, -1, -1, 0x2f4, 0x2f8, 0x2fc, 0x300}; + -1, -1, -1, -1, -1, 0x2c0, 0x2c4, 0x2c8, -1, -1, 0x2cc, + 0x2d0, 0x2d4, -1, -1, -1, 0x2d8, 0x2dc, 0x2e0, 0x2e4, 0x2e8, 0x2ec, + 0x2f0, 0x2f4, -1, -1, -1, -1, 0x2f8, 0x2fc, 0x300, 0x304}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8; static constexpr dart::compiler::target::word Array_header_size = 0xc; @@ -11101,11 +11101,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6f0; + Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6f8; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 0x6b0; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 0x6b8; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 0x6c0; static constexpr dart::compiler::target::word Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -11123,7 +11123,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 0x880; + 0x888; static constexpr dart::compiler::target::word Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -11136,15 +11136,15 @@ static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 0x208; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 0xd8; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8d8; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 0x8e0; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 0x888; + Thread_double_truncate_round_supported_offset = 0x890; static constexpr dart::compiler::target::word - Thread_service_extension_stream_offset = 0x8e0; + Thread_service_extension_stream_offset = 0x8e8; static constexpr dart::compiler::target::word Thread_thread_locals_offset = - 0x8e8; + 0x8f0; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = @@ -11161,7 +11161,7 @@ static constexpr dart::compiler::target::word Thread_end_offset = 0x60; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 0x6d8; + 0x6e0; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -11181,7 +11181,7 @@ static constexpr dart::compiler::target::word Thread_float_not_address_offset = static constexpr dart::compiler::target::word Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 0x6c0; + 0x6c8; static constexpr dart::compiler::target::word Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -11189,10 +11189,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 0x6e8; -static constexpr dart::compiler::target::word Thread_isolate_offset = 0x660; + 0x6f0; +static constexpr dart::compiler::target::word Thread_isolate_offset = 0x668; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 0x668; + 0x670; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -11202,9 +11202,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - Thread_old_marking_stack_block_offset = 0x690; + Thread_old_marking_stack_block_offset = 0x698; static constexpr dart::compiler::target::word - Thread_new_marking_stack_block_offset = 0x698; + Thread_new_marking_stack_block_offset = 0x6a0; static constexpr dart::compiler::target::word Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -11253,11 +11253,11 @@ static constexpr dart::compiler::target::word Thread_predefined_symbols_address_offset = 0x2a8; static constexpr dart::compiler::target::word Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6c8; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 0x6d0; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 0x6d0; + Thread_saved_shadow_call_stack_offset = 0x6d8; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 0x6e0; + 0x6e8; static constexpr dart::compiler::target::word Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -11266,9 +11266,9 @@ static constexpr dart::compiler::target::word Thread_slow_type_test_entry_point_offset = 0x278; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = - 0x670; + 0x678; static constexpr dart::compiler::target::word - Thread_stack_overflow_flags_offset = 0x678; + Thread_stack_overflow_flags_offset = 0x680; static constexpr dart::compiler::target::word Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -11278,49 +11278,49 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word Thread_store_buffer_block_offset = - 0x688; + 0x690; static constexpr dart::compiler::target::word - Thread_suspend_state_await_entry_point_offset = 0x610; + Thread_suspend_state_await_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - Thread_suspend_state_await_with_type_check_entry_point_offset = 0x618; + Thread_suspend_state_await_with_type_check_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_entry_point_offset = 0x608; + Thread_suspend_state_init_async_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_entry_point_offset = 0x620; + Thread_suspend_state_return_async_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_not_future_entry_point_offset = 0x628; + Thread_suspend_state_return_async_not_future_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - Thread_suspend_state_init_async_star_entry_point_offset = 0x630; + Thread_suspend_state_init_async_star_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - Thread_suspend_state_yield_async_star_entry_point_offset = 0x638; + Thread_suspend_state_yield_async_star_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - Thread_suspend_state_return_async_star_entry_point_offset = 0x640; + Thread_suspend_state_return_async_star_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - Thread_suspend_state_init_sync_star_entry_point_offset = 0x648; + Thread_suspend_state_init_sync_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x650; + Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - Thread_suspend_state_handle_exception_entry_point_offset = 0x658; + Thread_suspend_state_handle_exception_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - Thread_top_exit_frame_info_offset = 0x680; + Thread_top_exit_frame_info_offset = 0x688; static constexpr dart::compiler::target::word Thread_top_offset = 0x58; static constexpr dart::compiler::target::word Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - Thread_unboxed_runtime_arg_offset = 0x890; -static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6a8; + Thread_unboxed_runtime_arg_offset = 0x898; +static constexpr dart::compiler::target::word Thread_vm_tag_offset = 0x6b0; static constexpr dart::compiler::target::word Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word Thread_next_task_id_offset = - 0x8a0; -static constexpr dart::compiler::target::word Thread_random_offset = 0x8a8; + 0x8a8; +static constexpr dart::compiler::target::word Thread_random_offset = 0x8b0; static constexpr dart::compiler::target::word Thread_jump_to_frame_entry_point_offset = 0x270; -static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8b0; -static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8c8; -static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8d0; -static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8c0; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 0x8b8; +static constexpr dart::compiler::target::word Thread_current_tag_offset = 0x8d0; +static constexpr dart::compiler::target::word Thread_default_tag_offset = 0x8d8; +static constexpr dart::compiler::target::word Thread_user_tag_offset = 0x8c8; static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = @@ -11409,9 +11409,9 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - -1, -1, -1, -1, -1, 0x578, 0x580, 0x588, -1, -1, 0x590, - 0x598, 0x5a0, -1, -1, -1, 0x5a8, 0x5b0, 0x5b8, 0x5c0, 0x5c8, 0x5d0, - 0x5d8, 0x5e0, -1, -1, -1, -1, 0x5e8, 0x5f0, 0x5f8, 0x600}; + -1, -1, -1, -1, -1, 0x580, 0x588, 0x590, -1, -1, 0x598, + 0x5a0, 0x5a8, -1, -1, -1, 0x5b0, 0x5b8, 0x5c0, 0x5c8, 0x5d0, 0x5d8, + 0x5e0, 0x5e8, -1, -1, -1, -1, 0x5f0, 0x5f8, 0x600, 0x608}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10; static constexpr dart::compiler::target::word Array_header_size = 0x18; @@ -11851,11 +11851,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x350; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x354; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x330; + AOT_Thread_active_exception_offset = 0x334; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x334; + AOT_Thread_active_stacktrace_offset = 0x338; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -11873,7 +11873,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x418; + 0x41c; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -11889,15 +11889,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0x6c; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x454; + 0x45c; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x41c; + AOT_Thread_double_truncate_round_supported_offset = 0x420; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x458; + AOT_Thread_service_extension_stream_offset = 0x460; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x45c; + 0x464; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x12c; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -11914,7 +11914,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x30; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x344; + AOT_Thread_execution_state_offset = 0x348; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -11934,7 +11934,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x338; + AOT_Thread_global_object_pool_offset = 0x33c; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -11942,10 +11942,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x34c; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x308; + AOT_Thread_exit_through_ffi_offset = 0x350; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x30c; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x30c; + 0x310; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -11955,9 +11955,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x320; + AOT_Thread_old_marking_stack_block_offset = 0x324; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x324; + AOT_Thread_new_marking_stack_block_offset = 0x328; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -12011,15 +12011,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x33c; + 0x340; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x340; + AOT_Thread_saved_shadow_call_stack_offset = 0x344; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x348; + AOT_Thread_safepoint_state_offset = 0x34c; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x3c; static constexpr dart::compiler::target::word AOT_Thread_single_step_offset = - 0x444; + 0x44c; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 0xe8; static constexpr dart::compiler::target::word @@ -12027,9 +12027,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x310; + AOT_Thread_saved_stack_limit_offset = 0x314; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x314; + AOT_Thread_stack_overflow_flags_offset = 0x318; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -12040,55 +12040,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x31c; + AOT_Thread_store_buffer_block_offset = 0x320; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x2e0; + AOT_Thread_suspend_state_await_entry_point_offset = 0x2e4; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2e4; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x2dc; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x2e0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x2e8; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x2ec; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2ec; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x2f0; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x2f4; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x2f4; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x2f8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x2f8; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x2fc; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x2fc; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x300; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x300; + 0x304; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x304; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x308; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x318; + AOT_Thread_top_exit_frame_info_offset = 0x31c; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x420; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x32c; + AOT_Thread_unboxed_runtime_arg_offset = 0x428; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x330; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x28; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x430; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x438; + 0x438; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x440; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x138; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x440; -static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x44c; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = - 0x450; -static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = 0x448; +static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = + 0x454; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x458; +static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = + 0x450; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -12188,8 +12188,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x2bc, 0x2c0, 0x2c4, 0x2c8, 0x2cc, -1, 0x2d0, -1, - 0x2d4, 0x2d8, -1, -1, -1, -1, -1, -1}; + 0x2c0, 0x2c4, 0x2c8, 0x2cc, 0x2d0, -1, 0x2d4, -1, + 0x2d8, 0x2dc, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x8; @@ -12651,11 +12651,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6b8; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c0; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x678; + AOT_Thread_active_exception_offset = 0x680; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x680; + AOT_Thread_active_stacktrace_offset = 0x688; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -12673,7 +12673,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x848; + 0x850; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -12689,15 +12689,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xd8; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8a0; + 0x8a8; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x850; + AOT_Thread_double_truncate_round_supported_offset = 0x858; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8a8; + AOT_Thread_service_extension_stream_offset = 0x8b0; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x8b0; + 0x8b8; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -12714,7 +12714,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6a0; + AOT_Thread_execution_state_offset = 0x6a8; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -12734,7 +12734,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x688; + AOT_Thread_global_object_pool_offset = 0x690; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -12742,10 +12742,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x6b0; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x628; + AOT_Thread_exit_through_ffi_offset = 0x6b8; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x630; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x630; + 0x638; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -12755,9 +12755,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x658; + AOT_Thread_old_marking_stack_block_offset = 0x660; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x660; + AOT_Thread_new_marking_stack_block_offset = 0x668; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -12811,15 +12811,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x690; + 0x698; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x698; + AOT_Thread_saved_shadow_call_stack_offset = 0x6a0; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6a8; + AOT_Thread_safepoint_state_offset = 0x6b0; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word AOT_Thread_single_step_offset = - 0x880; + 0x888; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 0x1d0; static constexpr dart::compiler::target::word @@ -12827,9 +12827,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x638; + AOT_Thread_saved_stack_limit_offset = 0x640; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x640; + AOT_Thread_stack_overflow_flags_offset = 0x648; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -12840,55 +12840,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x650; + AOT_Thread_store_buffer_block_offset = 0x658; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x5d8; + AOT_Thread_suspend_state_await_entry_point_offset = 0x5e0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e0; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x5d0; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x5d8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x5e8; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x5f0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f0; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x5f8; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x600; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x600; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x608; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x608; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x610; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x618; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x618; + 0x620; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x620; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x648; + AOT_Thread_top_exit_frame_info_offset = 0x650; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x858; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x670; + AOT_Thread_unboxed_runtime_arg_offset = 0x860; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x678; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x868; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x870; + 0x870; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x878; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x270; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x878; + 0x880; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x890; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x898; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8a0; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x888; + 0x890; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -12988,8 +12988,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x578, 0x580, 0x588, 0x590, -1, -1, 0x598, 0x5a0, - 0x5a8, 0x5b0, 0x5b8, -1, 0x5c0, 0x5c8, -1, -1}; + 0x580, 0x588, 0x590, 0x598, -1, -1, 0x5a0, 0x5a8, + 0x5b0, 0x5b8, 0x5c0, -1, 0x5c8, 0x5d0, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -13458,11 +13458,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x700; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x708; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x6c0; + AOT_Thread_active_exception_offset = 0x6c8; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x6c8; + AOT_Thread_active_stacktrace_offset = 0x6d0; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -13480,7 +13480,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x890; + 0x898; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -13496,15 +13496,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xd8; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8e8; + 0x8f0; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x898; + AOT_Thread_double_truncate_round_supported_offset = 0x8a0; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8f0; + AOT_Thread_service_extension_stream_offset = 0x8f8; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x8f8; + 0x900; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -13521,7 +13521,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6e8; + AOT_Thread_execution_state_offset = 0x6f0; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -13541,7 +13541,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x6d0; + AOT_Thread_global_object_pool_offset = 0x6d8; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -13549,10 +13549,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x6f8; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x670; + AOT_Thread_exit_through_ffi_offset = 0x700; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x678; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x678; + 0x680; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -13562,9 +13562,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x6a0; + AOT_Thread_old_marking_stack_block_offset = 0x6a8; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x6a8; + AOT_Thread_new_marking_stack_block_offset = 0x6b0; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -13618,15 +13618,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x6d8; + 0x6e0; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x6e0; + AOT_Thread_saved_shadow_call_stack_offset = 0x6e8; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6f0; + AOT_Thread_safepoint_state_offset = 0x6f8; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word AOT_Thread_single_step_offset = - 0x8c8; + 0x8d0; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 0x1d0; static constexpr dart::compiler::target::word @@ -13634,9 +13634,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x680; + AOT_Thread_saved_stack_limit_offset = 0x688; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x688; + AOT_Thread_stack_overflow_flags_offset = 0x690; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -13647,55 +13647,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x698; + AOT_Thread_store_buffer_block_offset = 0x6a0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x620; + AOT_Thread_suspend_state_await_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x628; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x618; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x630; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x638; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x640; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x648; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x650; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x658; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x660; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x660; + 0x668; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x668; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x670; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x690; + AOT_Thread_top_exit_frame_info_offset = 0x698; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x8a0; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6b8; + AOT_Thread_unboxed_runtime_arg_offset = 0x8a8; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6c0; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x8b0; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8b8; + 0x8b8; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8c0; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x270; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x8c0; + 0x8c8; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x8d8; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x8e0; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8e8; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x8d0; + 0x8d8; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -13795,10 +13795,10 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x578, 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, - 0x5b8, 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, -1, - -1, -1, -1, 0x5f0, 0x5f8, -1, -1, 0x600, - 0x608, 0x610, -1, -1, -1, -1, -1, -1}; + 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, + 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, -1, + -1, -1, -1, 0x5f8, 0x600, -1, -1, 0x608, + 0x610, 0x618, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -14261,11 +14261,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c0; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c8; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x680; + AOT_Thread_active_exception_offset = 0x688; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x688; + AOT_Thread_active_stacktrace_offset = 0x690; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x208; static constexpr dart::compiler::target::word @@ -14283,7 +14283,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x238; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x850; + 0x858; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x168; static constexpr dart::compiler::target::word @@ -14299,15 +14299,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xe0; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8a8; + 0x8b0; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x70; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x858; + AOT_Thread_double_truncate_round_supported_offset = 0x860; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8b0; + AOT_Thread_service_extension_stream_offset = 0x8b8; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x8b8; + 0x8c0; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x260; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -14324,7 +14324,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x68; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6a8; + AOT_Thread_execution_state_offset = 0x6b0; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1f0; static constexpr dart::compiler::target::word @@ -14344,7 +14344,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x690; + AOT_Thread_global_object_pool_offset = 0x698; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a8; static constexpr dart::compiler::target::word @@ -14352,10 +14352,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xd0; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x6b8; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x630; + AOT_Thread_exit_through_ffi_offset = 0x6c0; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x638; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x638; + 0x640; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -14365,9 +14365,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x660; + AOT_Thread_old_marking_stack_block_offset = 0x668; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x668; + AOT_Thread_new_marking_stack_block_offset = 0x670; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x250; static constexpr dart::compiler::target::word @@ -14421,15 +14421,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x288; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x698; + 0x6a0; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x6a0; + AOT_Thread_saved_shadow_call_stack_offset = 0x6a8; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6b0; + AOT_Thread_safepoint_state_offset = 0x6b8; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x80; static constexpr dart::compiler::target::word AOT_Thread_single_step_offset = - 0x888; + 0x890; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word @@ -14437,9 +14437,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x640; + AOT_Thread_saved_stack_limit_offset = 0x648; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x648; + AOT_Thread_stack_overflow_flags_offset = 0x650; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x248; static constexpr dart::compiler::target::word @@ -14450,38 +14450,38 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x190; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x658; + AOT_Thread_store_buffer_block_offset = 0x660; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x5e0; + AOT_Thread_suspend_state_await_entry_point_offset = 0x5e8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e8; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5f0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x5d8; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x5e0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x5f0; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x5f8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f8; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x600; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x600; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x608; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x608; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x610; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x618; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x620; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x620; + 0x628; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x628; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x650; + AOT_Thread_top_exit_frame_info_offset = 0x658; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x860; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x678; + AOT_Thread_unboxed_runtime_arg_offset = 0x868; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x680; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -14489,18 +14489,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x870; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x878; + 0x878; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x880; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x278; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x880; + 0x888; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x898; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x8a0; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8a8; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x890; + 0x898; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -14600,8 +14600,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x580, 0x588, 0x590, 0x598, -1, -1, 0x5a0, 0x5a8, - 0x5b0, 0x5b8, 0x5c0, -1, 0x5c8, 0x5d0, -1, -1}; + 0x588, 0x590, 0x598, 0x5a0, -1, -1, 0x5a8, 0x5b0, + 0x5b8, 0x5c0, 0x5c8, -1, 0x5d0, 0x5d8, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x20; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -15064,11 +15064,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x708; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x710; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x6c8; + AOT_Thread_active_exception_offset = 0x6d0; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x6d0; + AOT_Thread_active_stacktrace_offset = 0x6d8; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x208; static constexpr dart::compiler::target::word @@ -15086,7 +15086,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x238; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x898; + 0x8a0; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x168; static constexpr dart::compiler::target::word @@ -15102,15 +15102,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xe0; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8f0; + 0x8f8; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x70; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x8a0; + AOT_Thread_double_truncate_round_supported_offset = 0x8a8; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8f8; + AOT_Thread_service_extension_stream_offset = 0x900; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x900; + 0x908; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x260; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -15127,7 +15127,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x68; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6f0; + AOT_Thread_execution_state_offset = 0x6f8; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1f0; static constexpr dart::compiler::target::word @@ -15147,7 +15147,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x6d8; + AOT_Thread_global_object_pool_offset = 0x6e0; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a8; static constexpr dart::compiler::target::word @@ -15155,10 +15155,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xd0; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x700; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x678; + AOT_Thread_exit_through_ffi_offset = 0x708; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x680; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x680; + 0x688; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -15168,9 +15168,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x6a8; + AOT_Thread_old_marking_stack_block_offset = 0x6b0; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x6b0; + AOT_Thread_new_marking_stack_block_offset = 0x6b8; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x250; static constexpr dart::compiler::target::word @@ -15224,15 +15224,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x288; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x6e0; + 0x6e8; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x6e8; + AOT_Thread_saved_shadow_call_stack_offset = 0x6f0; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6f8; + AOT_Thread_safepoint_state_offset = 0x700; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x80; static constexpr dart::compiler::target::word AOT_Thread_single_step_offset = - 0x8d0; + 0x8d8; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word @@ -15240,9 +15240,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x688; + AOT_Thread_saved_stack_limit_offset = 0x690; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x690; + AOT_Thread_stack_overflow_flags_offset = 0x698; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x248; static constexpr dart::compiler::target::word @@ -15253,38 +15253,38 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x190; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x6a0; + AOT_Thread_store_buffer_block_offset = 0x6a8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x628; + AOT_Thread_suspend_state_await_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x630; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x620; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x638; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x640; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x648; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x650; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x658; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x660; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x668; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x668; + 0x670; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x670; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x678; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x698; + AOT_Thread_top_exit_frame_info_offset = 0x6a0; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x8a8; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6c0; + AOT_Thread_unboxed_runtime_arg_offset = 0x8b0; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6c8; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -15292,18 +15292,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x8b8; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8c0; + 0x8c0; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8c8; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x278; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x8c8; + 0x8d0; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x8e0; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x8e8; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8f0; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x8d8; + 0x8e0; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -15403,10 +15403,10 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, - 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, -1, - -1, -1, -1, 0x5f8, 0x600, -1, -1, 0x608, - 0x610, 0x618, -1, -1, -1, -1, -1, -1}; + 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, 0x5c0, + 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, 0x5f8, -1, + -1, -1, -1, 0x600, 0x608, -1, -1, 0x610, + 0x618, 0x620, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x20; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -15869,11 +15869,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x378; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x37c; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x358; + AOT_Thread_active_exception_offset = 0x35c; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x35c; + AOT_Thread_active_stacktrace_offset = 0x360; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -15891,7 +15891,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x440; + 0x444; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -15907,15 +15907,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0x6c; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x47c; + 0x484; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x444; + AOT_Thread_double_truncate_round_supported_offset = 0x448; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x480; + AOT_Thread_service_extension_stream_offset = 0x488; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x484; + 0x48c; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x12c; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -15932,7 +15932,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x30; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x36c; + AOT_Thread_execution_state_offset = 0x370; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -15952,7 +15952,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x360; + AOT_Thread_global_object_pool_offset = 0x364; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -15960,10 +15960,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x374; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x330; + AOT_Thread_exit_through_ffi_offset = 0x378; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x334; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x334; + 0x338; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -15973,9 +15973,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x348; + AOT_Thread_old_marking_stack_block_offset = 0x34c; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x34c; + AOT_Thread_new_marking_stack_block_offset = 0x350; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -16029,15 +16029,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x364; + 0x368; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x368; + AOT_Thread_saved_shadow_call_stack_offset = 0x36c; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x370; + AOT_Thread_safepoint_state_offset = 0x374; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x3c; static constexpr dart::compiler::target::word AOT_Thread_single_step_offset = - 0x46c; + 0x474; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 0xe8; static constexpr dart::compiler::target::word @@ -16045,9 +16045,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x338; + AOT_Thread_saved_stack_limit_offset = 0x33c; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x33c; + AOT_Thread_stack_overflow_flags_offset = 0x340; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -16058,55 +16058,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x344; + AOT_Thread_store_buffer_block_offset = 0x348; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x308; + AOT_Thread_suspend_state_await_entry_point_offset = 0x30c; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x30c; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x310; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x304; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x308; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x310; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x314; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x314; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x318; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x318; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x31c; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x31c; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x320; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x320; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x324; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x324; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x328; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x328; + 0x32c; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x32c; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x330; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x340; + AOT_Thread_top_exit_frame_info_offset = 0x344; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x448; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x354; + AOT_Thread_unboxed_runtime_arg_offset = 0x450; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x358; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x28; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x458; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x460; + 0x460; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x468; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x138; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x468; -static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x474; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = - 0x478; -static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = 0x470; +static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = + 0x47c; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x480; +static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = + 0x478; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -16206,9 +16206,9 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - -1, -1, -1, -1, -1, 0x2bc, 0x2c0, 0x2c4, -1, -1, 0x2c8, - 0x2cc, 0x2d0, -1, -1, -1, 0x2d4, 0x2d8, 0x2dc, 0x2e0, 0x2e4, 0x2e8, - 0x2ec, 0x2f0, -1, -1, -1, -1, 0x2f4, 0x2f8, 0x2fc, 0x300}; + -1, -1, -1, -1, -1, 0x2c0, 0x2c4, 0x2c8, -1, -1, 0x2cc, + 0x2d0, 0x2d4, -1, -1, -1, 0x2d8, 0x2dc, 0x2e0, 0x2e4, 0x2e8, 0x2ec, + 0x2f0, 0x2f4, -1, -1, -1, -1, 0x2f8, 0x2fc, 0x300, 0x304}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x8; @@ -16670,11 +16670,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6f0; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6f8; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x6b0; + AOT_Thread_active_exception_offset = 0x6b8; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x6b8; + AOT_Thread_active_stacktrace_offset = 0x6c0; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -16692,7 +16692,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x880; + 0x888; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -16708,15 +16708,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xd8; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8d8; + 0x8e0; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x888; + AOT_Thread_double_truncate_round_supported_offset = 0x890; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8e0; + AOT_Thread_service_extension_stream_offset = 0x8e8; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x8e8; + 0x8f0; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -16733,7 +16733,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6d8; + AOT_Thread_execution_state_offset = 0x6e0; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -16753,7 +16753,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x6c0; + AOT_Thread_global_object_pool_offset = 0x6c8; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -16761,10 +16761,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x6e8; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x660; + AOT_Thread_exit_through_ffi_offset = 0x6f0; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x668; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x668; + 0x670; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -16774,9 +16774,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x690; + AOT_Thread_old_marking_stack_block_offset = 0x698; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x698; + AOT_Thread_new_marking_stack_block_offset = 0x6a0; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -16830,15 +16830,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x6c8; + 0x6d0; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x6d0; + AOT_Thread_saved_shadow_call_stack_offset = 0x6d8; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6e0; + AOT_Thread_safepoint_state_offset = 0x6e8; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word AOT_Thread_single_step_offset = - 0x8b8; + 0x8c0; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 0x1d0; static constexpr dart::compiler::target::word @@ -16846,9 +16846,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x670; + AOT_Thread_saved_stack_limit_offset = 0x678; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x678; + AOT_Thread_stack_overflow_flags_offset = 0x680; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -16859,55 +16859,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x688; + AOT_Thread_store_buffer_block_offset = 0x690; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x610; + AOT_Thread_suspend_state_await_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x618; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x608; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x620; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x628; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x630; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x638; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x640; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x648; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x650; + 0x658; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x658; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x680; + AOT_Thread_top_exit_frame_info_offset = 0x688; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x890; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6a8; + AOT_Thread_unboxed_runtime_arg_offset = 0x898; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6b0; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x8a0; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8a8; + 0x8a8; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8b0; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x270; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x8b0; + 0x8b8; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x8c8; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x8d0; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8d8; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x8c0; + 0x8c8; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -17007,9 +17007,9 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - -1, -1, -1, -1, -1, 0x578, 0x580, 0x588, -1, -1, 0x590, - 0x598, 0x5a0, -1, -1, -1, 0x5a8, 0x5b0, 0x5b8, 0x5c0, 0x5c8, 0x5d0, - 0x5d8, 0x5e0, -1, -1, -1, -1, 0x5e8, 0x5f0, 0x5f8, 0x600}; + -1, -1, -1, -1, -1, 0x580, 0x588, 0x590, -1, -1, 0x598, + 0x5a0, 0x5a8, -1, -1, -1, 0x5b0, 0x5b8, 0x5c0, 0x5c8, 0x5d0, 0x5d8, + 0x5e0, 0x5e8, -1, -1, -1, -1, 0x5f0, 0x5f8, 0x600, 0x608}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -17465,11 +17465,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x350; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x354; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x330; + AOT_Thread_active_exception_offset = 0x334; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x334; + AOT_Thread_active_stacktrace_offset = 0x338; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -17487,7 +17487,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x418; + 0x41c; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -17503,15 +17503,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0x6c; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x454; + 0x45c; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x41c; + AOT_Thread_double_truncate_round_supported_offset = 0x420; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x458; + AOT_Thread_service_extension_stream_offset = 0x460; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x45c; + 0x464; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x12c; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -17528,7 +17528,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x30; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x344; + AOT_Thread_execution_state_offset = 0x348; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -17548,7 +17548,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x338; + AOT_Thread_global_object_pool_offset = 0x33c; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -17556,10 +17556,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x34c; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x308; + AOT_Thread_exit_through_ffi_offset = 0x350; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x30c; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x30c; + 0x310; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -17569,9 +17569,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x320; + AOT_Thread_old_marking_stack_block_offset = 0x324; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x324; + AOT_Thread_new_marking_stack_block_offset = 0x328; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -17625,11 +17625,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x33c; + 0x340; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x340; + AOT_Thread_saved_shadow_call_stack_offset = 0x344; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x348; + AOT_Thread_safepoint_state_offset = 0x34c; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x3c; static constexpr dart::compiler::target::word @@ -17639,9 +17639,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x310; + AOT_Thread_saved_stack_limit_offset = 0x314; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x314; + AOT_Thread_stack_overflow_flags_offset = 0x318; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -17652,55 +17652,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x31c; + AOT_Thread_store_buffer_block_offset = 0x320; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x2e0; + AOT_Thread_suspend_state_await_entry_point_offset = 0x2e4; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2e4; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x2dc; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x2e0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x2e8; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x2ec; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2ec; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x2f0; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x2f4; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x2f4; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x2f8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x2f8; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x2fc; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x2fc; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x300; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x300; + 0x304; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x304; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x308; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x318; + AOT_Thread_top_exit_frame_info_offset = 0x31c; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x420; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x32c; + AOT_Thread_unboxed_runtime_arg_offset = 0x428; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x330; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x28; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x430; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x438; + 0x438; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x440; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x138; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x440; -static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x44c; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = - 0x450; -static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = 0x448; +static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = + 0x454; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x458; +static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = + 0x450; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -17800,8 +17800,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x2bc, 0x2c0, 0x2c4, 0x2c8, 0x2cc, -1, 0x2d0, -1, - 0x2d4, 0x2d8, -1, -1, -1, -1, -1, -1}; + 0x2c0, 0x2c4, 0x2c8, 0x2cc, 0x2d0, -1, 0x2d4, -1, + 0x2d8, 0x2dc, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x8; @@ -18256,11 +18256,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6b8; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c0; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x678; + AOT_Thread_active_exception_offset = 0x680; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x680; + AOT_Thread_active_stacktrace_offset = 0x688; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -18278,7 +18278,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x848; + 0x850; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -18294,15 +18294,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xd8; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8a0; + 0x8a8; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x850; + AOT_Thread_double_truncate_round_supported_offset = 0x858; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8a8; + AOT_Thread_service_extension_stream_offset = 0x8b0; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x8b0; + 0x8b8; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -18319,7 +18319,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6a0; + AOT_Thread_execution_state_offset = 0x6a8; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -18339,7 +18339,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x688; + AOT_Thread_global_object_pool_offset = 0x690; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -18347,10 +18347,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x6b0; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x628; + AOT_Thread_exit_through_ffi_offset = 0x6b8; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x630; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x630; + 0x638; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -18360,9 +18360,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x658; + AOT_Thread_old_marking_stack_block_offset = 0x660; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x660; + AOT_Thread_new_marking_stack_block_offset = 0x668; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -18416,11 +18416,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x690; + 0x698; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x698; + AOT_Thread_saved_shadow_call_stack_offset = 0x6a0; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6a8; + AOT_Thread_safepoint_state_offset = 0x6b0; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -18430,9 +18430,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x638; + AOT_Thread_saved_stack_limit_offset = 0x640; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x640; + AOT_Thread_stack_overflow_flags_offset = 0x648; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -18443,55 +18443,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x650; + AOT_Thread_store_buffer_block_offset = 0x658; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x5d8; + AOT_Thread_suspend_state_await_entry_point_offset = 0x5e0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e0; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x5d0; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x5d8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x5e8; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x5f0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f0; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x5f8; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x600; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x600; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x608; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x608; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x610; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x618; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x618; + 0x620; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x620; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x648; + AOT_Thread_top_exit_frame_info_offset = 0x650; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x858; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x670; + AOT_Thread_unboxed_runtime_arg_offset = 0x860; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x678; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x868; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x870; + 0x870; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x878; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x270; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x878; + 0x880; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x890; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x898; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8a0; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x888; + 0x890; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -18591,8 +18591,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x578, 0x580, 0x588, 0x590, -1, -1, 0x598, 0x5a0, - 0x5a8, 0x5b0, 0x5b8, -1, 0x5c0, 0x5c8, -1, -1}; + 0x580, 0x588, 0x590, 0x598, -1, -1, 0x5a0, 0x5a8, + 0x5b0, 0x5b8, 0x5c0, -1, 0x5c8, 0x5d0, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -19054,11 +19054,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x700; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x708; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x6c0; + AOT_Thread_active_exception_offset = 0x6c8; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x6c8; + AOT_Thread_active_stacktrace_offset = 0x6d0; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -19076,7 +19076,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x890; + 0x898; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -19092,15 +19092,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xd8; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8e8; + 0x8f0; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x898; + AOT_Thread_double_truncate_round_supported_offset = 0x8a0; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8f0; + AOT_Thread_service_extension_stream_offset = 0x8f8; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x8f8; + 0x900; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -19117,7 +19117,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6e8; + AOT_Thread_execution_state_offset = 0x6f0; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -19137,7 +19137,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x6d0; + AOT_Thread_global_object_pool_offset = 0x6d8; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -19145,10 +19145,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x6f8; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x670; + AOT_Thread_exit_through_ffi_offset = 0x700; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x678; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x678; + 0x680; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -19158,9 +19158,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x6a0; + AOT_Thread_old_marking_stack_block_offset = 0x6a8; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x6a8; + AOT_Thread_new_marking_stack_block_offset = 0x6b0; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -19214,11 +19214,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x6d8; + 0x6e0; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x6e0; + AOT_Thread_saved_shadow_call_stack_offset = 0x6e8; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6f0; + AOT_Thread_safepoint_state_offset = 0x6f8; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -19228,9 +19228,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x680; + AOT_Thread_saved_stack_limit_offset = 0x688; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x688; + AOT_Thread_stack_overflow_flags_offset = 0x690; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -19241,55 +19241,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x698; + AOT_Thread_store_buffer_block_offset = 0x6a0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x620; + AOT_Thread_suspend_state_await_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x628; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x618; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x630; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x638; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x640; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x648; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x650; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x658; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x660; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x660; + 0x668; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x668; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x670; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x690; + AOT_Thread_top_exit_frame_info_offset = 0x698; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x8a0; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6b8; + AOT_Thread_unboxed_runtime_arg_offset = 0x8a8; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6c0; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x8b0; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8b8; + 0x8b8; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8c0; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x270; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x8c0; + 0x8c8; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x8d8; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x8e0; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8e8; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x8d0; + 0x8d8; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -19389,10 +19389,10 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x578, 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, - 0x5b8, 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, -1, - -1, -1, -1, 0x5f0, 0x5f8, -1, -1, 0x600, - 0x608, 0x610, -1, -1, -1, -1, -1, -1}; + 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, + 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, -1, + -1, -1, -1, 0x5f8, 0x600, -1, -1, 0x608, + 0x610, 0x618, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -19848,11 +19848,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c0; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6c8; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x680; + AOT_Thread_active_exception_offset = 0x688; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x688; + AOT_Thread_active_stacktrace_offset = 0x690; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x208; static constexpr dart::compiler::target::word @@ -19870,7 +19870,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x238; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x850; + 0x858; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x168; static constexpr dart::compiler::target::word @@ -19886,15 +19886,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xe0; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8a8; + 0x8b0; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x70; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x858; + AOT_Thread_double_truncate_round_supported_offset = 0x860; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8b0; + AOT_Thread_service_extension_stream_offset = 0x8b8; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x8b8; + 0x8c0; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x260; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -19911,7 +19911,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x68; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6a8; + AOT_Thread_execution_state_offset = 0x6b0; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1f0; static constexpr dart::compiler::target::word @@ -19931,7 +19931,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x690; + AOT_Thread_global_object_pool_offset = 0x698; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a8; static constexpr dart::compiler::target::word @@ -19939,10 +19939,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xd0; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x6b8; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x630; + AOT_Thread_exit_through_ffi_offset = 0x6c0; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x638; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x638; + 0x640; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -19952,9 +19952,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x660; + AOT_Thread_old_marking_stack_block_offset = 0x668; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x668; + AOT_Thread_new_marking_stack_block_offset = 0x670; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x250; static constexpr dart::compiler::target::word @@ -20008,11 +20008,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x288; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x698; + 0x6a0; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x6a0; + AOT_Thread_saved_shadow_call_stack_offset = 0x6a8; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6b0; + AOT_Thread_safepoint_state_offset = 0x6b8; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x80; static constexpr dart::compiler::target::word @@ -20022,9 +20022,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x640; + AOT_Thread_saved_stack_limit_offset = 0x648; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x648; + AOT_Thread_stack_overflow_flags_offset = 0x650; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x248; static constexpr dart::compiler::target::word @@ -20035,38 +20035,38 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x190; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x658; + AOT_Thread_store_buffer_block_offset = 0x660; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x5e0; + AOT_Thread_suspend_state_await_entry_point_offset = 0x5e8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5e8; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x5f0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x5d8; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x5e0; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x5f0; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x5f8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x5f8; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x600; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x600; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x608; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x608; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x610; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x618; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x620; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x620; + 0x628; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x628; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x650; + AOT_Thread_top_exit_frame_info_offset = 0x658; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x860; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x678; + AOT_Thread_unboxed_runtime_arg_offset = 0x868; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x680; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -20074,18 +20074,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x870; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x878; + 0x878; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x880; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x278; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x880; + 0x888; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x898; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x8a0; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8a8; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x890; + 0x898; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -20185,8 +20185,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x580, 0x588, 0x590, 0x598, -1, -1, 0x5a0, 0x5a8, - 0x5b0, 0x5b8, 0x5c0, -1, 0x5c8, 0x5d0, -1, -1}; + 0x588, 0x590, 0x598, 0x5a0, -1, -1, 0x5a8, 0x5b0, + 0x5b8, 0x5c0, 0x5c8, -1, 0x5d0, 0x5d8, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x20; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -20642,11 +20642,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2f0; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x708; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x710; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x6c8; + AOT_Thread_active_exception_offset = 0x6d0; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x6d0; + AOT_Thread_active_stacktrace_offset = 0x6d8; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x208; static constexpr dart::compiler::target::word @@ -20664,7 +20664,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x238; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x898; + 0x8a0; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x168; static constexpr dart::compiler::target::word @@ -20680,15 +20680,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xe0; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8f0; + 0x8f8; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x70; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x8a0; + AOT_Thread_double_truncate_round_supported_offset = 0x8a8; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8f8; + AOT_Thread_service_extension_stream_offset = 0x900; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x900; + 0x908; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x260; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -20705,7 +20705,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x68; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6f0; + AOT_Thread_execution_state_offset = 0x6f8; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1f0; static constexpr dart::compiler::target::word @@ -20725,7 +20725,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x6d8; + AOT_Thread_global_object_pool_offset = 0x6e0; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a8; static constexpr dart::compiler::target::word @@ -20733,10 +20733,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xd0; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x700; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x678; + AOT_Thread_exit_through_ffi_offset = 0x708; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x680; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x680; + 0x688; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -20746,9 +20746,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x6a8; + AOT_Thread_old_marking_stack_block_offset = 0x6b0; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x6b0; + AOT_Thread_new_marking_stack_block_offset = 0x6b8; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x250; static constexpr dart::compiler::target::word @@ -20802,11 +20802,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x288; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x6e0; + 0x6e8; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x6e8; + AOT_Thread_saved_shadow_call_stack_offset = 0x6f0; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6f8; + AOT_Thread_safepoint_state_offset = 0x700; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x80; static constexpr dart::compiler::target::word @@ -20816,9 +20816,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x688; + AOT_Thread_saved_stack_limit_offset = 0x690; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x690; + AOT_Thread_stack_overflow_flags_offset = 0x698; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x248; static constexpr dart::compiler::target::word @@ -20829,38 +20829,38 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x190; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x6a0; + AOT_Thread_store_buffer_block_offset = 0x6a8; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x628; + AOT_Thread_suspend_state_await_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x630; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x620; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x638; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x640; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x648; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x650; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x658; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x658; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x660; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x668; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x668; + 0x670; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x670; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x678; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x698; + AOT_Thread_top_exit_frame_info_offset = 0x6a0; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x8a8; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6c0; + AOT_Thread_unboxed_runtime_arg_offset = 0x8b0; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6c8; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -20868,18 +20868,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x8b8; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8c0; + 0x8c0; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8c8; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x278; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x8c8; + 0x8d0; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x8e0; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x8e8; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8f0; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x8d8; + 0x8e0; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -20979,10 +20979,10 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 0x580, 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, - 0x5c0, 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, -1, - -1, -1, -1, 0x5f8, 0x600, -1, -1, 0x608, - 0x610, 0x618, -1, -1, -1, -1, -1, -1}; + 0x588, 0x590, 0x598, 0x5a0, 0x5a8, 0x5b0, 0x5b8, 0x5c0, + 0x5c8, 0x5d0, 0x5d8, 0x5e0, 0x5e8, 0x5f0, 0x5f8, -1, + -1, -1, -1, 0x600, 0x608, -1, -1, 0x610, + 0x618, 0x620, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x20; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; @@ -21438,11 +21438,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x174; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x378; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x37c; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x358; + AOT_Thread_active_exception_offset = 0x35c; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x35c; + AOT_Thread_active_stacktrace_offset = 0x360; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x100; static constexpr dart::compiler::target::word @@ -21460,7 +21460,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x118; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x440; + 0x444; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0xb0; static constexpr dart::compiler::target::word @@ -21476,15 +21476,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0x6c; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x47c; + 0x484; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x34; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x444; + AOT_Thread_double_truncate_round_supported_offset = 0x448; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x480; + AOT_Thread_service_extension_stream_offset = 0x488; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x484; + 0x48c; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x12c; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -21501,7 +21501,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x30; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0xf0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x36c; + AOT_Thread_execution_state_offset = 0x370; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0xf4; static constexpr dart::compiler::target::word @@ -21521,7 +21521,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x170; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x360; + AOT_Thread_global_object_pool_offset = 0x364; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x150; static constexpr dart::compiler::target::word @@ -21529,10 +21529,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0x64; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x374; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x330; + AOT_Thread_exit_through_ffi_offset = 0x378; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x334; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x334; + 0x338; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x38; static constexpr dart::compiler::target::word @@ -21542,9 +21542,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0xec; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x348; + AOT_Thread_old_marking_stack_block_offset = 0x34c; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x34c; + AOT_Thread_new_marking_stack_block_offset = 0x350; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x124; static constexpr dart::compiler::target::word @@ -21598,11 +21598,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x140; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x364; + 0x368; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x368; + AOT_Thread_saved_shadow_call_stack_offset = 0x36c; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x370; + AOT_Thread_safepoint_state_offset = 0x374; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x3c; static constexpr dart::compiler::target::word @@ -21612,9 +21612,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x24; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x338; + AOT_Thread_saved_stack_limit_offset = 0x33c; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x33c; + AOT_Thread_stack_overflow_flags_offset = 0x340; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x120; static constexpr dart::compiler::target::word @@ -21625,55 +21625,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0xc4; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x344; + AOT_Thread_store_buffer_block_offset = 0x348; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x308; + AOT_Thread_suspend_state_await_entry_point_offset = 0x30c; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x30c; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x310; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x304; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x308; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x310; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x314; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x314; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x318; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x318; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x31c; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x31c; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x320; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x320; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x324; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x324; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x328; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x328; + 0x32c; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x32c; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x330; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x340; + AOT_Thread_top_exit_frame_info_offset = 0x344; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x2c; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x10; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x448; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x354; + AOT_Thread_unboxed_runtime_arg_offset = 0x450; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x358; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0xfc; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x28; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x458; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x460; + 0x460; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x468; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x138; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x468; -static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x474; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = - 0x478; -static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = 0x470; +static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = + 0x47c; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x480; +static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = + 0x478; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -21773,9 +21773,9 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x4, 0xc, 0x8, 0x10}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - -1, -1, -1, -1, -1, 0x2bc, 0x2c0, 0x2c4, -1, -1, 0x2c8, - 0x2cc, 0x2d0, -1, -1, -1, 0x2d4, 0x2d8, 0x2dc, 0x2e0, 0x2e4, 0x2e8, - 0x2ec, 0x2f0, -1, -1, -1, -1, 0x2f4, 0x2f8, 0x2fc, 0x300}; + -1, -1, -1, -1, -1, 0x2c0, 0x2c4, 0x2c8, -1, -1, 0x2cc, + 0x2d0, 0x2d4, -1, -1, -1, 0x2d8, 0x2dc, 0x2e0, 0x2e4, 0x2e8, 0x2ec, + 0x2f0, 0x2f4, -1, -1, -1, -1, 0x2f8, 0x2fc, 0x300, 0x304}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x14; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x8; @@ -22230,11 +22230,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_AllocateArray_entry_point_offset = 0x2e8; static constexpr dart::compiler::target::word - AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6f0; + AOT_Thread_DeoptimizeCopyFrame_entry_point_offset = 0x6f8; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 0x6b0; + AOT_Thread_active_exception_offset = 0x6b8; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 0x6b8; + AOT_Thread_active_stacktrace_offset = 0x6c0; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_entry_point_offset = 0x200; static constexpr dart::compiler::target::word @@ -22252,7 +22252,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_entry_point_offset = 0x230; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 0x880; + 0x888; static constexpr dart::compiler::target::word AOT_Thread_async_exception_handler_stub_offset = 0x160; static constexpr dart::compiler::target::word @@ -22268,15 +22268,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 0xd8; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 0x8d8; + 0x8e0; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 0x68; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 0x888; + AOT_Thread_double_truncate_round_supported_offset = 0x890; static constexpr dart::compiler::target::word - AOT_Thread_service_extension_stream_offset = 0x8e0; + AOT_Thread_service_extension_stream_offset = 0x8e8; static constexpr dart::compiler::target::word AOT_Thread_thread_locals_offset = - 0x8e8; + 0x8f0; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 0x258; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -22293,7 +22293,7 @@ static constexpr dart::compiler::target::word AOT_Thread_end_offset = 0x60; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 0x1e0; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 0x6d8; + AOT_Thread_execution_state_offset = 0x6e0; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 0x1e8; static constexpr dart::compiler::target::word @@ -22313,7 +22313,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_float_zerow_address_offset = 0x2e0; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 0x6c0; + AOT_Thread_global_object_pool_offset = 0x6c8; static constexpr dart::compiler::target::word AOT_Thread_interpret_call_entry_point_offset = 0x2a0; static constexpr dart::compiler::target::word @@ -22321,10 +22321,10 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 0xc8; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 0x6e8; -static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x660; + AOT_Thread_exit_through_ffi_offset = 0x6f0; +static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 0x668; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 0x668; + 0x670; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 0x70; static constexpr dart::compiler::target::word @@ -22334,9 +22334,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_lazy_specialize_type_test_stub_offset = 0x1d8; static constexpr dart::compiler::target::word - AOT_Thread_old_marking_stack_block_offset = 0x690; + AOT_Thread_old_marking_stack_block_offset = 0x698; static constexpr dart::compiler::target::word - AOT_Thread_new_marking_stack_block_offset = 0x698; + AOT_Thread_new_marking_stack_block_offset = 0x6a0; static constexpr dart::compiler::target::word AOT_Thread_megamorphic_call_checked_entry_offset = 0x248; static constexpr dart::compiler::target::word @@ -22390,11 +22390,11 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_resume_interpreter_adjusted_entry_point_offset = 0x280; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 0x6c8; + 0x6d0; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 0x6d0; + AOT_Thread_saved_shadow_call_stack_offset = 0x6d8; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 0x6e0; + AOT_Thread_safepoint_state_offset = 0x6e8; static constexpr dart::compiler::target::word AOT_Thread_shared_field_table_values_offset = 0x78; static constexpr dart::compiler::target::word @@ -22404,9 +22404,9 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 0x48; static constexpr dart::compiler::target::word - AOT_Thread_saved_stack_limit_offset = 0x670; + AOT_Thread_saved_stack_limit_offset = 0x678; static constexpr dart::compiler::target::word - AOT_Thread_stack_overflow_flags_offset = 0x678; + AOT_Thread_stack_overflow_flags_offset = 0x680; static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 0x240; static constexpr dart::compiler::target::word @@ -22417,55 +22417,55 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 0x188; static constexpr dart::compiler::target::word - AOT_Thread_store_buffer_block_offset = 0x688; + AOT_Thread_store_buffer_block_offset = 0x690; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_entry_point_offset = 0x610; + AOT_Thread_suspend_state_await_entry_point_offset = 0x618; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x618; + AOT_Thread_suspend_state_await_with_type_check_entry_point_offset = 0x620; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_entry_point_offset = 0x608; + AOT_Thread_suspend_state_init_async_entry_point_offset = 0x610; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_entry_point_offset = 0x620; + AOT_Thread_suspend_state_return_async_entry_point_offset = 0x628; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x628; + AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 0x630; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x630; + AOT_Thread_suspend_state_init_async_star_entry_point_offset = 0x638; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x638; + AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 0x640; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x640; + AOT_Thread_suspend_state_return_async_star_entry_point_offset = 0x648; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x648; + AOT_Thread_suspend_state_init_sync_star_entry_point_offset = 0x650; static constexpr dart::compiler::target::word AOT_Thread_suspend_state_suspend_sync_star_at_start_entry_point_offset = - 0x650; + 0x658; static constexpr dart::compiler::target::word - AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x658; + AOT_Thread_suspend_state_handle_exception_entry_point_offset = 0x660; static constexpr dart::compiler::target::word - AOT_Thread_top_exit_frame_info_offset = 0x680; + AOT_Thread_top_exit_frame_info_offset = 0x688; static constexpr dart::compiler::target::word AOT_Thread_top_offset = 0x58; static constexpr dart::compiler::target::word AOT_Thread_top_resource_offset = 0x20; static constexpr dart::compiler::target::word - AOT_Thread_unboxed_runtime_arg_offset = 0x890; -static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6a8; + AOT_Thread_unboxed_runtime_arg_offset = 0x898; +static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 0x6b0; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_entry_point_offset = 0x1f8; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 0x50; static constexpr dart::compiler::target::word AOT_Thread_next_task_id_offset = - 0x8a0; -static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8a8; + 0x8a8; +static constexpr dart::compiler::target::word AOT_Thread_random_offset = 0x8b0; static constexpr dart::compiler::target::word AOT_Thread_jump_to_frame_entry_point_offset = 0x270; static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = - 0x8b0; + 0x8b8; static constexpr dart::compiler::target::word AOT_Thread_current_tag_offset = - 0x8c8; -static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = 0x8d0; +static constexpr dart::compiler::target::word AOT_Thread_default_tag_offset = + 0x8d8; static constexpr dart::compiler::target::word AOT_Thread_user_tag_offset = - 0x8c0; + 0x8c8; static constexpr dart::compiler::target::word AOT_TsanUtils_setjmp_function_offset = 0x0; static constexpr dart::compiler::target::word @@ -22565,9 +22565,9 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 0x8, 0x18, 0x10, 0x20}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - -1, -1, -1, -1, -1, 0x578, 0x580, 0x588, -1, -1, 0x590, - 0x598, 0x5a0, -1, -1, -1, 0x5a8, 0x5b0, 0x5b8, 0x5c0, 0x5c8, 0x5d0, - 0x5d8, 0x5e0, -1, -1, -1, -1, 0x5e8, 0x5f0, 0x5f8, 0x600}; + -1, -1, -1, -1, -1, 0x580, 0x588, 0x590, -1, -1, 0x598, + 0x5a0, 0x5a8, -1, -1, -1, 0x5b0, 0x5b8, 0x5c0, 0x5c8, 0x5d0, 0x5d8, + 0x5e0, 0x5e8, -1, -1, -1, -1, 0x5f0, 0x5f8, 0x600, 0x608}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 0x28; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10; diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc index 4e6747600a0..5c18f8ddf0a 100644 --- a/runtime/vm/compiler/stub_code_compiler.cc +++ b/runtime/vm/compiler/stub_code_compiler.cc @@ -1881,6 +1881,15 @@ void StubCodeCompiler::GenerateCheckedStoreIntoSharedStub() { __ Ret(); } +void StubCodeCompiler::GenerateEnsureDeeplyImmutableStub() { + __ EnterStubFrame(); + __ PushRegister(EnsureDeeplyImmutableStubABI::kValueReg); + __ CallRuntime(kEnsureDeeplyImmutableRuntimeEntry, /*argument_count=*/1); + __ Drop(1); + __ LeaveStubFrame(); + __ Ret(); +} + static intptr_t SuspendStateFpOffset() { return compiler::target::frame_layout.FrameSlotForVariableIndex( SuspendState::kSuspendStateVarIndex) * diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h index a0f1da7a8e5..24870ceaa35 100644 --- a/runtime/vm/constants_arm.h +++ b/runtime/vm/constants_arm.h @@ -573,6 +573,12 @@ struct CheckedStoreIntoSharedStubABI { static constexpr Register kResultReg = R0; }; +// ABI for EnsureDeeplyImmutableStub. +struct EnsureDeeplyImmutableStubABI { + static constexpr Register kValueReg = R0; + static constexpr Register kTempReg = R1; +}; + // ABI for SuspendStub (AwaitStub, AwaitWithTypeCheckStub, YieldAsyncStarStub, // SuspendSyncStarAtStartStub, SuspendSyncStarAtYieldStub). struct SuspendStubABI { diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h index 458625ab34d..941e0f4bb1f 100644 --- a/runtime/vm/constants_arm64.h +++ b/runtime/vm/constants_arm64.h @@ -411,6 +411,12 @@ struct CheckedStoreIntoSharedStubABI { static constexpr Register kResultReg = R0; }; +// ABI for EnsureDeeplyImmutableStub. +struct EnsureDeeplyImmutableStubABI { + static constexpr Register kValueReg = R0; + static constexpr Register kTempReg = R1; +}; + // ABI for SuspendStub (AwaitStub, AwaitWithTypeCheckStub, YieldAsyncStarStub, // SuspendSyncStarAtStartStub, SuspendSyncStarAtYieldStub). struct SuspendStubABI { diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h index 078da50a1b7..50bcfd38e76 100644 --- a/runtime/vm/constants_ia32.h +++ b/runtime/vm/constants_ia32.h @@ -301,6 +301,12 @@ struct CheckedStoreIntoSharedStubABI { static constexpr Register kResultReg = EAX; }; +// ABI for EnsureDeeplyImmutableStub. +struct EnsureDeeplyImmutableStubABI { + static constexpr Register kValueReg = EAX; + static constexpr Register kTempReg = ECX; +}; + // ABI for SuspendStub (AwaitStub, AwaitWithTypeCheckStub, YieldAsyncStarStub, // SuspendSyncStarAtStartStub, SuspendSyncStarAtYieldStub). struct SuspendStubABI { diff --git a/runtime/vm/constants_riscv.h b/runtime/vm/constants_riscv.h index 4399691c440..92de0e12ad8 100644 --- a/runtime/vm/constants_riscv.h +++ b/runtime/vm/constants_riscv.h @@ -455,6 +455,12 @@ struct CheckedStoreIntoSharedStubABI { static constexpr Register kResultReg = A0; }; +// ABI for EnsureDeeplyImmutableStub. +struct EnsureDeeplyImmutableStubABI { + static constexpr Register kValueReg = A0; + static constexpr Register kTempReg = T1; +}; + // ABI for SuspendStub (AwaitStub, AwaitWithTypeCheckStub, YieldAsyncStarStub, // SuspendSyncStarAtStartStub, SuspendSyncStarAtYieldStub). struct SuspendStubABI { diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h index 13377f5366e..bac158f693f 100644 --- a/runtime/vm/constants_x64.h +++ b/runtime/vm/constants_x64.h @@ -377,6 +377,12 @@ struct CheckedStoreIntoSharedStubABI { static constexpr Register kResultReg = RAX; }; +// ABI for EnsureDeeplyImmutableStub. +struct EnsureDeeplyImmutableStubABI { + static constexpr Register kValueReg = RAX; + static constexpr Register kTempReg = R10; +}; + // ABI for SuspendStub (AwaitStub, AwaitWithTypeCheckStub, YieldAsyncStarStub, // SuspendSyncStarAtStartStub, SuspendSyncStarAtYieldStub). struct SuspendStubABI { diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc index 95a804d0efe..7080474d950 100644 --- a/runtime/vm/dart_api_impl.cc +++ b/runtime/vm/dart_api_impl.cc @@ -3896,7 +3896,7 @@ static Dart_Handle NewExternalTypedData(Thread* thread, callback); } if (unmodifiable) { - result.SetImmutable(); // Can pass by reference. + result.SetDeeplyImmutable(); // Can pass by reference. const intptr_t view_cid = cid - kTypedDataCidRemainderExternal + kTypedDataCidRemainderUnmodifiable; result = TypedDataView::New(view_cid, ExternalTypedData::Cast(result), 0, @@ -3922,7 +3922,7 @@ static Dart_Handle NewExternalByteData(Thread* thread, const ExternalTypedData& array = Api::UnwrapExternalTypedDataHandle(zone, ext_data); if (unmodifiable) { - array.SetImmutable(); // Can pass by reference. + array.SetDeeplyImmutable(); // Can pass by reference. } return Api::NewHandle( thread, TypedDataView::New(unmodifiable ? kUnmodifiableByteDataViewCid diff --git a/runtime/vm/ffi_callback_metadata.cc b/runtime/vm/ffi_callback_metadata.cc index 30489e642cf..403376770c4 100644 --- a/runtime/vm/ffi_callback_metadata.cc +++ b/runtime/vm/ffi_callback_metadata.cc @@ -352,96 +352,6 @@ PersistentHandle* FfiCallbackMetadata::CreatePersistentHandle( return handle; } -class WorkSet : public StackResource { - public: - explicit WorkSet(Thread* thread, Zone* zone) - : StackResource(thread), - thread_(thread), - list_(GrowableObjectArray::Handle(zone)) { - ASSERT(thread->forward_table_new() == nullptr); - set_ = new WeakTable(); - list_ = GrowableObjectArray::New(16); - list_pos_ = 0; - thread->set_forward_table_new(set_); - } - - ~WorkSet() { thread_->set_forward_table_new(nullptr); } - - void Add(const Object& object) { - if (!IsMarked(object.ptr())) { - Mark(object.ptr()); - list_.Add(object); - } - } - - bool Take(Object* object) { - if (list_pos_ >= list_.Length()) { - return false; - } - *object = list_.At(list_pos_++); - return true; - } - - private: - bool IsMarked(ObjectPtr object) { - return set_->GetValueExclusive(object) != 0; - } - void Mark(ObjectPtr object) { set_->SetValueExclusive(object, 1); } - - Thread* thread_; - WeakTable* set_; - GrowableObjectArray& list_; - intptr_t list_pos_; -}; - -void FfiCallbackMetadata::EnsureTriviallyImmutable(Zone* zone, - const Object& object) { - WorkSet workset(Thread::Current(), zone); - workset.Add(object); - - Object& current = Object::Handle(zone); - Function& function = Function::Handle(zone); - Object& obj = Object::Handle(zone); - while (workset.Take(¤t)) { - if (current.IsSmi() || current.IsNull() || current.IsCanonical()) { - continue; - } - if (current.IsClosure()) { - const Closure& closure = Closure::Cast(current); - function = closure.function(); - if (!function.IsImplicitClosureFunction() && - !function.captures_only_final_not_late_vars()) { - Exceptions::ThrowArgumentError(String::Handle(String::New( - "Only final not-late variables can be captured by isolate " - "group callbacks."))); - UNREACHABLE(); - } - obj = closure.RawContext(); - workset.Add(obj); - continue; - } - if (current.IsImmutable()) { - continue; - } - if (IsTypedDataBaseClassId(current.GetClassId())) { - continue; - } - if (current.IsContext()) { - const Context& context = Context::Cast(current); - // Iterate through all elements of the context. - for (intptr_t i = 0; i < context.num_variables(); i++) { - obj = context.At(i); - workset.Add(obj); - } - continue; - } - Exceptions::ThrowArgumentError(String::Handle( - String::NewFormatted("Only trivially-immutable values are allowed: %s.", - current.ToCString()))); - UNREACHABLE(); - } -} - FfiCallbackMetadata::Trampoline FfiCallbackMetadata::CreateLocalFfiCallback( Isolate* isolate, IsolateGroup* isolate_group, @@ -469,7 +379,7 @@ FfiCallbackMetadata::Trampoline FfiCallbackMetadata::CreateLocalFfiCallback( if (function.GetFfiCallbackKind() == FfiCallbackKind::kIsolateGroupBoundClosureCallback) { - EnsureTriviallyImmutable(zone, closure); + closure.EnsureDeeplyImmutable(zone); } handle = CreatePersistentHandle( diff --git a/runtime/vm/ffi_callback_metadata.h b/runtime/vm/ffi_callback_metadata.h index cc146a3ca68..1502e6c5c3c 100644 --- a/runtime/vm/ffi_callback_metadata.h +++ b/runtime/vm/ffi_callback_metadata.h @@ -343,8 +343,6 @@ class FfiCallbackMetadata { #error What architecture? #endif - static void EnsureTriviallyImmutable(Zone* zone, const Object& object); - // Visible for testing. #if defined(TESTING) diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc index a7efdef18dd..b93630789ab 100644 --- a/runtime/vm/image_snapshot.cc +++ b/runtime/vm/image_snapshot.cc @@ -661,7 +661,8 @@ static constexpr uword kReadOnlyGCBits = uword ImageWriter::GetMarkedTags(classid_t cid, intptr_t size, bool is_canonical /* = false */, - bool is_immutable /* = false */) { + bool is_shallow_immutable /* = false */, + bool is_deeply_immutable /* = false */) { // UntaggedObject::SizeTag expects a size divisible by kObjectAlignment and // checks this in debug mode, but the size on the target machine may not be // divisible by the host machine's object alignment if they differ. @@ -682,7 +683,8 @@ uword ImageWriter::GetMarkedTags(classid_t cid, return kReadOnlyGCBits | UntaggedObject::ClassIdTag::encode(cid) | UntaggedObject::SizeTag::encode(adjusted_size) | UntaggedObject::CanonicalBit::encode(is_canonical) | - UntaggedObject::ImmutableBit::encode(is_immutable); + UntaggedObject::ShallowImmutableBit::encode(is_shallow_immutable) | + UntaggedObject::DeeplyImmutableBit::encode(is_deeply_immutable); } uword ImageWriter::GetMarkedTags(const Object& obj) { diff --git a/runtime/vm/image_snapshot.h b/runtime/vm/image_snapshot.h index 60a1c4d93cd..e8e1d46e8f4 100644 --- a/runtime/vm/image_snapshot.h +++ b/runtime/vm/image_snapshot.h @@ -516,7 +516,8 @@ class ImageWriter : public ValueObject { static uword GetMarkedTags(classid_t cid, intptr_t size, bool is_canonical = false, - bool is_immutable = false); + bool is_shallow_immutable = false, + bool is_deeply_immutable = false); static uword GetMarkedTags(const Object& obj); void DumpInstructionStats(); diff --git a/runtime/vm/interpreter.cc b/runtime/vm/interpreter.cc index 9e338551e14..907f501dc0c 100644 --- a/runtime/vm/interpreter.cc +++ b/runtime/vm/interpreter.cc @@ -243,8 +243,10 @@ DART_FORCE_INLINE static ObjectPtr InitializeHeader(uword addr, tags = UntaggedObject::NotMarkedBit::update(true, tags); tags = UntaggedObject::OldAndNotRememberedBit::update(is_old, tags); tags = UntaggedObject::NewOrEvacuationCandidateBit::update(!is_old, tags); - tags = UntaggedObject::ImmutableBit::update( - Object::ShouldHaveImmutabilityBitSet(class_id), tags); + tags = UntaggedObject::ShallowImmutableBit::update( + Object::ShouldHaveShallowImmutabilityBitSet(class_id), tags); + tags = UntaggedObject::DeeplyImmutableBit::update( + Object::ShouldHaveDeeplyImmutabilityBitSet(class_id), tags); #if defined(HASH_IN_OBJECT_HEADER) tags = UntaggedObject::HashTag::update(0, tags); #endif diff --git a/runtime/vm/message_snapshot.cc b/runtime/vm/message_snapshot.cc index 7a2866d45bb..1b2e3461711 100644 --- a/runtime/vm/message_snapshot.cc +++ b/runtime/vm/message_snapshot.cc @@ -1591,7 +1591,7 @@ class TypedDataViewMessageDeserializationCluster data = ExternalTypedData::New( backing_cid, reinterpret_cast(finalizable_data.data), length); - data.SetImmutable(); // Can pass by reference. + data.SetDeeplyImmutable(); // Can pass by reference. intptr_t external_size = length * element_size; data.AddFinalizer(finalizable_data.peer, finalizable_data.callback, external_size); diff --git a/runtime/vm/module_snapshot.cc b/runtime/vm/module_snapshot.cc index e3fc29fa17e..3dacf456685 100644 --- a/runtime/vm/module_snapshot.cc +++ b/runtime/vm/module_snapshot.cc @@ -118,14 +118,15 @@ class Deserializer : public ThreadStackResource { intptr_t cid, intptr_t size, bool is_canonical = false) { - InitializeHeader(raw, cid, size, is_canonical, - ShouldHaveImmutabilityBitSetCid(cid)); + InitializeHeader(raw, cid, size, is_canonical, IsShallowlyImmutableCid(cid), + IsDeeplyImmutableCid(cid)); } static void InitializeHeader(ObjectPtr raw, intptr_t cid, intptr_t size, bool is_canonical, - bool is_immutable); + bool is_shallow_immutable, + bool is_deeply_immutable); // Reads raw data (for basic types). // sizeof(T) must be in {1,2,4,8}. @@ -240,7 +241,8 @@ void Deserializer::InitializeHeader(ObjectPtr raw, intptr_t class_id, intptr_t size, bool is_canonical, - bool is_immutable) { + bool is_shallow_immutable, + bool is_deeply_immutable) { ASSERT(Utils::IsAligned(size, kObjectAlignment)); uword tags = 0; tags = UntaggedObject::ClassIdTag::update(class_id, tags); @@ -250,7 +252,9 @@ void Deserializer::InitializeHeader(ObjectPtr raw, tags = UntaggedObject::NotMarkedBit::update(true, tags); tags = UntaggedObject::OldAndNotRememberedBit::update(true, tags); tags = UntaggedObject::NewOrEvacuationCandidateBit::update(false, tags); - tags = UntaggedObject::ImmutableBit::update(is_immutable, tags); + tags = + UntaggedObject::ShallowImmutableBit::update(is_shallow_immutable, tags); + tags = UntaggedObject::DeeplyImmutableBit::update(is_deeply_immutable, tags); raw->untag()->tags_ = tags; } diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc index 0a374b350d1..7fd36e661b9 100644 --- a/runtime/vm/object.cc +++ b/runtime/vm/object.cc @@ -1767,6 +1767,121 @@ void Object::RegisterPrivateClass(const Class& cls, lib.AddClass(cls); } +class WorkSet : public StackResource { + public: + explicit WorkSet(Thread* thread, Zone* zone) + : StackResource(thread), + thread_(thread), + list_(GrowableObjectArray::Handle(zone)), + stack_(GrowableObjectArray::Handle(zone)) { + ASSERT(thread->forward_table_new() == nullptr); + set_ = new WeakTable(); + list_ = GrowableObjectArray::New(16); + stack_ = GrowableObjectArray::New(16); + thread->set_forward_table_new(set_); + } + + ~WorkSet() { + thread_->set_forward_table_new(nullptr); + set_ = nullptr; + } + + void Add(const Object& object) { + if (!IsMarked(object.ptr())) { + Mark(object.ptr()); + list_.Add(object); + } + } + + bool TakeAndPush(Object* object) { + if (list_.Length() == 0) { + return false; + } + *object = list_.RemoveLast(); + stack_.Add(*object); // Push + return true; + } + + void PopAndProcessCompletedClosuresAndContexts(Object* object) { + if (stack_.Length() > 0) { + *object = stack_.RemoveLast(); // Pop + // Are we done processing nested context or closures? + while (stack_.Length() > 0) { + *object = stack_.At(stack_.Length() - 1); + if (object->IsContext()) { + stack_.RemoveLast(); + } else if (object->IsClosure()) { + object->SetDeeplyImmutable(); + stack_.RemoveLast(); + } + } + } + } + + intptr_t StackLength() { return stack_.Length(); } + + private: + bool IsMarked(ObjectPtr object) { + return set_->GetValueExclusive(object) != 0; + } + void Mark(ObjectPtr object) { set_->SetValueExclusive(object, 1); } + + Thread* thread_; + WeakTable* set_; + GrowableObjectArray& list_; + // Stack of objects that are currently being processed + GrowableObjectArray& stack_; +}; + +void Object::EnsureDeeplyImmutable(Zone* zone) const { + WorkSet workset(Thread::Current(), zone); + workset.Add(*this); + + Object& current = Object::Handle(zone); + Function& function = Function::Handle(zone); + Object& obj = Object::Handle(zone); + + while (workset.TakeAndPush(¤t)) { + if (current.IsSmi() || current.IsNull() || current.IsCanonical() || + current.IsDeeplyImmutable() || + IsTypedDataBaseClassId(current.GetClassId())) { + workset.PopAndProcessCompletedClosuresAndContexts(&obj); + continue; + } + + if (current.IsClosure()) { + const Closure& closure = Closure::Cast(current); + function = closure.function(); + if (!function.IsImplicitClosureFunction() && + !function.captures_only_final_not_late_vars()) { + Exceptions::ThrowArgumentError(String::Handle(String::New( + "Only final not-late variables can be captured here."))); + UNREACHABLE(); + } + obj = closure.RawContext(); + workset.Add(obj); + continue; + } + + if (current.IsContext()) { + const Context& context = Context::Cast(current); + // Iterate through all elements of the context. + for (intptr_t i = 0; i < context.num_variables(); i++) { + obj = context.At(i); + workset.Add(obj); + } + continue; + } + + Exceptions::ThrowArgumentError(String::Handle( + String::NewFormatted("Only trivially-immutable values are allowed: %s.", + current.ToCString()))); + UNREACHABLE(); + } + + RELEASE_ASSERT(workset.StackLength() == 0); +} + // Initialize a new isolate from source or from a snapshot. // // There are three possibilities: @@ -2741,9 +2856,16 @@ StringPtr Object::DictionaryName() const { return String::null(); } -bool Object::ShouldHaveImmutabilityBitSet(classid_t class_id) { +bool Object::ShouldHaveShallowImmutabilityBitSet(classid_t class_id) { if (class_id < kNumPredefinedCids) { - return ShouldHaveImmutabilityBitSetCid(class_id); + return IsShallowlyImmutableCid(class_id); + } + return false; +} + +bool Object::ShouldHaveDeeplyImmutabilityBitSet(classid_t class_id) { + if (class_id < kNumPredefinedCids) { + return IsDeeplyImmutableCid(class_id); } else { return Class::IsDeeplyImmutable( IsolateGroup::Current()->class_table()->At(class_id)); @@ -2852,8 +2974,10 @@ void Object::InitializeObject(uword address, tags = UntaggedObject::NotMarkedBit::update(true, tags); tags = UntaggedObject::OldAndNotRememberedBit::update(is_old, tags); tags = UntaggedObject::NewOrEvacuationCandidateBit::update(!is_old, tags); - tags = UntaggedObject::ImmutableBit::update( - Object::ShouldHaveImmutabilityBitSet(class_id), tags); + tags = UntaggedObject::ShallowImmutableBit::update( + Object::ShouldHaveShallowImmutabilityBitSet(class_id), tags); + tags = UntaggedObject::DeeplyImmutableBit::update( + Object::ShouldHaveDeeplyImmutabilityBitSet(class_id), tags); #if defined(HASH_IN_OBJECT_HEADER) tags = UntaggedObject::HashTag::update(0, tags); #endif @@ -13497,7 +13621,7 @@ void Field::SetStaticValue(const Object& value) const { ASSERT(id >= 0); if (FLAG_experimental_shared_data && is_shared()) { - FfiCallbackMetadata::EnsureTriviallyImmutable(thread->zone(), value); + value.EnsureDeeplyImmutable(thread->zone()); } SafepointReadRwLocker ml(thread, thread->isolate_group()->program_lock()); if (is_shared()) { diff --git a/runtime/vm/object.h b/runtime/vm/object.h index c1bd0341aea..614980593d6 100644 --- a/runtime/vm/object.h +++ b/runtime/vm/object.h @@ -352,9 +352,19 @@ class Object { bool IsCanonical() const { return ptr()->untag()->IsCanonical(); } void SetCanonical() const { ptr()->untag()->SetCanonical(); } void ClearCanonical() const { ptr()->untag()->ClearCanonical(); } - bool IsImmutable() const { return ptr()->untag()->IsImmutable(); } - void SetImmutable() const { ptr()->untag()->SetImmutable(); } - void ClearImmutable() const { ptr()->untag()->ClearImmutable(); } + bool IsShallowImmutable() const { + return ptr()->untag()->IsShallowImmutable(); + } + void SetShallowImmutable() const { ptr()->untag()->SetShallowImmutable(); } + void ClearShallowImmutable() const { + ptr()->untag()->ClearShallowImmutable(); + } + bool IsDeeplyImmutable() const { return ptr()->untag()->IsDeeplyImmutable(); } + void SetDeeplyImmutable() const { ptr()->untag()->SetDeeplyImmutable(); } + void ClearDeeplyImmutable() const { ptr()->untag()->ClearDeeplyImmutable(); } + bool IsImmutable() const { + return IsShallowImmutable() || IsDeeplyImmutable(); + } intptr_t GetClassId() const { return ptr()->GetClassId(); } inline ClassPtr clazz() const; static intptr_t tags_offset() { return OFFSET_OF(UntaggedObject, tags_); } @@ -722,7 +732,10 @@ class Object { kNo, }; - static bool ShouldHaveImmutabilityBitSet(classid_t class_id); + static bool ShouldHaveShallowImmutabilityBitSet(classid_t class_id); + static bool ShouldHaveDeeplyImmutabilityBitSet(classid_t class_id); + + void EnsureDeeplyImmutable(Zone* zone) const; protected: friend ObjectPtr AllocateObject(intptr_t, intptr_t, intptr_t); diff --git a/runtime/vm/object_graph_copy.cc b/runtime/vm/object_graph_copy.cc index 5f55955a86c..56879ea0082 100644 --- a/runtime/vm/object_graph_copy.cc +++ b/runtime/vm/object_graph_copy.cc @@ -151,8 +151,11 @@ static bool CanShareObject(ObjectPtr obj, uword tags) { if ((tags & UntaggedObject::CanonicalBit::mask_in_place()) != 0) { return true; } - const auto cid = UntaggedObject::ClassIdTag::decode(tags); - if ((tags & UntaggedObject::ImmutableBit::mask_in_place()) != 0) { + if ((tags & UntaggedObject::DeeplyImmutableBit::mask_in_place()) != 0) { + return true; + } + if ((tags & UntaggedObject::ShallowImmutableBit::mask_in_place()) != 0) { + const auto cid = UntaggedObject::ClassIdTag::decode(tags); if (IsUnmodifiableTypedDataViewClassId(cid)) { // Unmodifiable typed data views may have mutable backing stores. return TypedDataView::RawCast(obj) @@ -235,8 +238,10 @@ void SetNewSpaceTaggingWord(ObjectPtr to, classid_t cid, uint32_t size) { tags = UntaggedObject::OldAndNotRememberedBit::update(false, tags); tags = UntaggedObject::CanonicalBit::update(false, tags); tags = UntaggedObject::NewOrEvacuationCandidateBit::update(true, tags); - tags = UntaggedObject::ImmutableBit::update( - Object::ShouldHaveImmutabilityBitSet(cid), tags); + tags = UntaggedObject::ShallowImmutableBit::update( + Object::ShouldHaveShallowImmutabilityBitSet(cid), tags); + tags = UntaggedObject::DeeplyImmutableBit::update( + Object::ShouldHaveDeeplyImmutabilityBitSet(cid), tags); #if defined(HASH_IN_OBJECT_HEADER) tags = UntaggedObject::HashTag::update(0, tags); #endif diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h index 3b072a49268..0ea9cc03603 100644 --- a/runtime/vm/raw_object.h +++ b/runtime/vm/raw_object.h @@ -226,12 +226,15 @@ class UntaggedObject { // The bit is also used to make typed data stores efficient. 2.a. // // See also Class::kIsDeeplyImmutableBit. - using ImmutableBit = + using ShallowImmutableBit = BitField; + using DeeplyImmutableBit = + BitField; + // The rest of the initial byte is currently reserved, so the next bitfield // starts at the byte boundary. - COMPILE_ASSERT(ImmutableBit::kNextBit <= kBitsPerInt8); + COMPILE_ASSERT(DeeplyImmutableBit::kNextBit <= kBitsPerInt8); using SizeTagBits = BitField; // Encodes the object size in the tag in units of object alignment. @@ -357,9 +360,17 @@ class UntaggedObject { void SetCanonical() { tags_.UpdateBool(true); } void ClearCanonical() { tags_.UpdateBool(false); } - bool IsImmutable() const { return tags_.Read(); } - void SetImmutable() { tags_.UpdateBool(true); } - void ClearImmutable() { tags_.UpdateBool(false); } + bool IsShallowImmutable() const { return tags_.Read(); } + void SetShallowImmutable() { tags_.UpdateBool(true); } + void ClearShallowImmutable() { tags_.UpdateBool(false); } + + bool IsDeeplyImmutable() const { return tags_.Read(); } + void SetDeeplyImmutable() { tags_.UpdateBool(true); } + void ClearDeeplyImmutable() { tags_.UpdateBool(false); } + + bool IsImmutable() const { + return IsShallowImmutable() || IsDeeplyImmutable(); + } bool InVMIsolateHeap() const; diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc index c584c27cd9b..e9e760474ba 100644 --- a/runtime/vm/runtime_entry.cc +++ b/runtime/vm/runtime_entry.cc @@ -4687,7 +4687,7 @@ DEFINE_RUNTIME_ENTRY(CheckedStoreIntoShared, 2) { const Field& field = Field::CheckedHandle(zone, arguments.ArgAt(0)); const Instance& value = Instance::CheckedHandle(zone, arguments.ArgAt(1)); - FfiCallbackMetadata::EnsureTriviallyImmutable(zone, value); + value.EnsureDeeplyImmutable(zone); field.SetStaticValue(value); arguments.SetReturn(field); @@ -5245,6 +5245,13 @@ DEFINE_RUNTIME_ENTRY(InitializeSharedField, 1) { arguments.SetReturn(result); } +// Throw if the value is not immutable. +// Arg0: Value to check. +DEFINE_RUNTIME_ENTRY(EnsureDeeplyImmutable, 1) { + const Instance& value = Instance::CheckedHandle(zone, arguments.ArgAt(0)); + value.EnsureDeeplyImmutable(zone); +} + #if defined(USING_MEMORY_SANITIZER) extern "C" void dart_msan_read1(void* addr) { __msan_check_mem_is_initialized(addr, 1); diff --git a/runtime/vm/runtime_entry_list.h b/runtime/vm/runtime_entry_list.h index 1d2a4d76950..34bd942c074 100644 --- a/runtime/vm/runtime_entry_list.h +++ b/runtime/vm/runtime_entry_list.h @@ -89,7 +89,8 @@ namespace dart { V(InvokeNoSuchMethod) \ V(ResumeInterpreter) \ V(InitializeSharedField) \ - V(FatalError) + V(FatalError) \ + V(EnsureDeeplyImmutable) // Note: Leaf runtime function have C linkage, so they cannot pass C++ struct // values like ObjectPtr. diff --git a/runtime/vm/stub_code_list.h b/runtime/vm/stub_code_list.h index 146a9a3a6c3..a2e3814be19 100644 --- a/runtime/vm/stub_code_list.h +++ b/runtime/vm/stub_code_list.h @@ -193,6 +193,7 @@ namespace dart { V(FfiAsyncCallbackSend) \ V(CheckIsolateFieldAccess) \ V(CheckedStoreIntoShared) \ + V(EnsureDeeplyImmutable) \ V(UnknownDartCode) } // namespace dart diff --git a/sdk/lib/_internal/vm/lib/internal_patch.dart b/sdk/lib/_internal/vm/lib/internal_patch.dart index c9d37885957..2a272593973 100644 --- a/sdk/lib/_internal/vm/lib/internal_patch.dart +++ b/sdk/lib/_internal/vm/lib/internal_patch.dart @@ -488,3 +488,6 @@ abstract interface class IsolateGroup { final _toStringVisiting = FinalThreadLocal>(() => []); @patch List get toStringVisiting => _toStringVisiting.value; + +@pragma("vm:external-name", "Internal_ensureDeeplyImmutable") +external _ensureDeeplyImmutable(value); diff --git a/tests/ffi/run_isolate_group_run_test.dart b/tests/ffi/run_isolate_group_run_test.dart index 85b7b894eb3..b860a62e9b3 100644 --- a/tests/ffi/run_isolate_group_run_test.dart +++ b/tests/ffi/run_isolate_group_run_test.dart @@ -44,6 +44,10 @@ main(List args) { testFailToAssignClosureWithListToSharedVar(); + testCapturesClassWithDeeplyImmutableClosure(); + testFailToCaptureClassWithNonFinalCapturingClosure(); + testCapturesClassWithFinalCapturingClosure(); + testFailToPrint(); testFailToIsolateGroupRunSyncThrows(); @@ -266,6 +270,61 @@ void testFailToAssignClosureWithListToSharedVar() { print(getList); } +/// +@pragma('vm:deeply-immutable') +final class FooWithFunc { + final int Function() func; + final int kuka; + + FooWithFunc(this.func, this.kuka); +} + +void testCapturesClassWithDeeplyImmutableClosure() { + final foo = FooWithFunc(() => 42, 43); + final result = IsolateGroup.runSync(() { + return foo.func(); + }); + Expect.equals(42, result); +} + +@pragma('vm:shared') +bool skipAccessAtRuntime = false; + +void testFailToCaptureClassWithNonFinalCapturingClosure() { + var closureValue = 42; + + // Construction of this "deeply-immutable" object should actually fail at + // runtime due to closure closing over non-final [closureValue] variable. + Expect.throws( + () => FooWithFunc(() => skipAccessAtRuntime ? -1 : closureValue, 43), + (e) => e is Error && e.toString().contains("Only final not-late"), + ); +} + +void testCapturesClassWithFinalCapturingClosure() { + final finalClosureValue = 43; + final foo = FooWithFunc( + () => skipAccessAtRuntime ? -1 : finalClosureValue, + 44, + ); + + skipAccessAtRuntime = true; + Expect.equals( + -1, + IsolateGroup.runSync(() { + return foo.func(); + }), + ); + + skipAccessAtRuntime = false; + Expect.equals( + 43, + IsolateGroup.runSync(() { + return foo.func(); + }), + ); +} + /// void testFailToPrint() { Expect.throws( diff --git a/tests/lib/isolate/deeply_immutable_2_test.dart b/tests/lib/isolate/deeply_immutable_cfe_2_test.dart similarity index 92% rename from tests/lib/isolate/deeply_immutable_2_test.dart rename to tests/lib/isolate/deeply_immutable_cfe_2_test.dart index 86c7d89d995..51862149cf3 100644 --- a/tests/lib/isolate/deeply_immutable_2_test.dart +++ b/tests/lib/isolate/deeply_immutable_cfe_2_test.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/tests/lib/isolate/deeply_immutable_cfe_test.dart b/tests/lib/isolate/deeply_immutable_cfe_test.dart new file mode 100644 index 00000000000..04e1ae4124e --- /dev/null +++ b/tests/lib/isolate/deeply_immutable_cfe_test.dart @@ -0,0 +1,210 @@ +// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// These checks are not implemented in the analyzer. If we ever decide to +// implement the static checks in the analyzer, move this test into the +// static_checks subdir to prevent analyzer errors showing up in the IDE. + +import 'dart:ffi'; +import 'dart:typed_data'; + +void main() { + testInstantiateDeeplyImmutable(); +} + +@pragma('vm:deeply-immutable') +final class EmptyClass {} + +@pragma('vm:deeply-immutable') +final class Class1 { + Class1(this.a); + + int a; + // ^ + // [cfe] Deeply immutable classes must only have final non-late instance fields. +} + +@pragma('vm:deeply-immutable') +final class Class2 { + late final int a; + // ^ + // [cfe] Deeply immutable classes must only have final non-late instance fields. +} + +@pragma('vm:deeply-immutable') +final class Class3 { + Class3(this.a); + + final int a; +} + +@pragma('vm:deeply-immutable') +final class Class4 { + // Static fields are not part of the instance. + static late final int a; +} + +@pragma('vm:deeply-immutable') +final class Class5 { + // External fields are defined as setter/getter pairs. + external int a; +} + +final class NotDeeplyImmutable { + late int a; +} + +@pragma('vm:deeply-immutable') +final class Class6 { + Class6(this.a); + + final NotDeeplyImmutable a; + // ^ + // [cfe] Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', function types and classes annotated with `@pragma('vm:deeply-immutable')`. +} + +void testInstantiateDeeplyImmutable() { + Class7( + someString: 'someString', + someNullableString: 'someString', + someInt: 3, + someDouble: 3.3, + someBool: false, + someNull: null, + someInt32x4: Int32x4(0, 1, 2, 3), + someFloat32x4: Float32x4(0.0, 1.1, 2.2, 3.3), + someFloat64x2: Float64x2(4.4, 5.5), + someClass7: Class7( + someString: 'someString', + someInt: 3, + someDouble: 3.3, + someBool: false, + someNull: null, + someInt32x4: Int32x4(0, 1, 2, 3), + someFloat32x4: Float32x4(0.0, 1.1, 2.2, 3.3), + someFloat64x2: Float64x2(4.4, 5.5), + someClass7: null, + somePointer: Pointer.fromAddress(0x8badf00d), + ), + somePointer: Pointer.fromAddress(0xdeadbeef), + ); +} + +@pragma('vm:deeply-immutable') +final class Class7 { + final String someString; + final String? someNullableString; + final int someInt; + final double someDouble; + final bool someBool; + final Null someNull; + final Int32x4 someInt32x4; + final Float32x4 someFloat32x4; + final Float64x2 someFloat64x2; + final Class7? someClass7; + final Pointer somePointer; + + // Note that UnmodifiableUint8ListView has been deprecated. Which means there + // currently is no way to intentionally have a typed data as a field in a + // class which is deeply immutable. + // See: https://github.com/dart-lang/sdk/issues/53218. + + // Note that RegExp, SendPort, and Capability can be implemented. So fields + // are not allowed to be of these types either. + + Class7({ + required this.someString, + this.someNullableString, + required this.someInt, + required this.someDouble, + required this.someBool, + required this.someNull, + required this.someInt32x4, + required this.someFloat32x4, + required this.someFloat64x2, + required this.someClass7, + required this.somePointer, + }); +} + +void testInstantiateImmutableHierarchy() { + Class8(animal: Cat(numberOfLegs: 4, averageNumberOfMeowsPerDay: 42.0)); + Class8(animal: Dog(numberOfLegs: 4, averageNumberOfWoofsPerDay: 1337.0)); +} + +@pragma('vm:deeply-immutable') +final class Animal { + final int numberOfLegs; + + Animal({required this.numberOfLegs}); +} + +@pragma('vm:deeply-immutable') +final class Cat extends Animal { + final double averageNumberOfMeowsPerDay; + + Cat({required super.numberOfLegs, required this.averageNumberOfMeowsPerDay}); +} + +@pragma('vm:deeply-immutable') +final class Dog extends Animal { + final double averageNumberOfWoofsPerDay; + + Dog({required super.numberOfLegs, required this.averageNumberOfWoofsPerDay}); +} + +@pragma('vm:deeply-immutable') +final class Class8 { + final Animal animal; + + Class8({required this.animal}); +} + +@pragma('vm:deeply-immutable') +abstract final class DeeplyImmutableInterface {} + +@pragma('vm:deeply-immutable') +final class Class9 implements DeeplyImmutableInterface {} + +@pragma('vm:deeply-immutable') +final class Class10 implements DeeplyImmutableInterface {} + +@pragma('vm:deeply-immutable') +sealed class Class11 {} + +@pragma('vm:deeply-immutable') +class NotSealedOrFinalClass {} +// ^ +// [cfe] Deeply immutable classes must be final or sealed. + +final class Class12 extends DeeplyImmutableInterface {} +// ^ +// [cfe] Subtypes of deeply immutable classes must be deeply immutable. + +final class Class13 implements DeeplyImmutableInterface { + // ^ + // [cfe] Subtypes of deeply immutable classes must be deeply immutable. +} + +@pragma('vm:deeply-immutable') +final class Class14 { + final T deeplyImmutable; + + Class14({required this.deeplyImmutable}); +} + +@pragma('vm:deeply-immutable') +final class Class15 { + final T notDeeplyImmutable; + // ^ + // [cfe] Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', function types and classes annotated with `@pragma('vm:deeply-immutable')`. + + Class15({required this.notDeeplyImmutable}); +} + +@pragma('vm:deeply-immutable') +abstract mixin class Class17 { + // ^ + // [cfe] Deeply immutable classes must be final or sealed. +} diff --git a/tests/lib/isolate/deeply_immutable_no_ffi_test.dart b/tests/lib/isolate/deeply_immutable_no_ffi_test.dart index cb921d7c584..8b8553bae08 100644 --- a/tests/lib/isolate/deeply_immutable_no_ffi_test.dart +++ b/tests/lib/isolate/deeply_immutable_no_ffi_test.dart @@ -13,7 +13,7 @@ import 'dart:isolate'; final class Foo { dynamic myMutableField; // ^ - // [cfe] Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', and classes annotated with `@pragma('vm:deeply-immutable')`. + // [cfe] Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', function types and classes annotated with `@pragma('vm:deeply-immutable')`. // [cfe] Deeply immutable classes must only have final non-late instance fields. } diff --git a/tests/lib/isolate/deeply_immutable_test.dart b/tests/lib/isolate/deeply_immutable_test.dart index 0418b84ba9c..d7df9317962 100644 --- a/tests/lib/isolate/deeply_immutable_test.dart +++ b/tests/lib/isolate/deeply_immutable_test.dart @@ -9,29 +9,54 @@ import 'dart:ffi'; import 'dart:typed_data'; +import 'package:expect/expect.dart'; + void main() { testInstantiateDeeplyImmutable(); + testOnlyFinalCanBeCaptured(); + testOnlyTriviallyImmutableCanBeCaptured(); + testCaptureGlobal(); + testCaptureEmptyContext(); +} + +@pragma('vm:deeply-immutable') +final class DeeplyImmutableFoo { + final Function() closure; + + DeeplyImmutableFoo(this.closure); +} + +testOnlyFinalCanBeCaptured() { + List list = ["Hello", "world"]; + Expect.throws(() { + final foo = DeeplyImmutableFoo(() { list.add("abc"); return list; } ); + print(foo.closure()); + }, (e) => e is ArgumentError && e.toString().contains("Only final not-late")); +} + +testOnlyTriviallyImmutableCanBeCaptured() { + final List list = ["Hello", "world"]; + Expect.throws(() { + final foo = DeeplyImmutableFoo(() { list.add("abc"); return list; } ); + print(foo.closure()); + }, (e) => e is ArgumentError && + e.toString().contains("Only trivially-immutable values")); +} + +final List globalList = ["Hello", "world"]; +testCaptureGlobal() { + final foo = DeeplyImmutableFoo(() { globalList.add("abc"); return globalList; }); + print(foo.closure()); +} + +testCaptureEmptyContext() { + final foo = DeeplyImmutableFoo(() => 42); + print(foo.closure()); } @pragma('vm:deeply-immutable') final class EmptyClass {} -@pragma('vm:deeply-immutable') -final class Class1 { - Class1(this.a); - - int a; - // ^ - // [cfe] Deeply immutable classes must only have final non-late instance fields. -} - -@pragma('vm:deeply-immutable') -final class Class2 { - late final int a; - // ^ - // [cfe] Deeply immutable classes must only have final non-late instance fields. -} - @pragma('vm:deeply-immutable') final class Class3 { Class3(this.a); @@ -55,15 +80,6 @@ final class NotDeeplyImmutable { late int a; } -@pragma('vm:deeply-immutable') -final class Class6 { - Class6(this.a); - - final NotDeeplyImmutable a; - // ^ - // [cfe] Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', and classes annotated with `@pragma('vm:deeply-immutable')`. -} - void testInstantiateDeeplyImmutable() { Class7( someString: 'someString', @@ -86,8 +102,10 @@ void testInstantiateDeeplyImmutable() { someFloat64x2: Float64x2(4.4, 5.5), someClass7: null, somePointer: Pointer.fromAddress(0x8badf00d), + someClosure: () => 31, ), somePointer: Pointer.fromAddress(0xdeadbeef), + someClosure: () => 42 ); } @@ -104,6 +122,7 @@ final class Class7 { final Float64x2 someFloat64x2; final Class7? someClass7; final Pointer somePointer; + final Function() someClosure; // Note that UnmodifiableUint8ListView has been deprecated. Which means there // currently is no way to intentionally have a typed data as a field in a @@ -125,6 +144,7 @@ final class Class7 { required this.someFloat64x2, required this.someClass7, required this.somePointer, + required this.someClosure, }); } @@ -173,38 +193,9 @@ final class Class10 implements DeeplyImmutableInterface {} @pragma('vm:deeply-immutable') sealed class Class11 {} -@pragma('vm:deeply-immutable') -class NotSealedOrFinalClass {} -// ^ -// [cfe] Deeply immutable classes must be final or sealed. - -final class Class12 extends DeeplyImmutableInterface {} -// ^ -// [cfe] Subtypes of deeply immutable classes must be deeply immutable. - -final class Class13 implements DeeplyImmutableInterface { - // ^ - // [cfe] Subtypes of deeply immutable classes must be deeply immutable. -} - @pragma('vm:deeply-immutable') final class Class14 { final T deeplyImmutable; Class14({required this.deeplyImmutable}); } - -@pragma('vm:deeply-immutable') -final class Class15 { - final T notDeeplyImmutable; - // ^ - // [cfe] Deeply immutable classes must only have deeply immutable instance fields. Deeply immutable types include 'int', 'double', 'bool', 'String', 'Pointer', 'Float32x4', 'Float64x2', 'Int32x4', and classes annotated with `@pragma('vm:deeply-immutable')`. - - Class15({required this.notDeeplyImmutable}); -} - -@pragma('vm:deeply-immutable') -abstract mixin class Class17 {} -// ^ -// [cfe] Deeply immutable classes must be final or sealed. -