gpointer user_data;
};
-GSList *image_unload_hooks;
+static GSList *image_unload_hooks;
void
mono_install_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data)
{
MonoCLIImageInfo *iinfo = image->image_info;
MonoSectionTable *sect;
- gboolean writable;
g_return_val_if_fail (section < iinfo->cli_section_count, FALSE);
sect = &iinfo->cli_section_tables [section];
- writable = sect->st_flags & SECT_FLAGS_MEM_WRITE;
-
if (sect->st_raw_data_ptr + sect->st_raw_data_size > image->raw_data_len)
return FALSE;
#ifdef HOST_WIN32
{
const char *heap_tables = image->heap_tables.data;
const guint32 *rows;
- guint64 valid_mask, sorted_mask;
+ guint64 valid_mask;
int valid = 0, table;
int heap_sizes;
image->idx_blob_wide = ((heap_sizes & 0x04) == 4);
valid_mask = read64 (heap_tables + 8);
- sorted_mask = read64 (heap_tables + 16);
rows = (const guint32 *) (heap_tables + 24);
for (table = 0; table < 64; table++){
} else {
image->tables [table].rows = read32 (rows);
}
- /*if ((sorted_mask & ((guint64) 1 << table)) == 0){
- g_print ("table %s (0x%02x) is sorted\n", mono_meta_table_name (table), table);
- }*/
rows++;
valid++;
}
mono_image_load_cli_data (MonoImage *image)
{
MonoCLIImageInfo *iinfo;
- MonoDotNetHeader *header;
iinfo = image->image_info;
- header = &iinfo->cli_header;
/* Load the CLI header */
if (!load_cli_header (image, iinfo))
}
free_hash (image->native_wrapper_cache);
+ free_hash (image->native_wrapper_aot_cache);
+ free_hash (image->native_wrapper_check_cache);
+ free_hash (image->native_wrapper_aot_check_cache);
+ free_hash (image->native_func_wrapper_cache);
free_hash (image->managed_wrapper_cache);
free_hash (image->delegate_begin_invoke_cache);
free_hash (image->delegate_end_invoke_cache);
free_hash (image->thunk_invoke_cache);
free_hash (image->var_cache_slow);
free_hash (image->mvar_cache_slow);
+ free_hash (image->var_cache_constrained);
+ free_hash (image->mvar_cache_constrained);
free_hash (image->wrapper_param_names);
- free_hash (image->native_wrapper_aot_cache);
free_hash (image->pinvoke_scopes);
free_hash (image->pinvoke_scope_filenames);
- free_hash (image->gsharedvt_types);
+ for (i = 0; i < image->gshared_types_len; ++i)
+ free_hash (image->gshared_types [i]);
+ g_free (image->gshared_types);
/* The ownership of signatures is not well defined */
g_hash_table_destroy (image->memberref_signatures);