+ if (mono_thread_info_new_interrupt_enabled ()) {
+ MonoThreadInfo *info;
+ MonoJitInfo *ji;
+
+ info = mono_thread_info_safe_suspend_sync ((MonoNativeThreadId)(gpointer)(gsize)thread->tid, FALSE);
+ g_assert (info);
+
+ ji = mono_jit_info_table_find (info->suspend_state.unwind_data [MONO_UNWIND_DATA_DOMAIN], MONO_CONTEXT_GET_IP (&info->suspend_state.ctx));
+
+ thread_interrupt (tls, info, NULL, ji);
+
+ mono_thread_info_resume (mono_thread_info_get_tid (info));
+ } else {
+ mono_thread_kill (thread, mono_thread_get_abort_signal ());
+ }