From 228c52ed4a8f8ea9e70bddb3ce8d29227edeaa77 Mon Sep 17 00:00:00 2001 From: Martin Kustermann Date: Wed, 8 Dec 2021 20:41:18 +0000 Subject: [PATCH] Reland "[vm] When run under TSAN use longjmp() to skip over C++ frames before manually unwinding to the catch entry" TSAN instruments C++ code by adding prologue/epilogue code which maintains a shadow stack. Using setjmp()/longjmp() is intercepted by TSAN and correspondingly unwinds the shadow stack. When Dart VM throws exceptions we call the JumpToFrame stub from C++ which will directly reset the stack to the exception handler catch entry. This leaves the TSAN shadow stack unchanged. This means whenever an exception is thrown we leak frames in TSAN's shadow stack. Due to using a fixed-size shadow stack, it will cause a buffer-overflow in TSAN when too many such frame leaks happen. This can cause arbitrary memory to be overriden, leading to awkward crashes. This is especially an issue on the "iso-stres" builder because it launches - in the same process - *many* small tests, more easily hitting that limit. This CL will workaround the TSAN issue by making runtime call save it's state via setjmp() and make exception throughing process go via longjmp() (which TSAN will intercept) before actually calling the JumpToFrame stub. => This will ensure the TSAN shadow stack is correctly maintained. The [jmp_buf]'s encoding of register state is non-trivial (e.g. it uses XOR'ing of the actual saved state under certain glibc versions). So we store any state we need to pass to the target of the `longjmp()` on the [Thread] instead of overriding the [jmp_buf]s register state with the arguments. Issue https://github.com/dart-lang/sdk/issues/47472#issuecomment-948235479 TEST=vm/dart{,_2}/regress47472_test.dart Change-Id: Ifbf6580aa15bcce54d0584cdc3cd18cc19be0a9c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222300 Reviewed-by: Ryan Macnak Commit-Queue: Martin Kustermann --- runtime/platform/thread_sanitizer.h | 12 + runtime/tests/vm/dart/regress47472_test.dart | 11 + .../tests/vm/dart_2/regress47472_test.dart | 11 + runtime/vm/compiler/backend/il_x64.cc | 5 +- runtime/vm/compiler/runtime_api.cc | 2 + runtime/vm/compiler/runtime_api.h | 13 + .../vm/compiler/runtime_offsets_extracted.h | 1524 ++++++++++------- runtime/vm/compiler/runtime_offsets_list.h | 7 + runtime/vm/compiler/stub_code_compiler_x64.cc | 253 ++- runtime/vm/exceptions.cc | 28 +- runtime/vm/thread.cc | 3 + runtime/vm/thread.h | 42 + 12 files changed, 1211 insertions(+), 700 deletions(-) create mode 100644 runtime/tests/vm/dart/regress47472_test.dart create mode 100644 runtime/tests/vm/dart_2/regress47472_test.dart 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