g_hash_table_destroy (hash);
}
+void
+mono_wrapper_caches_free (MonoWrapperCaches *cache)
+{
+ free_hash (cache->delegate_invoke_cache);
+ free_hash (cache->delegate_begin_invoke_cache);
+ free_hash (cache->delegate_end_invoke_cache);
+ free_hash (cache->runtime_invoke_cache);
+ free_hash (cache->runtime_invoke_vtype_cache);
+
+ free_hash (cache->delegate_abstract_invoke_cache);
+
+ free_hash (cache->runtime_invoke_direct_cache);
+ free_hash (cache->managed_wrapper_cache);
+
+ free_hash (cache->native_wrapper_cache);
+ free_hash (cache->native_wrapper_aot_cache);
+ free_hash (cache->native_wrapper_check_cache);
+ free_hash (cache->native_wrapper_aot_check_cache);
+
+ free_hash (cache->native_func_wrapper_aot_cache);
+ free_hash (cache->remoting_invoke_cache);
+ free_hash (cache->synchronized_cache);
+ free_hash (cache->unbox_wrapper_cache);
+ free_hash (cache->cominterop_invoke_cache);
+ free_hash (cache->cominterop_wrapper_cache);
+ free_hash (cache->thunk_invoke_cache);
+}
+
/*
* Returns whether mono_image_close_finish() must be called as well.
* We must unload images in two steps because clearing the domain in
free_hash (image->native_func_wrapper_cache);
free_hash (image->typespec_cache);
- free_hash (image->wrapper_caches.native_wrapper_cache);
- free_hash (image->wrapper_caches.native_wrapper_aot_cache);
- free_hash (image->wrapper_caches.native_wrapper_check_cache);
- free_hash (image->wrapper_caches.native_wrapper_aot_check_cache);
- free_hash (image->wrapper_caches.managed_wrapper_cache);
- free_hash (image->wrapper_caches.delegate_begin_invoke_cache);
- free_hash (image->wrapper_caches.delegate_end_invoke_cache);
- free_hash (image->wrapper_caches.delegate_invoke_cache);
- free_hash (image->wrapper_caches.delegate_abstract_invoke_cache);
- free_hash (image->wrapper_caches.remoting_invoke_cache);
- free_hash (image->wrapper_caches.runtime_invoke_cache);
- free_hash (image->wrapper_caches.runtime_invoke_vtype_cache);
- free_hash (image->wrapper_caches.runtime_invoke_direct_cache);
- free_hash (image->wrapper_caches.synchronized_cache);
- free_hash (image->wrapper_caches.unbox_wrapper_cache);
- free_hash (image->wrapper_caches.cominterop_invoke_cache);
- free_hash (image->wrapper_caches.cominterop_wrapper_cache);
- free_hash (image->wrapper_caches.thunk_invoke_cache);
+ mono_wrapper_caches_free (&image->wrapper_caches);
for (i = 0; i < image->gshared_types_len; ++i)
free_hash (image->gshared_types [i]);
g_hash_table_destroy (set->gmethod_cache);
g_hash_table_destroy (set->gsignature_cache);
- if (set->wrapper_caches.delegate_abstract_invoke_cache)
- g_hash_table_destroy (set->wrapper_caches.delegate_abstract_invoke_cache);
- if (set->wrapper_caches.runtime_invoke_direct_cache)
- g_hash_table_destroy (set->wrapper_caches.runtime_invoke_direct_cache);
- if (set->wrapper_caches.managed_wrapper_cache)
- g_hash_table_destroy (set->wrapper_caches.managed_wrapper_cache);
- if (set->wrapper_caches.native_wrapper_cache)
- g_hash_table_destroy (set->wrapper_caches.native_wrapper_cache);
- if (set->wrapper_caches.native_wrapper_aot_cache)
- g_hash_table_destroy (set->wrapper_caches.native_wrapper_aot_cache);
- if (set->wrapper_caches.native_wrapper_check_cache)
- g_hash_table_destroy (set->wrapper_caches.native_wrapper_check_cache);
- if (set->wrapper_caches.native_wrapper_aot_check_cache)
- g_hash_table_destroy (set->wrapper_caches.native_wrapper_aot_check_cache);
- if (set->wrapper_caches.native_func_wrapper_aot_cache)
- g_hash_table_destroy (set->wrapper_caches.native_func_wrapper_aot_cache);
- if (set->wrapper_caches.remoting_invoke_cache)
- g_hash_table_destroy (set->wrapper_caches.remoting_invoke_cache);
- if (set->wrapper_caches.unbox_wrapper_cache)
- g_hash_table_destroy (set->wrapper_caches.unbox_wrapper_cache);
- if (set->wrapper_caches.cominterop_invoke_cache)
- g_hash_table_destroy (set->wrapper_caches.cominterop_invoke_cache);
- if (set->wrapper_caches.cominterop_wrapper_cache)
- g_hash_table_destroy (set->wrapper_caches.cominterop_wrapper_cache);
- if (set->wrapper_caches.thunk_invoke_cache)
- g_hash_table_destroy (set->wrapper_caches.thunk_invoke_cache);
- if (set->wrapper_caches.runtime_invoke_cache)
- g_hash_table_destroy (set->wrapper_caches.runtime_invoke_cache);
- if (set->wrapper_caches.delegate_invoke_cache)
- g_hash_table_destroy (set->wrapper_caches.delegate_invoke_cache);
- if (set->wrapper_caches.delegate_begin_invoke_cache)
- g_hash_table_destroy (set->wrapper_caches.delegate_begin_invoke_cache);
- if (set->wrapper_caches.delegate_end_invoke_cache)
- g_hash_table_destroy (set->wrapper_caches.delegate_end_invoke_cache);
- if (set->wrapper_caches.synchronized_cache)
- g_hash_table_destroy (set->wrapper_caches.synchronized_cache);
+ mono_wrapper_caches_free (&set->wrapper_caches);
image_sets_lock ();