X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmetadata-internals.h;h=a68897538aec5f910d666a786c38532051f87d5d;hb=62b96ad507e6ba07bde09991a30e5447255e44ba;hp=6b8fdcb44ca396a788f220bac28c4795f2bd4752;hpb=d1587ba5e6d9018407907fd9ae78612d5ed761e4;p=mono.git diff --git a/mono/metadata/metadata-internals.h b/mono/metadata/metadata-internals.h index 6b8fdcb44ca..a68897538ae 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 */ @@ -493,7 +499,6 @@ struct _MonoDynamicImage { GHashTable *method_aux_hash; GHashTable *vararg_aux_hash; MonoGHashTable *generic_def_objects; - MonoGHashTable *methodspec; /* * Maps final token values to the object they describe. */ @@ -633,6 +638,12 @@ mono_image_alloc0 (MonoImage *image, guint size); char* mono_image_strdup (MonoImage *image, const char *s); +char* +mono_image_strdup_vprintf (MonoImage *image, const char *format, va_list args); + +char* +mono_image_strdup_printf (MonoImage *image, const char *format, ...) MONO_ATTR_FORMAT_PRINTF(2,3);; + GList* g_list_prepend_image (MonoImage *image, GList *list, gpointer data); @@ -735,6 +746,10 @@ mono_metadata_parse_mh_full (MonoImage *image, const char *ptr, MonoError *error); +MonoMethodSignature *mono_metadata_parse_signature_checked (MonoImage *image, + uint32_t token, + MonoError *error); + gboolean mono_method_get_header_summary (MonoMethod *method, MonoMethodHeaderSummary *summary);