}
}
-static void
-collect_threads (gpointer key, gpointer value, gpointer user_data)
-{
- MonoInternalThread *thread = (MonoInternalThread*)value;
- struct wait_data *wait = (struct wait_data*)user_data;
- HANDLE handle;
-
- if (wait->num<MAXIMUM_WAIT_OBJECTS) {
- handle = mono_threads_open_thread_handle (thread->handle, (MonoNativeThreadId)thread->tid);
- if (handle == NULL)
- return;
-
- wait->handles [wait->num] = handle;
- wait->threads [wait->num] = thread;
- wait->num++;
- }
-}
-
static gboolean thread_dump_requested;
static G_GNUC_UNUSED gboolean
}
}
-/* Emit code which loads interface_offsets [klass->interface_id]
- * The array is stored in memory before vtable.
-*/
-static void
-mini_emit_load_intf_reg_vtable (MonoCompile *cfg, int intf_reg, int vtable_reg, MonoClass *klass)
-{
- if (cfg->compile_aot) {
- int ioffset_reg = alloc_preg (cfg);
- int iid_reg = alloc_preg (cfg);
-
- MONO_EMIT_NEW_AOTCONST (cfg, iid_reg, klass, MONO_PATCH_INFO_ADJUSTED_IID);
- MONO_EMIT_NEW_BIALU (cfg, OP_PADD, ioffset_reg, iid_reg, vtable_reg);
- MONO_EMIT_NEW_LOAD_MEMBASE (cfg, intf_reg, ioffset_reg, 0);
- }
- else {
- MONO_EMIT_NEW_LOAD_MEMBASE (cfg, intf_reg, vtable_reg, -((klass->interface_id + 1) * SIZEOF_VOID_P));
- }
-}
-
static void
mini_emit_interface_bitmap_check (MonoCompile *cfg, int intf_bit_reg, int base_reg, int offset, MonoClass *klass)
{