diff --git a/runtime/platform/thread_sanitizer.h b/runtime/platform/thread_sanitizer.h index baff130afa1..b82fde933a8 100644 --- a/runtime/platform/thread_sanitizer.h +++ b/runtime/platform/thread_sanitizer.h @@ -21,4 +21,16 @@ extern "C" void __tsan_release(void* addr); #define NO_SANITIZE_THREAD #endif +#if defined(USING_THREAD_SANITIZER) +#define DO_IF_TSAN(CODE) CODE +#else +#define DO_IF_TSAN(CODE) +#endif + +#if defined(USING_THREAD_SANITIZER) +#define DO_IF_NOT_TSAN(CODE) +#else +#define DO_IF_NOT_TSAN(CODE) CODE +#endif + #endif // RUNTIME_PLATFORM_THREAD_SANITIZER_H_ diff --git a/runtime/tests/vm/dart/regress47472_test.dart b/runtime/tests/vm/dart/regress47472_test.dart new file mode 100644 index 00000000000..a3f8f8bdc83 --- /dev/null +++ b/runtime/tests/vm/dart/regress47472_test.dart @@ -0,0 +1,11 @@ +// Copyright (c) 2021, 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. + +main() { + for (int i = 0; i < 1000000; ++i) { + try { + throw 'a'; + } catch (e, s) {} + } +} diff --git a/runtime/tests/vm/dart_2/regress47472_test.dart b/runtime/tests/vm/dart_2/regress47472_test.dart new file mode 100644 index 00000000000..a3f8f8bdc83 --- /dev/null +++ b/runtime/tests/vm/dart_2/regress47472_test.dart @@ -0,0 +1,11 @@ +// Copyright (c) 2021, 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. + +main() { + for (int i = 0; i < 1000000; ++i) { + try { + throw 'a'; + } catch (e, s) {} + } +} diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc index c77020460d9..1e568f2793b 100644 --- a/runtime/vm/compiler/backend/il_x64.cc +++ b/runtime/vm/compiler/backend/il_x64.cc @@ -1154,8 +1154,9 @@ void NativeCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { // Push the result place holder initialized to NULL. __ PushObject(Object::null_object()); - // Pass a pointer to the first argument in RAX. - __ leaq(RAX, compiler::Address(RSP, ArgumentCount() * kWordSize)); + // Pass a pointer to the first argument in R13 (we avoid using RAX here to + // simplify the stub code that will call native code). + __ leaq(R13, compiler::Address(RSP, ArgumentCount() * kWordSize)); __ LoadImmediate(R10, compiler::Immediate(argc_tag)); const Code* stub; diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc index b1943f6c5c4..abb824d1dac 100644 --- a/runtime/vm/compiler/runtime_api.cc +++ b/runtime/vm/compiler/runtime_api.cc @@ -2,6 +2,8 @@ // 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. +#include "platform/thread_sanitizer.h" + #include "vm/compiler/runtime_api.h" #include "vm/object.h" diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h index 5ce613d79a6..8d9a7a181e1 100644 --- a/runtime/vm/compiler/runtime_api.h +++ b/runtime/vm/compiler/runtime_api.h @@ -19,7 +19,9 @@ // in compiler::target namespace. #include "platform/globals.h" +#include "platform/thread_sanitizer.h" #include "platform/utils.h" + #include "vm/allocation.h" #include "vm/bitfield.h" #include "vm/bss_relocs.h" @@ -1059,6 +1061,15 @@ class MonomorphicSmiableCall : public AllStatic { FINAL_CLASS(); }; +class TsanUtils : public AllStatic { + public: + static word setjmp_function_offset(); + static word setjmp_buffer_offset(); + static word exception_pc_offset(); + static word exception_sp_offset(); + static word exception_fp_offset(); +}; + class Thread : public AllStatic { public: static word api_top_scope_offset(); @@ -1122,6 +1133,8 @@ class Thread : public AllStatic { static word callback_code_offset(); static word callback_stack_return_offset(); + static word tsan_utils_offset(); + static word jump_to_frame_entry_point_offset(); static word AllocateArray_entry_point_offset(); static word write_barrier_code_offset(); diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h index 4ade729dfff..2a33ea5347c 100644 --- a/runtime/vm/compiler/runtime_offsets_extracted.h +++ b/runtime/vm/compiler/runtime_offsets_extracted.h @@ -246,11 +246,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 8; static constexpr dart::compiler::target::word String_length_offset = 4; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 376; + Thread_AllocateArray_entry_point_offset = 380; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 748; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 752; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 756; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 128; static constexpr dart::compiler::target::word @@ -275,22 +275,22 @@ static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 296; static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 204; -static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788; +static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 792; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 340; + Thread_auto_scope_native_wrapper_entry_point_offset = 344; static constexpr dart::compiler::target::word Thread_bool_false_offset = 120; static constexpr dart::compiler::target::word Thread_bool_true_offset = 116; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 332; + Thread_bootstrap_native_wrapper_entry_point_offset = 336; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 276; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 144; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 800; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 808; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 44; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 792; + Thread_double_truncate_round_supported_offset = 796; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 316; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 232; @@ -299,14 +299,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 236; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 356; + 360; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 352; + Thread_double_negate_address_offset = 356; static constexpr dart::compiler::target::word Thread_end_offset = 52; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 256; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 768; + 772; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 260; static constexpr dart::compiler::target::word @@ -318,21 +318,21 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 132; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 368; + Thread_float_absolute_address_offset = 372; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 364; + Thread_float_negate_address_offset = 368; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 360; + 364; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 372; + Thread_float_zerow_address_offset = 376; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 756; + 760; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 140; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 784; + 788; static constexpr dart::compiler::target::word Thread_isolate_offset = 40; -static constexpr dart::compiler::target::word Thread_isolate_group_offset = 804; +static constexpr dart::compiler::target::word Thread_isolate_group_offset = 812; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 64; static constexpr dart::compiler::target::word @@ -350,7 +350,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 216; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 336; + Thread_no_scope_native_wrapper_entry_point_offset = 340; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152; static constexpr dart::compiler::target::word @@ -373,16 +373,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 180; static constexpr dart::compiler::target::word Thread_object_null_offset = 112; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 344; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760; + Thread_predefined_symbols_address_offset = 348; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 764; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 764; + Thread_saved_shadow_call_stack_offset = 768; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 772; + 776; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 248; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 328; + Thread_slow_type_test_entry_point_offset = 332; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 56; @@ -414,9 +414,21 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 32; static constexpr dart::compiler::target::word Thread_heap_base_offset = 36; -static constexpr dart::compiler::target::word Thread_callback_code_offset = 776; +static constexpr dart::compiler::target::word Thread_callback_code_offset = 780; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 780; + Thread_callback_stack_return_offset = 784; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 328; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 800; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 4; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = 8; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 12; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 16; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8; static constexpr dart::compiler::target::word TwoByteString_data_offset = 12; static constexpr dart::compiler::target::word Type_arguments_offset = 12; @@ -476,7 +488,7 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 4, 12, 8, 16}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 716, 720, 724, 728, 732, -1, 736, -1, 740, 744, -1, -1, -1, -1, -1, -1}; + 720, 724, 728, 732, 736, -1, 740, -1, 744, 748, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12; static constexpr dart::compiler::target::word ApiError_InstanceSize = 8; static constexpr dart::compiler::target::word Array_header_size = 12; @@ -798,11 +810,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 4; static constexpr dart::compiler::target::word String_length_offset = 8; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 728; + Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 1496; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 1504; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1512; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -828,22 +840,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 1576; + 1584; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 656; + Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 640; + Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 264; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1592; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 1584; + Thread_double_truncate_round_supported_offset = 1592; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440; @@ -852,14 +864,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 688; + 696; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 680; + Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word Thread_end_offset = 104; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 1536; + 1544; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -871,22 +883,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 712; + Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 704; + Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 696; + 704; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 720; + Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 1512; + 1520; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 1568; + 1576; static constexpr dart::compiler::target::word Thread_isolate_offset = 80; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 1600; + 1624; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -904,7 +916,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 648; + Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -927,16 +939,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 336; static constexpr dart::compiler::target::word Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 664; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1520; + Thread_predefined_symbols_address_offset = 672; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1528; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 1528; + Thread_saved_shadow_call_stack_offset = 1536; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 1544; + 1552; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 632; + Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 112; @@ -969,9 +981,22 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word Thread_callback_code_offset = - 1552; + 1560; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 1560; + Thread_callback_stack_return_offset = 1568; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1600; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 8; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = + 16; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 24; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 32; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; @@ -1032,8 +1057,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, -1, -1, 1440, 1448, - 1456, 1464, 1472, -1, 1480, 1488, -1, -1}; + 1416, 1424, 1432, 1440, -1, -1, 1448, 1456, + 1464, 1472, 1480, -1, 1488, 1496, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word ApiError_InstanceSize = 16; static constexpr dart::compiler::target::word Array_header_size = 24; @@ -1351,11 +1376,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 8; static constexpr dart::compiler::target::word String_length_offset = 4; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 376; + Thread_AllocateArray_entry_point_offset = 380; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 716; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 720; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 724; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 128; static constexpr dart::compiler::target::word @@ -1380,22 +1405,22 @@ static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 296; static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 204; -static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 756; +static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 760; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 340; + Thread_auto_scope_native_wrapper_entry_point_offset = 344; static constexpr dart::compiler::target::word Thread_bool_false_offset = 120; static constexpr dart::compiler::target::word Thread_bool_true_offset = 116; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 332; + Thread_bootstrap_native_wrapper_entry_point_offset = 336; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 276; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 144; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 768; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 776; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 44; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 760; + Thread_double_truncate_round_supported_offset = 764; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 316; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 232; @@ -1404,14 +1429,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 236; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 356; + 360; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 352; + Thread_double_negate_address_offset = 356; static constexpr dart::compiler::target::word Thread_end_offset = 52; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 256; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 736; + 740; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 260; static constexpr dart::compiler::target::word @@ -1423,21 +1448,21 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 132; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 368; + Thread_float_absolute_address_offset = 372; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 364; + Thread_float_negate_address_offset = 368; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 360; + 364; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 372; + Thread_float_zerow_address_offset = 376; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 724; + 728; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 140; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 752; + 756; static constexpr dart::compiler::target::word Thread_isolate_offset = 40; -static constexpr dart::compiler::target::word Thread_isolate_group_offset = 772; +static constexpr dart::compiler::target::word Thread_isolate_group_offset = 780; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 64; static constexpr dart::compiler::target::word @@ -1455,7 +1480,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 216; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 336; + Thread_no_scope_native_wrapper_entry_point_offset = 340; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152; static constexpr dart::compiler::target::word @@ -1478,16 +1503,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 180; static constexpr dart::compiler::target::word Thread_object_null_offset = 112; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 344; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 728; + Thread_predefined_symbols_address_offset = 348; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 732; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 732; + Thread_saved_shadow_call_stack_offset = 736; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 740; + 744; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 248; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 328; + Thread_slow_type_test_entry_point_offset = 332; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 56; @@ -1519,9 +1544,21 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 32; static constexpr dart::compiler::target::word Thread_heap_base_offset = 36; -static constexpr dart::compiler::target::word Thread_callback_code_offset = 744; +static constexpr dart::compiler::target::word Thread_callback_code_offset = 748; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 748; + Thread_callback_stack_return_offset = 752; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 328; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 768; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 4; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = 8; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 12; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 16; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8; static constexpr dart::compiler::target::word TwoByteString_data_offset = 12; static constexpr dart::compiler::target::word Type_arguments_offset = 12; @@ -1900,11 +1937,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 4; static constexpr dart::compiler::target::word String_length_offset = 8; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 728; + Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 1560; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 1568; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1576; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -1930,22 +1967,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 1640; + 1648; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 656; + Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 640; + Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 264; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1656; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 1648; + Thread_double_truncate_round_supported_offset = 1656; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440; @@ -1954,14 +1991,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 688; + 696; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 680; + Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word Thread_end_offset = 104; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 1600; + 1608; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -1973,22 +2010,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 712; + Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 704; + Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 696; + 704; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 720; + Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 1576; + 1584; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 1632; + 1640; static constexpr dart::compiler::target::word Thread_isolate_offset = 80; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 1664; + 1688; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -2006,7 +2043,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 648; + Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -2029,16 +2066,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 336; static constexpr dart::compiler::target::word Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 664; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584; + Thread_predefined_symbols_address_offset = 672; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1592; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 1592; + Thread_saved_shadow_call_stack_offset = 1600; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 1608; + 1616; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 632; + Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 112; @@ -2071,9 +2108,22 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word Thread_callback_code_offset = - 1616; + 1624; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 1624; + Thread_callback_stack_return_offset = 1632; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 8; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = + 16; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 24; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 32; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; @@ -2134,9 +2184,9 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, - 1496, 1504, 1512, 1520, -1, -1, -1, -1, 1528, 1536, -1, - -1, 1544, 1552, 1560, -1, -1, -1, -1, -1, -1}; + 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, + 1504, 1512, 1520, 1528, -1, -1, -1, -1, 1536, 1544, -1, + -1, 1552, 1560, 1568, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word ApiError_InstanceSize = 16; static constexpr dart::compiler::target::word Array_header_size = 24; @@ -2456,11 +2506,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 4; static constexpr dart::compiler::target::word String_length_offset = 8; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 728; + Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 1496; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 1504; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1512; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -2486,22 +2536,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 1576; + 1584; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 656; + Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 640; + Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 264; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1592; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 1584; + Thread_double_truncate_round_supported_offset = 1592; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440; @@ -2510,14 +2560,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 688; + 696; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 680; + Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word Thread_end_offset = 104; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 1536; + 1544; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -2529,22 +2579,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 712; + Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 704; + Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 696; + 704; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 720; + Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 1512; + 1520; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 1568; + 1576; static constexpr dart::compiler::target::word Thread_isolate_offset = 80; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 1600; + 1624; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -2562,7 +2612,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 648; + Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -2585,16 +2635,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 336; static constexpr dart::compiler::target::word Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 664; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1520; + Thread_predefined_symbols_address_offset = 672; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1528; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 1528; + Thread_saved_shadow_call_stack_offset = 1536; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 1544; + 1552; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 632; + Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 112; @@ -2627,9 +2677,22 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word Thread_callback_code_offset = - 1552; + 1560; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 1560; + Thread_callback_stack_return_offset = 1568; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1600; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 8; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = + 16; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 24; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 32; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; @@ -2690,8 +2753,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, -1, -1, 1440, 1448, - 1456, 1464, 1472, -1, 1480, 1488, -1, -1}; + 1416, 1424, 1432, 1440, -1, -1, 1448, 1456, + 1464, 1472, 1480, -1, 1488, 1496, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word ApiError_InstanceSize = 16; static constexpr dart::compiler::target::word Array_header_size = 16; @@ -3011,11 +3074,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 4; static constexpr dart::compiler::target::word String_length_offset = 8; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 728; + Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 1560; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 1568; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1576; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -3041,22 +3104,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 1640; + 1648; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 656; + Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 640; + Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 264; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1656; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 1648; + Thread_double_truncate_round_supported_offset = 1656; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440; @@ -3065,14 +3128,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 688; + 696; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 680; + Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word Thread_end_offset = 104; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 1600; + 1608; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -3084,22 +3147,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 712; + Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 704; + Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 696; + 704; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 720; + Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 1576; + 1584; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 1632; + 1640; static constexpr dart::compiler::target::word Thread_isolate_offset = 80; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 1664; + 1688; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -3117,7 +3180,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 648; + Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -3140,16 +3203,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 336; static constexpr dart::compiler::target::word Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 664; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584; + Thread_predefined_symbols_address_offset = 672; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1592; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 1592; + Thread_saved_shadow_call_stack_offset = 1600; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 1608; + 1616; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 632; + Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 112; @@ -3182,9 +3245,22 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word Thread_callback_code_offset = - 1616; + 1624; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 1624; + Thread_callback_stack_return_offset = 1632; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 8; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = + 16; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 24; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 32; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; @@ -3245,9 +3321,9 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, - 1496, 1504, 1512, 1520, -1, -1, -1, -1, 1528, 1536, -1, - -1, 1544, 1552, 1560, -1, -1, -1, -1, -1, -1}; + 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, + 1504, 1512, 1520, 1528, -1, -1, -1, -1, 1536, 1544, -1, + -1, 1552, 1560, 1568, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word ApiError_InstanceSize = 16; static constexpr dart::compiler::target::word Array_header_size = 16; @@ -3561,11 +3637,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 8; static constexpr dart::compiler::target::word String_length_offset = 4; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 376; + Thread_AllocateArray_entry_point_offset = 380; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 748; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 752; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 756; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 128; static constexpr dart::compiler::target::word @@ -3590,22 +3666,22 @@ static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 296; static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 204; -static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788; +static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 792; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 340; + Thread_auto_scope_native_wrapper_entry_point_offset = 344; static constexpr dart::compiler::target::word Thread_bool_false_offset = 120; static constexpr dart::compiler::target::word Thread_bool_true_offset = 116; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 332; + Thread_bootstrap_native_wrapper_entry_point_offset = 336; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 276; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 144; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 800; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 808; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 44; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 792; + Thread_double_truncate_round_supported_offset = 796; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 316; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 232; @@ -3614,14 +3690,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 236; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 356; + 360; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 352; + Thread_double_negate_address_offset = 356; static constexpr dart::compiler::target::word Thread_end_offset = 52; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 256; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 768; + 772; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 260; static constexpr dart::compiler::target::word @@ -3633,21 +3709,21 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 132; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 368; + Thread_float_absolute_address_offset = 372; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 364; + Thread_float_negate_address_offset = 368; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 360; + 364; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 372; + Thread_float_zerow_address_offset = 376; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 756; + 760; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 140; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 784; + 788; static constexpr dart::compiler::target::word Thread_isolate_offset = 40; -static constexpr dart::compiler::target::word Thread_isolate_group_offset = 804; +static constexpr dart::compiler::target::word Thread_isolate_group_offset = 812; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 64; static constexpr dart::compiler::target::word @@ -3665,7 +3741,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 216; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 336; + Thread_no_scope_native_wrapper_entry_point_offset = 340; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152; static constexpr dart::compiler::target::word @@ -3688,16 +3764,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 180; static constexpr dart::compiler::target::word Thread_object_null_offset = 112; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 344; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760; + Thread_predefined_symbols_address_offset = 348; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 764; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 764; + Thread_saved_shadow_call_stack_offset = 768; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 772; + 776; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 248; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 328; + Thread_slow_type_test_entry_point_offset = 332; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 56; @@ -3729,9 +3805,21 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 32; static constexpr dart::compiler::target::word Thread_heap_base_offset = 36; -static constexpr dart::compiler::target::word Thread_callback_code_offset = 776; +static constexpr dart::compiler::target::word Thread_callback_code_offset = 780; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 780; + Thread_callback_stack_return_offset = 784; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 328; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 800; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 4; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = 8; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 12; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 16; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8; static constexpr dart::compiler::target::word TwoByteString_data_offset = 12; static constexpr dart::compiler::target::word Type_arguments_offset = 12; @@ -3791,7 +3879,7 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 4, 12, 8, 16}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 716, 720, 724, 728, 732, -1, 736, -1, 740, 744, -1, -1, -1, -1, -1, -1}; + 720, 724, 728, 732, 736, -1, 740, -1, 744, 748, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12; static constexpr dart::compiler::target::word ApiError_InstanceSize = 8; static constexpr dart::compiler::target::word Array_header_size = 12; @@ -4107,11 +4195,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 4; static constexpr dart::compiler::target::word String_length_offset = 8; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 728; + Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 1496; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 1504; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1512; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -4137,22 +4225,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 1576; + 1584; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 656; + Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 640; + Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 264; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1592; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 1584; + Thread_double_truncate_round_supported_offset = 1592; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440; @@ -4161,14 +4249,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 688; + 696; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 680; + Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word Thread_end_offset = 104; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 1536; + 1544; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -4180,22 +4268,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 712; + Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 704; + Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 696; + 704; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 720; + Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 1512; + 1520; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 1568; + 1576; static constexpr dart::compiler::target::word Thread_isolate_offset = 80; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 1600; + 1624; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -4213,7 +4301,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 648; + Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -4236,16 +4324,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 336; static constexpr dart::compiler::target::word Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 664; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1520; + Thread_predefined_symbols_address_offset = 672; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1528; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 1528; + Thread_saved_shadow_call_stack_offset = 1536; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 1544; + 1552; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 632; + Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 112; @@ -4278,9 +4366,22 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word Thread_callback_code_offset = - 1552; + 1560; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 1560; + Thread_callback_stack_return_offset = 1568; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1600; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 8; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = + 16; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 24; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 32; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; @@ -4341,8 +4442,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, -1, -1, 1440, 1448, - 1456, 1464, 1472, -1, 1480, 1488, -1, -1}; + 1416, 1424, 1432, 1440, -1, -1, 1448, 1456, + 1464, 1472, 1480, -1, 1488, 1496, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word ApiError_InstanceSize = 16; static constexpr dart::compiler::target::word Array_header_size = 24; @@ -4654,11 +4755,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 8; static constexpr dart::compiler::target::word String_length_offset = 4; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 376; + Thread_AllocateArray_entry_point_offset = 380; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 716; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 720; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 724; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 128; static constexpr dart::compiler::target::word @@ -4683,22 +4784,22 @@ static constexpr dart::compiler::target::word Thread_allocate_object_slow_entry_point_offset = 296; static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 204; -static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 756; +static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 760; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 340; + Thread_auto_scope_native_wrapper_entry_point_offset = 344; static constexpr dart::compiler::target::word Thread_bool_false_offset = 120; static constexpr dart::compiler::target::word Thread_bool_true_offset = 116; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 332; + Thread_bootstrap_native_wrapper_entry_point_offset = 336; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 276; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 144; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 768; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 776; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 44; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 760; + Thread_double_truncate_round_supported_offset = 764; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 316; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 232; @@ -4707,14 +4808,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 236; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 356; + 360; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 352; + Thread_double_negate_address_offset = 356; static constexpr dart::compiler::target::word Thread_end_offset = 52; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 256; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 736; + 740; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 260; static constexpr dart::compiler::target::word @@ -4726,21 +4827,21 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 132; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 368; + Thread_float_absolute_address_offset = 372; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 364; + Thread_float_negate_address_offset = 368; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 360; + 364; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 372; + Thread_float_zerow_address_offset = 376; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 724; + 728; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 140; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 752; + 756; static constexpr dart::compiler::target::word Thread_isolate_offset = 40; -static constexpr dart::compiler::target::word Thread_isolate_group_offset = 772; +static constexpr dart::compiler::target::word Thread_isolate_group_offset = 780; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 64; static constexpr dart::compiler::target::word @@ -4758,7 +4859,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 216; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 336; + Thread_no_scope_native_wrapper_entry_point_offset = 340; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152; static constexpr dart::compiler::target::word @@ -4781,16 +4882,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 180; static constexpr dart::compiler::target::word Thread_object_null_offset = 112; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 344; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 728; + Thread_predefined_symbols_address_offset = 348; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 732; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 732; + Thread_saved_shadow_call_stack_offset = 736; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 740; + 744; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 248; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 328; + Thread_slow_type_test_entry_point_offset = 332; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 56; @@ -4822,9 +4923,21 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 32; static constexpr dart::compiler::target::word Thread_heap_base_offset = 36; -static constexpr dart::compiler::target::word Thread_callback_code_offset = 744; +static constexpr dart::compiler::target::word Thread_callback_code_offset = 748; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 748; + Thread_callback_stack_return_offset = 752; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 328; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 768; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 4; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = 8; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 12; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 16; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8; static constexpr dart::compiler::target::word TwoByteString_data_offset = 12; static constexpr dart::compiler::target::word Type_arguments_offset = 12; @@ -5197,11 +5310,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 4; static constexpr dart::compiler::target::word String_length_offset = 8; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 728; + Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 1560; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 1568; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1576; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -5227,22 +5340,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 1640; + 1648; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 656; + Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 640; + Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 264; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1656; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 1648; + Thread_double_truncate_round_supported_offset = 1656; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440; @@ -5251,14 +5364,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 688; + 696; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 680; + Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word Thread_end_offset = 104; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 1600; + 1608; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -5270,22 +5383,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 712; + Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 704; + Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 696; + 704; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 720; + Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 1576; + 1584; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 1632; + 1640; static constexpr dart::compiler::target::word Thread_isolate_offset = 80; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 1664; + 1688; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -5303,7 +5416,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 648; + Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -5326,16 +5439,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 336; static constexpr dart::compiler::target::word Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 664; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584; + Thread_predefined_symbols_address_offset = 672; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1592; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 1592; + Thread_saved_shadow_call_stack_offset = 1600; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 1608; + 1616; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 632; + Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 112; @@ -5368,9 +5481,22 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word Thread_callback_code_offset = - 1616; + 1624; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 1624; + Thread_callback_stack_return_offset = 1632; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 8; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = + 16; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 24; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 32; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; @@ -5431,9 +5557,9 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, - 1496, 1504, 1512, 1520, -1, -1, -1, -1, 1528, 1536, -1, - -1, 1544, 1552, 1560, -1, -1, -1, -1, -1, -1}; + 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, + 1504, 1512, 1520, 1528, -1, -1, -1, -1, 1536, 1544, -1, + -1, 1552, 1560, 1568, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word ApiError_InstanceSize = 16; static constexpr dart::compiler::target::word Array_header_size = 24; @@ -5747,11 +5873,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 4; static constexpr dart::compiler::target::word String_length_offset = 8; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 728; + Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 1496; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 1504; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1512; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -5777,22 +5903,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 1576; + 1584; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 656; + Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 640; + Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 264; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1592; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 1584; + Thread_double_truncate_round_supported_offset = 1592; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440; @@ -5801,14 +5927,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 688; + 696; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 680; + Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word Thread_end_offset = 104; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 1536; + 1544; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -5820,22 +5946,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 712; + Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 704; + Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 696; + 704; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 720; + Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 1512; + 1520; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 1568; + 1576; static constexpr dart::compiler::target::word Thread_isolate_offset = 80; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 1600; + 1624; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -5853,7 +5979,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 648; + Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -5876,16 +6002,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 336; static constexpr dart::compiler::target::word Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 664; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1520; + Thread_predefined_symbols_address_offset = 672; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1528; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 1528; + Thread_saved_shadow_call_stack_offset = 1536; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 1544; + 1552; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 632; + Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 112; @@ -5918,9 +6044,22 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word Thread_callback_code_offset = - 1552; + 1560; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 1560; + Thread_callback_stack_return_offset = 1568; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1600; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 8; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = + 16; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 24; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 32; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; @@ -5981,8 +6120,8 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, -1, -1, 1440, 1448, - 1456, 1464, 1472, -1, 1480, 1488, -1, -1}; + 1416, 1424, 1432, 1440, -1, -1, 1448, 1456, + 1464, 1472, 1480, -1, 1488, 1496, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word ApiError_InstanceSize = 16; static constexpr dart::compiler::target::word Array_header_size = 16; @@ -6296,11 +6435,11 @@ static constexpr dart::compiler::target::word String_hash_offset = 4; static constexpr dart::compiler::target::word String_length_offset = 8; static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - Thread_AllocateArray_entry_point_offset = 728; + Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word Thread_active_exception_offset = - 1560; -static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = 1568; +static constexpr dart::compiler::target::word Thread_active_stacktrace_offset = + 1576; static constexpr dart::compiler::target::word Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -6326,22 +6465,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word Thread_api_top_scope_offset = - 1640; + 1648; static constexpr dart::compiler::target::word - Thread_auto_scope_native_wrapper_entry_point_offset = 656; + Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - Thread_bootstrap_native_wrapper_entry_point_offset = 640; + Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word Thread_call_to_runtime_stub_offset = 264; -static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1656; +static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680; static constexpr dart::compiler::target::word Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - Thread_double_truncate_round_supported_offset = 1648; + Thread_double_truncate_round_supported_offset = 1656; static constexpr dart::compiler::target::word Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440; @@ -6350,14 +6489,14 @@ static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset = static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word Thread_double_abs_address_offset = - 688; + 696; static constexpr dart::compiler::target::word - Thread_double_negate_address_offset = 680; + Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word Thread_end_offset = 104; static constexpr dart::compiler::target::word Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word Thread_execution_state_offset = - 1600; + 1608; static constexpr dart::compiler::target::word Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -6369,22 +6508,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - Thread_float_absolute_address_offset = 712; + Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - Thread_float_negate_address_offset = 704; + Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word Thread_float_not_address_offset = - 696; + 704; static constexpr dart::compiler::target::word - Thread_float_zerow_address_offset = 720; + Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word Thread_global_object_pool_offset = - 1576; + 1584; static constexpr dart::compiler::target::word Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset = - 1632; + 1640; static constexpr dart::compiler::target::word Thread_isolate_offset = 80; static constexpr dart::compiler::target::word Thread_isolate_group_offset = - 1664; + 1688; static constexpr dart::compiler::target::word Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -6402,7 +6541,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - Thread_no_scope_native_wrapper_entry_point_offset = 648; + Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -6425,16 +6564,16 @@ static constexpr dart::compiler::target::word Thread_range_error_shared_without_fpu_regs_stub_offset = 336; static constexpr dart::compiler::target::word Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - Thread_predefined_symbols_address_offset = 664; -static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584; + Thread_predefined_symbols_address_offset = 672; +static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1592; static constexpr dart::compiler::target::word - Thread_saved_shadow_call_stack_offset = 1592; + Thread_saved_shadow_call_stack_offset = 1600; static constexpr dart::compiler::target::word Thread_safepoint_state_offset = - 1608; + 1616; static constexpr dart::compiler::target::word Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - Thread_slow_type_test_entry_point_offset = 632; + Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset = 112; @@ -6467,9 +6606,22 @@ static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word Thread_callback_code_offset = - 1616; + 1624; static constexpr dart::compiler::target::word - Thread_callback_stack_return_offset = 1624; + Thread_callback_stack_return_offset = 1632; +static constexpr dart::compiler::target::word + Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664; +static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset = + 0; +static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset = + 8; +static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = + 16; +static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset = + 24; +static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset = + 32; static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word TwoByteString_data_offset = 16; @@ -6530,9 +6682,9 @@ static constexpr dart::compiler::target::word Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, - 1496, 1504, 1512, 1520, -1, -1, -1, -1, 1528, 1536, -1, - -1, 1544, 1552, 1560, -1, -1, -1, -1, -1, -1}; + 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, + 1504, 1512, 1520, 1528, -1, -1, -1, -1, 1536, 1544, -1, + -1, 1552, 1560, 1568, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word ApiError_InstanceSize = 16; static constexpr dart::compiler::target::word Array_header_size = 16; @@ -6883,11 +7035,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 4; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 4; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 376; + AOT_Thread_AllocateArray_entry_point_offset = 380; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 748; + AOT_Thread_active_exception_offset = 752; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 752; + AOT_Thread_active_stacktrace_offset = 756; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 128; static constexpr dart::compiler::target::word @@ -6913,24 +7065,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 204; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 788; + 792; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 340; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 120; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 116; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 332; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 336; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 276; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 144; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 800; + 808; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 44; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 792; + AOT_Thread_double_truncate_round_supported_offset = 796; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 316; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -6940,14 +7092,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 236; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 356; + AOT_Thread_double_abs_address_offset = 360; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 352; + AOT_Thread_double_negate_address_offset = 356; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 52; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 768; + AOT_Thread_execution_state_offset = 772; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 260; static constexpr dart::compiler::target::word @@ -6959,22 +7111,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 132; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 368; + AOT_Thread_float_absolute_address_offset = 372; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 364; + AOT_Thread_float_negate_address_offset = 368; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 360; + AOT_Thread_float_not_address_offset = 364; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 372; + AOT_Thread_float_zerow_address_offset = 376; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 756; + AOT_Thread_global_object_pool_offset = 760; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 140; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 784; + AOT_Thread_exit_through_ffi_offset = 788; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 804; + 812; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 64; static constexpr dart::compiler::target::word @@ -6992,7 +7144,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 216; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 336; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 340; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152; static constexpr dart::compiler::target::word @@ -7017,16 +7169,16 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 112; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 344; -static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 760; + AOT_Thread_predefined_symbols_address_offset = 348; +static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 764; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 764; + AOT_Thread_saved_shadow_call_stack_offset = 768; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 772; + AOT_Thread_safepoint_state_offset = 776; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 248; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 328; + AOT_Thread_slow_type_test_entry_point_offset = 332; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 28; static constexpr dart::compiler::target::word @@ -7061,9 +7213,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 32; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 776; + 780; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 780; + AOT_Thread_callback_stack_return_offset = 784; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 328; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 800; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 4; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 12; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 16; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 8; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -7136,7 +7302,7 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 4, 12, 8, 16}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 716, 720, 724, 728, 732, -1, 736, -1, 740, 744, -1, -1, -1, -1, -1, -1}; + 720, 724, 728, 732, 736, -1, 740, -1, 744, 748, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 12; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8; @@ -7498,11 +7664,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 8; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 728; + AOT_Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 1496; + AOT_Thread_active_exception_offset = 1504; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 1504; + AOT_Thread_active_stacktrace_offset = 1512; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -7528,24 +7694,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 1576; + 1584; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 264; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 1592; + 1616; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 1584; + AOT_Thread_double_truncate_round_supported_offset = 1592; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -7555,14 +7721,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 688; + AOT_Thread_double_abs_address_offset = 696; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 680; + AOT_Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 1536; + AOT_Thread_execution_state_offset = 1544; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -7574,22 +7740,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 712; + AOT_Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 704; + AOT_Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 696; + AOT_Thread_float_not_address_offset = 704; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 720; + AOT_Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 1512; + AOT_Thread_global_object_pool_offset = 1520; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 1568; + AOT_Thread_exit_through_ffi_offset = 1576; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 1600; + 1624; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -7607,7 +7773,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -7632,17 +7798,17 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 664; + AOT_Thread_predefined_symbols_address_offset = 672; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 1520; + 1528; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 1528; + AOT_Thread_saved_shadow_call_stack_offset = 1536; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 1544; + AOT_Thread_safepoint_state_offset = 1552; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 632; + AOT_Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word @@ -7677,9 +7843,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 1552; + 1560; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 1560; + AOT_Thread_callback_stack_return_offset = 1568; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 1600; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 16; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 24; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 32; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -7753,8 +7933,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, -1, -1, 1440, 1448, - 1456, 1464, 1472, -1, 1480, 1488, -1, -1}; + 1416, 1424, 1432, 1440, -1, -1, 1448, 1456, + 1464, 1472, 1480, -1, 1488, 1496, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16; @@ -8119,11 +8299,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 8; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 728; + AOT_Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 1560; + AOT_Thread_active_exception_offset = 1568; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 1568; + AOT_Thread_active_stacktrace_offset = 1576; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -8149,24 +8329,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 1640; + 1648; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 264; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 1656; + 1680; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 1648; + AOT_Thread_double_truncate_round_supported_offset = 1656; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -8176,14 +8356,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 688; + AOT_Thread_double_abs_address_offset = 696; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 680; + AOT_Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 1600; + AOT_Thread_execution_state_offset = 1608; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -8195,22 +8375,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 712; + AOT_Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 704; + AOT_Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 696; + AOT_Thread_float_not_address_offset = 704; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 720; + AOT_Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 1576; + AOT_Thread_global_object_pool_offset = 1584; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 1632; + AOT_Thread_exit_through_ffi_offset = 1640; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 1664; + 1688; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -8228,7 +8408,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -8253,17 +8433,17 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 664; + AOT_Thread_predefined_symbols_address_offset = 672; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 1584; + 1592; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 1592; + AOT_Thread_saved_shadow_call_stack_offset = 1600; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 1608; + AOT_Thread_safepoint_state_offset = 1616; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 632; + AOT_Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word @@ -8298,9 +8478,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 1616; + 1624; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 1624; + AOT_Thread_callback_stack_return_offset = 1632; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 1664; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 16; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 24; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 32; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -8374,9 +8568,9 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, - 1496, 1504, 1512, 1520, -1, -1, -1, -1, 1528, 1536, -1, - -1, 1544, 1552, 1560, -1, -1, -1, -1, -1, -1}; + 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, + 1504, 1512, 1520, 1528, -1, -1, -1, -1, 1536, 1544, -1, + -1, 1552, 1560, 1568, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16; @@ -8737,11 +8931,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 8; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 728; + AOT_Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 1496; + AOT_Thread_active_exception_offset = 1504; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 1504; + AOT_Thread_active_stacktrace_offset = 1512; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -8767,24 +8961,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 1576; + 1584; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 264; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 1592; + 1616; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 1584; + AOT_Thread_double_truncate_round_supported_offset = 1592; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -8794,14 +8988,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 688; + AOT_Thread_double_abs_address_offset = 696; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 680; + AOT_Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 1536; + AOT_Thread_execution_state_offset = 1544; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -8813,22 +9007,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 712; + AOT_Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 704; + AOT_Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 696; + AOT_Thread_float_not_address_offset = 704; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 720; + AOT_Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 1512; + AOT_Thread_global_object_pool_offset = 1520; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 1568; + AOT_Thread_exit_through_ffi_offset = 1576; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 1600; + 1624; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -8846,7 +9040,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -8871,17 +9065,17 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 664; + AOT_Thread_predefined_symbols_address_offset = 672; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 1520; + 1528; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 1528; + AOT_Thread_saved_shadow_call_stack_offset = 1536; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 1544; + AOT_Thread_safepoint_state_offset = 1552; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 632; + AOT_Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word @@ -8916,9 +9110,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 1552; + 1560; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 1560; + AOT_Thread_callback_stack_return_offset = 1568; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 1600; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 16; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 24; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 32; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -8992,8 +9200,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, -1, -1, 1440, 1448, - 1456, 1464, 1472, -1, 1480, 1488, -1, -1}; + 1416, 1424, 1432, 1440, -1, -1, 1448, 1456, + 1464, 1472, 1480, -1, 1488, 1496, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16; @@ -9354,11 +9562,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 8; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 728; + AOT_Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 1560; + AOT_Thread_active_exception_offset = 1568; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 1568; + AOT_Thread_active_stacktrace_offset = 1576; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -9384,24 +9592,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 1640; + 1648; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 264; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 1656; + 1680; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 1648; + AOT_Thread_double_truncate_round_supported_offset = 1656; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -9411,14 +9619,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 688; + AOT_Thread_double_abs_address_offset = 696; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 680; + AOT_Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 1600; + AOT_Thread_execution_state_offset = 1608; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -9430,22 +9638,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 712; + AOT_Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 704; + AOT_Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 696; + AOT_Thread_float_not_address_offset = 704; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 720; + AOT_Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 1576; + AOT_Thread_global_object_pool_offset = 1584; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 1632; + AOT_Thread_exit_through_ffi_offset = 1640; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 1664; + 1688; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -9463,7 +9671,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -9488,17 +9696,17 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 664; + AOT_Thread_predefined_symbols_address_offset = 672; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 1584; + 1592; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 1592; + AOT_Thread_saved_shadow_call_stack_offset = 1600; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 1608; + AOT_Thread_safepoint_state_offset = 1616; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 632; + AOT_Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word @@ -9533,9 +9741,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 1616; + 1624; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 1624; + AOT_Thread_callback_stack_return_offset = 1632; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 1664; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 16; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 24; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 32; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -9609,9 +9831,9 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, - 1496, 1504, 1512, 1520, -1, -1, -1, -1, 1528, 1536, -1, - -1, 1544, 1552, 1560, -1, -1, -1, -1, -1, -1}; + 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, + 1504, 1512, 1520, 1528, -1, -1, -1, -1, 1536, 1544, -1, + -1, 1552, 1560, 1568, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16; @@ -9967,11 +10189,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 4; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 4; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 376; + AOT_Thread_AllocateArray_entry_point_offset = 380; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 748; + AOT_Thread_active_exception_offset = 752; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 752; + AOT_Thread_active_stacktrace_offset = 756; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 128; static constexpr dart::compiler::target::word @@ -9997,24 +10219,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 204; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 788; + 792; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 340; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 120; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 116; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 332; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 336; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 276; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 144; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 800; + 808; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 44; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 792; + AOT_Thread_double_truncate_round_supported_offset = 796; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 316; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -10024,14 +10246,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 236; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 356; + AOT_Thread_double_abs_address_offset = 360; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 352; + AOT_Thread_double_negate_address_offset = 356; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 52; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 768; + AOT_Thread_execution_state_offset = 772; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 260; static constexpr dart::compiler::target::word @@ -10043,22 +10265,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 132; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 368; + AOT_Thread_float_absolute_address_offset = 372; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 364; + AOT_Thread_float_negate_address_offset = 368; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 360; + AOT_Thread_float_not_address_offset = 364; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 372; + AOT_Thread_float_zerow_address_offset = 376; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 756; + AOT_Thread_global_object_pool_offset = 760; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 140; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 784; + AOT_Thread_exit_through_ffi_offset = 788; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 804; + 812; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 64; static constexpr dart::compiler::target::word @@ -10076,7 +10298,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 216; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 336; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 340; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152; static constexpr dart::compiler::target::word @@ -10101,16 +10323,16 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 112; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 344; -static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 760; + AOT_Thread_predefined_symbols_address_offset = 348; +static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 764; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 764; + AOT_Thread_saved_shadow_call_stack_offset = 768; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 772; + AOT_Thread_safepoint_state_offset = 776; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 248; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 328; + AOT_Thread_slow_type_test_entry_point_offset = 332; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 28; static constexpr dart::compiler::target::word @@ -10145,9 +10367,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 32; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 776; + 780; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 780; + AOT_Thread_callback_stack_return_offset = 784; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 328; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 800; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 4; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 12; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 16; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 8; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -10220,7 +10456,7 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 4, 12, 8, 16}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 716, 720, 724, 728, 732, -1, 736, -1, 740, 744, -1, -1, -1, -1, -1, -1}; + 720, 724, 728, 732, 736, -1, 740, -1, 744, 748, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 12; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8; @@ -10575,11 +10811,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 8; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 728; + AOT_Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 1496; + AOT_Thread_active_exception_offset = 1504; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 1504; + AOT_Thread_active_stacktrace_offset = 1512; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -10605,24 +10841,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 1576; + 1584; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 264; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 1592; + 1616; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 1584; + AOT_Thread_double_truncate_round_supported_offset = 1592; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -10632,14 +10868,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 688; + AOT_Thread_double_abs_address_offset = 696; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 680; + AOT_Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 1536; + AOT_Thread_execution_state_offset = 1544; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -10651,22 +10887,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 712; + AOT_Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 704; + AOT_Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 696; + AOT_Thread_float_not_address_offset = 704; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 720; + AOT_Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 1512; + AOT_Thread_global_object_pool_offset = 1520; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 1568; + AOT_Thread_exit_through_ffi_offset = 1576; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 1600; + 1624; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -10684,7 +10920,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -10709,17 +10945,17 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 664; + AOT_Thread_predefined_symbols_address_offset = 672; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 1520; + 1528; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 1528; + AOT_Thread_saved_shadow_call_stack_offset = 1536; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 1544; + AOT_Thread_safepoint_state_offset = 1552; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 632; + AOT_Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word @@ -10754,9 +10990,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 1552; + 1560; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 1560; + AOT_Thread_callback_stack_return_offset = 1568; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 1600; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 16; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 24; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 32; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -10830,8 +11080,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, -1, -1, 1440, 1448, - 1456, 1464, 1472, -1, 1480, 1488, -1, -1}; + 1416, 1424, 1432, 1440, -1, -1, 1448, 1456, + 1464, 1472, 1480, -1, 1488, 1496, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16; @@ -11189,11 +11439,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 8; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 728; + AOT_Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 1560; + AOT_Thread_active_exception_offset = 1568; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 1568; + AOT_Thread_active_stacktrace_offset = 1576; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -11219,24 +11469,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 1640; + 1648; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 264; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 1656; + 1680; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 1648; + AOT_Thread_double_truncate_round_supported_offset = 1656; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -11246,14 +11496,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 688; + AOT_Thread_double_abs_address_offset = 696; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 680; + AOT_Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 1600; + AOT_Thread_execution_state_offset = 1608; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -11265,22 +11515,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 712; + AOT_Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 704; + AOT_Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 696; + AOT_Thread_float_not_address_offset = 704; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 720; + AOT_Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 1576; + AOT_Thread_global_object_pool_offset = 1584; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 1632; + AOT_Thread_exit_through_ffi_offset = 1640; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 1664; + 1688; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -11298,7 +11548,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -11323,17 +11573,17 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 664; + AOT_Thread_predefined_symbols_address_offset = 672; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 1584; + 1592; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 1592; + AOT_Thread_saved_shadow_call_stack_offset = 1600; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 1608; + AOT_Thread_safepoint_state_offset = 1616; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 632; + AOT_Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word @@ -11368,9 +11618,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 1616; + 1624; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 1624; + AOT_Thread_callback_stack_return_offset = 1632; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 1664; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 16; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 24; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 32; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -11444,9 +11708,9 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, - 1496, 1504, 1512, 1520, -1, -1, -1, -1, 1528, 1536, -1, - -1, 1544, 1552, 1560, -1, -1, -1, -1, -1, -1}; + 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, + 1504, 1512, 1520, 1528, -1, -1, -1, -1, 1536, 1544, -1, + -1, 1552, 1560, 1568, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16; @@ -11800,11 +12064,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 8; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 728; + AOT_Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 1496; + AOT_Thread_active_exception_offset = 1504; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 1504; + AOT_Thread_active_stacktrace_offset = 1512; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -11830,24 +12094,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 1576; + 1584; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 264; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 1592; + 1616; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 1584; + AOT_Thread_double_truncate_round_supported_offset = 1592; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -11857,14 +12121,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 688; + AOT_Thread_double_abs_address_offset = 696; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 680; + AOT_Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 1536; + AOT_Thread_execution_state_offset = 1544; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -11876,22 +12140,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 712; + AOT_Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 704; + AOT_Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 696; + AOT_Thread_float_not_address_offset = 704; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 720; + AOT_Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 1512; + AOT_Thread_global_object_pool_offset = 1520; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 1568; + AOT_Thread_exit_through_ffi_offset = 1576; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 1600; + 1624; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -11909,7 +12173,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -11934,17 +12198,17 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 664; + AOT_Thread_predefined_symbols_address_offset = 672; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 1520; + 1528; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 1528; + AOT_Thread_saved_shadow_call_stack_offset = 1536; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 1544; + AOT_Thread_safepoint_state_offset = 1552; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 632; + AOT_Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word @@ -11979,9 +12243,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 1552; + 1560; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 1560; + AOT_Thread_callback_stack_return_offset = 1568; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 1600; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 16; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 24; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 32; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -12055,8 +12333,8 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, -1, -1, 1440, 1448, - 1456, 1464, 1472, -1, 1480, 1488, -1, -1}; + 1416, 1424, 1432, 1440, -1, -1, 1448, 1456, + 1464, 1472, 1480, -1, 1488, 1496, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16; @@ -12410,11 +12688,11 @@ static constexpr dart::compiler::target::word AOT_String_length_offset = 8; static constexpr dart::compiler::target::word AOT_SubtypeTestCache_cache_offset = 8; static constexpr dart::compiler::target::word - AOT_Thread_AllocateArray_entry_point_offset = 728; + AOT_Thread_AllocateArray_entry_point_offset = 736; static constexpr dart::compiler::target::word - AOT_Thread_active_exception_offset = 1560; + AOT_Thread_active_exception_offset = 1568; static constexpr dart::compiler::target::word - AOT_Thread_active_stacktrace_offset = 1568; + AOT_Thread_active_stacktrace_offset = 1576; static constexpr dart::compiler::target::word AOT_Thread_array_write_barrier_code_offset = 232; static constexpr dart::compiler::target::word @@ -12440,24 +12718,24 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_allocate_object_slow_stub_offset = 384; static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset = - 1640; + 1648; static constexpr dart::compiler::target::word - AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656; + AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664; static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset = 216; static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208; static constexpr dart::compiler::target::word - AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640; + AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_entry_point_offset = 528; static constexpr dart::compiler::target::word AOT_Thread_call_to_runtime_stub_offset = 264; static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset = - 1656; + 1680; static constexpr dart::compiler::target::word AOT_Thread_dispatch_table_array_offset = 88; static constexpr dart::compiler::target::word - AOT_Thread_double_truncate_round_supported_offset = 1648; + AOT_Thread_double_truncate_round_supported_offset = 1656; static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset = 608; static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset = @@ -12467,14 +12745,14 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_deoptimize_stub_offset = 448; static constexpr dart::compiler::target::word - AOT_Thread_double_abs_address_offset = 688; + AOT_Thread_double_abs_address_offset = 696; static constexpr dart::compiler::target::word - AOT_Thread_double_negate_address_offset = 680; + AOT_Thread_double_negate_address_offset = 688; static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104; static constexpr dart::compiler::target::word AOT_Thread_enter_safepoint_stub_offset = 488; static constexpr dart::compiler::target::word - AOT_Thread_execution_state_offset = 1600; + AOT_Thread_execution_state_offset = 1608; static constexpr dart::compiler::target::word AOT_Thread_exit_safepoint_stub_offset = 496; static constexpr dart::compiler::target::word @@ -12486,22 +12764,22 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_fix_callers_target_code_offset = 240; static constexpr dart::compiler::target::word - AOT_Thread_float_absolute_address_offset = 712; + AOT_Thread_float_absolute_address_offset = 720; static constexpr dart::compiler::target::word - AOT_Thread_float_negate_address_offset = 704; + AOT_Thread_float_negate_address_offset = 712; static constexpr dart::compiler::target::word - AOT_Thread_float_not_address_offset = 696; + AOT_Thread_float_not_address_offset = 704; static constexpr dart::compiler::target::word - AOT_Thread_float_zerow_address_offset = 720; + AOT_Thread_float_zerow_address_offset = 728; static constexpr dart::compiler::target::word - AOT_Thread_global_object_pool_offset = 1576; + AOT_Thread_global_object_pool_offset = 1584; static constexpr dart::compiler::target::word AOT_Thread_invoke_dart_code_stub_offset = 256; static constexpr dart::compiler::target::word - AOT_Thread_exit_through_ffi_offset = 1632; + AOT_Thread_exit_through_ffi_offset = 1640; static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80; static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset = - 1664; + 1688; static constexpr dart::compiler::target::word AOT_Thread_field_table_values_offset = 128; static constexpr dart::compiler::target::word @@ -12519,7 +12797,7 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_switchable_call_miss_stub_offset = 408; static constexpr dart::compiler::target::word - AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648; + AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656; static constexpr dart::compiler::target::word AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280; static constexpr dart::compiler::target::word @@ -12544,17 +12822,17 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Thread_object_null_offset = 200; static constexpr dart::compiler::target::word - AOT_Thread_predefined_symbols_address_offset = 664; + AOT_Thread_predefined_symbols_address_offset = 672; static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = - 1584; + 1592; static constexpr dart::compiler::target::word - AOT_Thread_saved_shadow_call_stack_offset = 1592; + AOT_Thread_saved_shadow_call_stack_offset = 1600; static constexpr dart::compiler::target::word - AOT_Thread_safepoint_state_offset = 1608; + AOT_Thread_safepoint_state_offset = 1616; static constexpr dart::compiler::target::word AOT_Thread_slow_type_test_stub_offset = 472; static constexpr dart::compiler::target::word - AOT_Thread_slow_type_test_entry_point_offset = 632; + AOT_Thread_slow_type_test_entry_point_offset = 640; static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset = 56; static constexpr dart::compiler::target::word @@ -12589,9 +12867,23 @@ static constexpr dart::compiler::target::word AOT_Thread_write_barrier_mask_offset = 64; static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72; static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset = - 1616; + 1624; static constexpr dart::compiler::target::word - AOT_Thread_callback_stack_return_offset = 1624; + AOT_Thread_callback_stack_return_offset = 1632; +static constexpr dart::compiler::target::word + AOT_Thread_jump_to_frame_entry_point_offset = 632; +static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset = + 1664; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_function_offset = 0; +static constexpr dart::compiler::target::word + AOT_TsanUtils_setjmp_buffer_offset = 8; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_pc_offset = 16; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_sp_offset = 24; +static constexpr dart::compiler::target::word + AOT_TsanUtils_exception_fp_offset = 32; static constexpr dart::compiler::target::word AOT_TimelineStream_enabled_offset = 16; static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset = @@ -12665,9 +12957,9 @@ static constexpr dart::compiler::target::word AOT_Code_entry_point_offset[] = { 8, 24, 16, 32}; static constexpr dart::compiler::target::word AOT_Thread_write_barrier_wrappers_thread_offset[] = { - 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, - 1496, 1504, 1512, 1520, -1, -1, -1, -1, 1528, 1536, -1, - -1, 1544, 1552, 1560, -1, -1, -1, -1, -1, -1}; + 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, + 1504, 1512, 1520, 1528, -1, -1, -1, -1, 1536, 1544, -1, + -1, 1552, 1560, 1568, -1, -1, -1, -1, -1, -1}; static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize = 24; static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16; diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h index 0d22eca192f..d0264ebab96 100644 --- a/runtime/vm/compiler/runtime_offsets_list.h +++ b/runtime/vm/compiler/runtime_offsets_list.h @@ -286,6 +286,13 @@ FIELD(Thread, heap_base_offset) \ FIELD(Thread, callback_code_offset) \ FIELD(Thread, callback_stack_return_offset) \ + FIELD(Thread, jump_to_frame_entry_point_offset) \ + FIELD(Thread, tsan_utils_offset) \ + FIELD(TsanUtils, setjmp_function_offset) \ + FIELD(TsanUtils, setjmp_buffer_offset) \ + FIELD(TsanUtils, exception_pc_offset) \ + FIELD(TsanUtils, exception_sp_offset) \ + FIELD(TsanUtils, exception_fp_offset) \ FIELD(TimelineStream, enabled_offset) \ FIELD(TwoByteString, data_offset) \ FIELD(Type, arguments_offset) \ diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc index 07f9c00ff5d..ae87dca14b0 100644 --- a/runtime/vm/compiler/stub_code_compiler_x64.cc +++ b/runtime/vm/compiler/stub_code_compiler_x64.cc @@ -2,6 +2,8 @@ // 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. +#include + #include "vm/compiler/runtime_api.h" #include "vm/globals.h" @@ -58,6 +60,102 @@ void StubCodeCompiler::EnsureIsNewOrRemembered(Assembler* assembler, __ Bind(&done); } +// In TSAN mode the runtime will throw an exception using an intermediary +// longjmp() call to unwind the C frames in a way that TSAN can understand. +// +// This wrapper will setup a [jmp_buf] on the stack and initialize it to be a +// target for a possible longjmp(). In the exceptional case we'll forward +// control of execution to the usual JumpToFrame stub. +// +// In non-TSAN mode this will do nothing and the runtime will call the +// JumpToFrame stub directly. +// +// The callback [fun] may be invoked with a modified [RSP] due to allocating +// a [jmp_buf] allocating structure on the stack (as well as the saved old +// [Thread::tsan_utils_->setjmp_buffer_]). +static void WithExceptionCatchingTrampoline(Assembler* assembler, + std::function fun) { +#if defined(USING_THREAD_SANITIZER) + const Register kTsanUtilsReg = RAX; + + // Reserve space for arguments and align frame before entering C++ world. + const intptr_t kJumpBufferSize = sizeof(jmp_buf); + // Save & Restore the volatile CPU registers across the setjmp() call. + const RegisterSet volatile_registers( + CallingConventions::kVolatileCpuRegisters & ~(1 << RAX), + /*fpu_registers=*/0); + + const Register kSavedRspReg = R12; + COMPILE_ASSERT(IsCalleeSavedRegister(kSavedRspReg)); + // We rely on THR being preserved across the setjmp() call. + COMPILE_ASSERT(IsCalleeSavedRegister(THR)); + + Label do_native_call; + + // Save old jmp_buf. + __ movq(kTsanUtilsReg, Address(THR, target::Thread::tsan_utils_offset())); + __ pushq(Address(kTsanUtilsReg, target::TsanUtils::setjmp_buffer_offset())); + + // Allocate jmp_buf struct on stack & remember pointer to it on the + // [Thread::tsan_utils_->setjmp_buffer] (which exceptions.cc will longjmp() + // to) + __ AddImmediate(RSP, Immediate(-kJumpBufferSize)); + __ movq(Address(kTsanUtilsReg, target::TsanUtils::setjmp_buffer_offset()), + RSP); + + // Call setjmp() with a pointer to the allocated jmp_buf struct. + __ MoveRegister(CallingConventions::kArg1Reg, RSP); + __ PushRegisters(volatile_registers); + if (OS::ActivationFrameAlignment() > 1) { + __ MoveRegister(kSavedRspReg, RSP); + __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1))); + } + __ movq(kTsanUtilsReg, Address(THR, target::Thread::tsan_utils_offset())); + __ CallCFunction( + Address(kTsanUtilsReg, target::TsanUtils::setjmp_function_offset()), + /*restore_rsp=*/true); + if (OS::ActivationFrameAlignment() > 1) { + __ MoveRegister(RSP, kSavedRspReg); + } + __ PopRegisters(volatile_registers); + + // We are the target of a longjmp() iff setjmp() returns non-0. + __ CompareImmediate(RAX, 0); + __ BranchIf(EQUAL, &do_native_call); + + // We are the target of a longjmp: Cleanup the stack and tail-call the + // JumpToFrame stub which will take care of unwinding the stack and hand + // execution to the catch entry. + __ AddImmediate(RSP, Immediate(kJumpBufferSize)); + __ movq(kTsanUtilsReg, Address(THR, target::Thread::tsan_utils_offset())); + __ popq(Address(kTsanUtilsReg, target::TsanUtils::setjmp_buffer_offset())); + + __ movq(CallingConventions::kArg1Reg, + Address(kTsanUtilsReg, target::TsanUtils::exception_pc_offset())); + __ movq(CallingConventions::kArg2Reg, + Address(kTsanUtilsReg, target::TsanUtils::exception_sp_offset())); + __ movq(CallingConventions::kArg3Reg, + Address(kTsanUtilsReg, target::TsanUtils::exception_fp_offset())); + __ MoveRegister(CallingConventions::kArg4Reg, THR); + __ jmp(Address(THR, target::Thread::jump_to_frame_entry_point_offset())); + + // We leave the created [jump_buf] structure on the stack as well as the + // pushed old [Thread::tsan_utils_->setjmp_buffer_]. + __ Bind(&do_native_call); + __ MoveRegister(kSavedRspReg, RSP); +#endif // defined(USING_THREAD_SANITIZER) + + fun(); + +#if defined(USING_THREAD_SANITIZER) + __ MoveRegister(RSP, kSavedRspReg); + __ AddImmediate(RSP, Immediate(kJumpBufferSize)); + const Register kTsanUtilsReg2 = kSavedRspReg; + __ movq(kTsanUtilsReg2, Address(THR, target::Thread::tsan_utils_offset())); + __ popq(Address(kTsanUtilsReg2, target::TsanUtils::setjmp_buffer_offset())); +#endif // defined(USING_THREAD_SANITIZER) +} + // Input parameters: // RSP : points to return address. // RSP + 8 : address of last argument in argument array. @@ -99,51 +197,54 @@ void StubCodeCompiler::GenerateCallToRuntimeStub(Assembler* assembler) { // Mark that the thread is executing VM code. __ movq(Assembler::VMTagAddress(), RBX); - // Reserve space for arguments and align frame before entering C++ world. - __ subq(RSP, Immediate(target::NativeArguments::StructSize())); - if (OS::ActivationFrameAlignment() > 1) { - __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1))); - } + WithExceptionCatchingTrampoline(assembler, [&]() { + // Reserve space for arguments and align frame before entering C++ world. + __ subq(RSP, Immediate(target::NativeArguments::StructSize())); + if (OS::ActivationFrameAlignment() > 1) { + __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1))); + } - // Pass target::NativeArguments structure by value and call runtime. - __ movq(Address(RSP, thread_offset), THR); // Set thread in NativeArgs. - // There are no runtime calls to closures, so we do not need to set the tag - // bits kClosureFunctionBit and kInstanceFunctionBit in argc_tag_. - __ movq(Address(RSP, argc_tag_offset), - R10); // Set argc in target::NativeArguments. - // Compute argv. - __ leaq(RAX, - Address(RBP, R10, TIMES_8, - target::frame_layout.param_end_from_fp * target::kWordSize)); - __ movq(Address(RSP, argv_offset), - RAX); // Set argv in target::NativeArguments. - __ addq(RAX, - Immediate(1 * target::kWordSize)); // Retval is next to 1st argument. - __ movq(Address(RSP, retval_offset), - RAX); // Set retval in target::NativeArguments. + // Pass target::NativeArguments structure by value and call runtime. + __ movq(Address(RSP, thread_offset), THR); // Set thread in NativeArgs. + // There are no runtime calls to closures, so we do not need to set the tag + // bits kClosureFunctionBit and kInstanceFunctionBit in argc_tag_. + __ movq(Address(RSP, argc_tag_offset), + R10); // Set argc in target::NativeArguments. + // Compute argv. + __ leaq(RAX, Address(RBP, R10, TIMES_8, + target::frame_layout.param_end_from_fp * + target::kWordSize)); + __ movq(Address(RSP, argv_offset), + RAX); // Set argv in target::NativeArguments. + __ addq( + RAX, + Immediate(1 * target::kWordSize)); // Retval is next to 1st argument. + __ movq(Address(RSP, retval_offset), + RAX); // Set retval in target::NativeArguments. #if defined(DART_TARGET_OS_WINDOWS) - ASSERT(target::NativeArguments::StructSize() > - CallingConventions::kRegisterTransferLimit); - __ movq(CallingConventions::kArg1Reg, RSP); + ASSERT(target::NativeArguments::StructSize() > + CallingConventions::kRegisterTransferLimit); + __ movq(CallingConventions::kArg1Reg, RSP); #endif - __ CallCFunction(RBX); + __ CallCFunction(RBX); - // Mark that the thread is executing Dart code. - __ movq(Assembler::VMTagAddress(), Immediate(VMTag::kDartTagId)); + // Mark that the thread is executing Dart code. + __ movq(Assembler::VMTagAddress(), Immediate(VMTag::kDartTagId)); - // Mark that the thread has not exited generated Dart code. - __ movq(Address(THR, target::Thread::exit_through_ffi_offset()), - Immediate(0)); + // Mark that the thread has not exited generated Dart code. + __ movq(Address(THR, target::Thread::exit_through_ffi_offset()), + Immediate(0)); - // Reset exit frame information in Isolate's mutator thread structure. - __ movq(Address(THR, target::Thread::top_exit_frame_info_offset()), - Immediate(0)); + // Reset exit frame information in Isolate's mutator thread structure. + __ movq(Address(THR, target::Thread::top_exit_frame_info_offset()), + Immediate(0)); - // Restore the global object pool after returning from runtime (old space is - // moving, so the GOP could have been relocated). - if (FLAG_precompiled_mode) { - __ movq(PP, Address(THR, target::Thread::global_object_pool_offset())); - } + // Restore the global object pool after returning from runtime (old space is + // moving, so the GOP could have been relocated). + if (FLAG_precompiled_mode) { + __ movq(PP, Address(THR, target::Thread::global_object_pool_offset())); + } + }); __ LeaveStubFrame(); @@ -565,7 +666,7 @@ void StubCodeCompiler::GenerateRangeError(Assembler* assembler, // Input parameters: // RSP : points to return address. // RSP + 8 : address of return value. -// RAX : address of first argument in argument array. +// R13 : address of first argument in argument array. // RBX : address of the native function to call. // R10 : argc_tag including number of arguments and function kind. static void GenerateCallNativeWithWrapperStub(Assembler* assembler, @@ -605,49 +706,51 @@ static void GenerateCallNativeWithWrapperStub(Assembler* assembler, // Mark that the thread is executing native code. __ movq(Assembler::VMTagAddress(), RBX); - // Reserve space for the native arguments structure passed on the stack (the - // outgoing pointer parameter to the native arguments structure is passed in - // RDI) and align frame before entering the C++ world. - __ subq(RSP, Immediate(target::NativeArguments::StructSize())); - if (OS::ActivationFrameAlignment() > 1) { - __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1))); - } + WithExceptionCatchingTrampoline(assembler, [&]() { + // Reserve space for the native arguments structure passed on the stack (the + // outgoing pointer parameter to the native arguments structure is passed in + // RDI) and align frame before entering the C++ world. + __ subq(RSP, Immediate(target::NativeArguments::StructSize())); + if (OS::ActivationFrameAlignment() > 1) { + __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1))); + } - // Pass target::NativeArguments structure by value and call native function. - __ movq(Address(RSP, thread_offset), THR); // Set thread in NativeArgs. - __ movq(Address(RSP, argc_tag_offset), - R10); // Set argc in target::NativeArguments. - __ movq(Address(RSP, argv_offset), - RAX); // Set argv in target::NativeArguments. - __ leaq(RAX, - Address(RBP, 2 * target::kWordSize)); // Compute return value addr. - __ movq(Address(RSP, retval_offset), - RAX); // Set retval in target::NativeArguments. + // Pass target::NativeArguments structure by value and call native function. + __ movq(Address(RSP, thread_offset), THR); // Set thread in NativeArgs. + __ movq(Address(RSP, argc_tag_offset), + R10); // Set argc in target::NativeArguments. + __ movq(Address(RSP, argv_offset), + R13); // Set argv in target::NativeArguments. + __ leaq(RAX, + Address(RBP, 2 * target::kWordSize)); // Compute return value addr. + __ movq(Address(RSP, retval_offset), + RAX); // Set retval in target::NativeArguments. - // Pass the pointer to the target::NativeArguments. - __ movq(CallingConventions::kArg1Reg, RSP); - // Pass pointer to function entrypoint. - __ movq(CallingConventions::kArg2Reg, RBX); + // Pass the pointer to the target::NativeArguments. + __ movq(CallingConventions::kArg1Reg, RSP); + // Pass pointer to function entrypoint. + __ movq(CallingConventions::kArg2Reg, RBX); - __ movq(RAX, wrapper_address); - __ CallCFunction(RAX); + __ movq(RAX, wrapper_address); + __ CallCFunction(RAX); - // Mark that the thread is executing Dart code. - __ movq(Assembler::VMTagAddress(), Immediate(VMTag::kDartTagId)); + // Mark that the thread is executing Dart code. + __ movq(Assembler::VMTagAddress(), Immediate(VMTag::kDartTagId)); - // Mark that the thread has not exited generated Dart code. - __ movq(Address(THR, target::Thread::exit_through_ffi_offset()), - Immediate(0)); + // Mark that the thread has not exited generated Dart code. + __ movq(Address(THR, target::Thread::exit_through_ffi_offset()), + Immediate(0)); - // Reset exit frame information in Isolate's mutator thread structure. - __ movq(Address(THR, target::Thread::top_exit_frame_info_offset()), - Immediate(0)); + // Reset exit frame information in Isolate's mutator thread structure. + __ movq(Address(THR, target::Thread::top_exit_frame_info_offset()), + Immediate(0)); - // Restore the global object pool after returning from runtime (old space is - // moving, so the GOP could have been relocated). - if (FLAG_precompiled_mode) { - __ movq(PP, Address(THR, target::Thread::global_object_pool_offset())); - } + // Restore the global object pool after returning from runtime (old space is + // moving, so the GOP could have been relocated). + if (FLAG_precompiled_mode) { + __ movq(PP, Address(THR, target::Thread::global_object_pool_offset())); + } + }); __ LeaveStubFrame(); __ ret(); diff --git a/runtime/vm/exceptions.cc b/runtime/vm/exceptions.cc index 95787d7495a..84a811497da 100644 --- a/runtime/vm/exceptions.cc +++ b/runtime/vm/exceptions.cc @@ -2,9 +2,12 @@ // 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. +#include + #include "vm/exceptions.h" #include "platform/address_sanitizer.h" +#include "platform/thread_sanitizer.h" #include "lib/stacktrace.h" @@ -612,13 +615,6 @@ void Exceptions::JumpToFrame(Thread* thread, // in the previous frames. StackResource::Unwind(thread); - // Call a stub to set up the exception object in kExceptionObjectReg, - // to set up the stacktrace object in kStackTraceObjectReg, and to - // continue execution at the given pc in the given frame. - typedef void (*ExcpHandler)(uword, uword, uword, Thread*); - ExcpHandler func = - reinterpret_cast(StubCode::JumpToFrame().EntryPoint()); - // Unpoison the stack before we tear it down in the generated stub code. uword current_sp = OSThread::GetCurrentStackPointer() - 1024; ASAN_UNPOISON(reinterpret_cast(current_sp), @@ -635,7 +631,25 @@ void Exceptions::JumpToFrame(Thread* thread, // The shadow call stack register will be restored by the JumpToFrame stub. #endif +#if defined(USING_THREAD_SANITIZER) + if (thread->exit_through_ffi() == Thread::kExitThroughRuntimeCall) { + auto tsan_utils = thread->tsan_utils(); + tsan_utils->exception_pc = program_counter; + tsan_utils->exception_sp = stack_pointer; + tsan_utils->exception_fp = frame_pointer; + longjmp(*(tsan_utils->setjmp_buffer), 1); + } +#endif // defined(USING_THREAD_SANITIZER) + + // Call a stub to set up the exception object in kExceptionObjectReg, + // to set up the stacktrace object in kStackTraceObjectReg, and to + // continue execution at the given pc in the given frame. + typedef void (*ExcpHandler)(uword, uword, uword, Thread*); + ExcpHandler func = + reinterpret_cast(StubCode::JumpToFrame().EntryPoint()); + func(program_counter, stack_pointer, frame_pointer, thread); + #endif UNREACHABLE(); } diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc index 78feea8958e..5e838e6582a 100644 --- a/runtime/vm/thread.cc +++ b/runtime/vm/thread.cc @@ -48,6 +48,8 @@ Thread::~Thread() { delete api_reusable_scope_; api_reusable_scope_ = NULL; } + + DO_IF_TSAN(delete tsan_utils_); } #if defined(DEBUG) @@ -86,6 +88,7 @@ Thread::Thread(bool is_vm_isolate) api_top_scope_(NULL), double_truncate_round_supported_( TargetCPUFeatures::double_truncate_round_supported() ? 1 : 0), + tsan_utils_(DO_IF_TSAN(new TsanUtils()) DO_IF_NOT_TSAN(nullptr)), task_kind_(kUnknownTask), dart_stream_(NULL), thread_lock_(), diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h index 1eb322200d1..66faed491be 100644 --- a/runtime/vm/thread.h +++ b/runtime/vm/thread.h @@ -9,6 +9,8 @@ #error "Should not include runtime" #endif +#include + #include "include/dart_api.h" #include "platform/assert.h" #include "platform/atomic.h" @@ -198,6 +200,8 @@ class Thread; V(uword, deoptimize_entry_, StubCode::Deoptimize().EntryPoint(), 0) \ V(uword, call_native_through_safepoint_entry_point_, \ StubCode::CallNativeThroughSafepoint().EntryPoint(), 0) \ + V(uword, jump_to_frame_entry_point_, StubCode::JumpToFrame().EntryPoint(), \ + 0) \ V(uword, slow_type_test_entry_point_, StubCode::SlowTypeTest().EntryPoint(), \ 0) @@ -257,6 +261,35 @@ enum SafepointLevel { kNumLevels, }; +// Accessed from generated code. +struct TsanUtils { + // Used to allow unwinding runtime C frames using longjmp() when throwing + // exceptions. This allows triggering the normal TSAN shadow stack unwinding + // implementation. + // -> See https://dartbug.com/47472#issuecomment-948235479 for details. + void* setjmp_function = reinterpret_cast(&setjmp); + jmp_buf* setjmp_buffer = nullptr; + uword exception_pc = 0; + uword exception_sp = 0; + uword exception_fp = 0; + + static intptr_t setjmp_function_offset() { + return OFFSET_OF(TsanUtils, setjmp_function); + } + static intptr_t setjmp_buffer_offset() { + return OFFSET_OF(TsanUtils, setjmp_buffer); + } + static intptr_t exception_pc_offset() { + return OFFSET_OF(TsanUtils, exception_pc); + } + static intptr_t exception_sp_offset() { + return OFFSET_OF(TsanUtils, exception_sp); + } + static intptr_t exception_fp_offset() { + return OFFSET_OF(TsanUtils, exception_fp); + } +}; + // A VM thread; may be executing Dart code or performing helper tasks like // garbage collection or compilation. The Thread structure associated with // a thread is allocated by EnsureInit before entering an isolate, and destroyed @@ -441,6 +474,13 @@ class Thread : public ThreadState { return OFFSET_OF(Thread, double_truncate_round_supported_); } + static intptr_t tsan_utils_offset() { return OFFSET_OF(Thread, tsan_utils_); } + +#if defined(USING_THREAD_SANITIZER) + uword exit_through_ffi() const { return exit_through_ffi_; } + TsanUtils* tsan_utils() const { return tsan_utils_; } +#endif // defined(USING_THREAD_SANITIZER) + // The isolate that this thread is operating on, or nullptr if none. Isolate* isolate() const { return isolate_; } static intptr_t isolate_offset() { return OFFSET_OF(Thread, isolate_); } @@ -1099,6 +1139,8 @@ class Thread : public ThreadState { ApiLocalScope* api_top_scope_; uint8_t double_truncate_round_supported_; + TsanUtils* tsan_utils_ = nullptr; + // ---- End accessed from generated code. ---- // The layout of Thread object up to this point should not depend