X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmetadata-internals.h;h=24cde472b2665a8e0d0a401e2910c53c7000362f;hb=e27b73e000d731907d1350e79ff81d6254a1b38a;hp=96f6a5da7c90f3c924b02fe338f3a3eb4f728f95;hpb=c6f75c367aba6c14fb86861853ca6009978c0f9b;p=mono.git diff --git a/mono/metadata/metadata-internals.h b/mono/metadata/metadata-internals.h index 96f6a5da7c9..24cde472b26 100644 --- a/mono/metadata/metadata-internals.h +++ b/mono/metadata/metadata-internals.h @@ -1,3 +1,6 @@ +/** + * \file + */ #ifndef __MONO_METADATA_INTERNALS_H__ #define __MONO_METADATA_INTERNALS_H__ @@ -48,6 +51,11 @@ struct _MonoType { #define MONO_PROCESSOR_ARCHITECTURE_AMD64 4 #define MONO_PROCESSOR_ARCHITECTURE_ARM 5 +#if !defined(DISABLE_JIT) || defined(ENABLE_INTERPRETER) +/* Some VES is available at runtime */ +#define ENABLE_ILGEN +#endif + struct _MonoAssemblyName { const char *name; const char *culture; @@ -175,10 +183,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; @@ -210,6 +220,9 @@ struct _MonoImage { /* Whenever this image contains metadata only without PE data */ guint8 metadata_only : 1; + /* Whether this image belongs to load-from context */ + guint8 load_from_context: 1; + guint8 checked_module_cctor : 1; guint8 has_module_cctor : 1; @@ -246,6 +259,10 @@ struct _MonoImage { const char *tables_base; + /* For PPDB files */ + guint64 referenced_tables; + int *referenced_table_rows; + /**/ MonoTableInfo tables [MONO_TABLE_NUM]; @@ -258,19 +275,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. */ @@ -291,7 +310,7 @@ struct _MonoImage { MonoConcurrentHashTable *field_cache; /*protected by the image lock*/ /* indexed by typespec tokens. */ - GHashTable *typespec_cache; /* protected by the image lock */ + MonoConcurrentHashTable *typespec_cache; /* protected by the image lock */ /* indexed by token */ GHashTable *memberref_signatures; GHashTable *helper_signatures; @@ -416,7 +435,8 @@ typedef struct { MonoImage **images; // Generic-specific caches - GHashTable *gclass_cache, *ginst_cache, *gmethod_cache, *gsignature_cache; + GHashTable *ginst_cache, *gmethod_cache, *gsignature_cache; + MonoConcurrentHashTable *gclass_cache; MonoWrapperCaches wrapper_caches; @@ -483,7 +503,6 @@ struct _MonoDynamicImage { GHashTable *typespec; GHashTable *typeref; GHashTable *handleref; - MonoGHashTable *handleref_managed; MonoGHashTable *tokens; GHashTable *blob_cache; GHashTable *standalonesig_cache; @@ -495,7 +514,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. */ @@ -635,6 +653,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); @@ -766,6 +790,9 @@ MonoGenericInst * mono_metadata_get_generic_inst (int type_argc, MonoType **type_argv); +MonoGenericInst * +mono_metadata_get_canonical_generic_inst (MonoGenericInst *candidate); + MonoGenericClass * mono_metadata_lookup_generic_class (MonoClass *gclass, MonoGenericInst *inst, @@ -802,6 +829,10 @@ mono_assembly_name_parse_full (const char *name, gboolean *is_version_defined, gboolean *is_token_defined); +gboolean +mono_assembly_fill_assembly_name_full (MonoImage *image, MonoAssemblyName *aname, gboolean copyBlobs); + + MONO_API guint32 mono_metadata_get_generic_param_row (MonoImage *image, guint32 token, guint32 *owner); void mono_unload_interface_ids (MonoBitSet *bitset); @@ -908,5 +939,20 @@ mono_image_set_description (MonoImageSet *); MonoImageSet * mono_find_image_set_owner (void *ptr); +MONO_API void +mono_loader_register_module (const char *name, MonoDl *module); + +gboolean +mono_assembly_is_problematic_version (const char *name, guint16 major, guint16 minor, guint16 build, guint16 revision); + +void +mono_ginst_get_desc (GString *str, MonoGenericInst *ginst); + +void +mono_loader_set_strict_strong_names (gboolean enabled); + +gboolean +mono_loader_get_strict_strong_names (void); + #endif /* __MONO_METADATA_INTERNALS_H__ */