X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmetadata-internals.h;h=a529a3f3642e559dd4a16463e6ce6e930018c871;hb=4df88aea4b841eed9614455a8b71d4a446a44cc6;hp=ba5f9d72e1aa81d635a3e6e5d1d1979da9985620;hpb=68be3904cf770be9f98a6ce0e8d71899cb94f189;p=mono.git diff --git a/mono/metadata/metadata-internals.h b/mono/metadata/metadata-internals.h index ba5f9d72e1a..a529a3f3642 100644 --- a/mono/metadata/metadata-internals.h +++ b/mono/metadata/metadata-internals.h @@ -175,10 +175,12 @@ typedef struct { struct _MonoImage { /* - * The number of assemblies which reference this MonoImage though their 'image' - * field plus the number of images which reference this MonoImage through their - * 'modules' field, plus the number of threads holding temporary references to - * this image between calls of mono_image_open () and mono_image_close (). + * This count is incremented during these situations: + * - An assembly references this MonoImage though its 'image' field + * - This MonoImage is present in the 'files' field of an image + * - This MonoImage is present in the 'modules' field of an image + * - A thread is holding a temporary reference to this MonoImage between + * calls to mono_image_open and mono_image_close () */ int ref_count; @@ -258,19 +260,21 @@ struct _MonoImage { MonoAssembly **references; int nreferences; - /* Code files in the assembly. */ + /* Code files in the assembly. The main assembly has a "file" table and also a "module" + * table, where the module table is a subset of the file table. We track both lists, + * and because we can lazy-load them at different times we reference-increment both. + */ MonoImage **modules; guint32 module_count; gboolean *modules_loaded; - /* - * Files in the assembly. Items are either NULL or alias items in modules, so this does not impact ref_count. - * Protected by the image lock. - */ MonoImage **files; + guint32 file_count; gpointer aot_module; + guint8 aotid[16]; + /* * The Assembly this image was loaded from. */ @@ -334,6 +338,8 @@ struct _MonoImage { GHashTable *ldflda_wrapper_cache; GHashTable *stfld_wrapper_cache; GHashTable *isinst_cache; + + GHashTable *icall_wrapper_cache; GHashTable *castclass_cache; GHashTable *proxy_isinst_cache; GHashTable *rgctx_template_hash; /* LOCKING: templates lock */