X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmetadata-internals.h;h=96f6a5da7c90f3c924b02fe338f3a3eb4f728f95;hb=c5cdfaec1e0973ced3f97ef589cd0bece56067ad;hp=0a72e72db95319d305da5ed1a473c874057df455;hpb=5a486ac1d79ae8439943183f105e1013d3f0a8bf;p=mono.git diff --git a/mono/metadata/metadata-internals.h b/mono/metadata/metadata-internals.h index 0a72e72db95..96f6a5da7c9 100644 --- a/mono/metadata/metadata-internals.h +++ b/mono/metadata/metadata-internals.h @@ -111,6 +111,7 @@ typedef struct { GHashTable *delegate_end_invoke_cache; GHashTable *runtime_invoke_cache; GHashTable *runtime_invoke_vtype_cache; + GHashTable *runtime_invoke_sig_cache; /* * indexed by SignaturePointerPair @@ -333,6 +334,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 */ @@ -389,6 +392,11 @@ struct _MonoImage { /* The loader used to load this image */ MonoImageLoader *loader; + // Containers for MonoGenericParams associated with this image but not with any specific class or method. Created on demand. + // This could happen, for example, for MonoTypes associated with TypeSpec table entries. + MonoGenericContainer *anonymous_generic_class_container; + MonoGenericContainer *anonymous_generic_method_container; + /* * No other runtime locks must be taken while holding this lock. * It's meant to be used only to mutate and query structures part of this image. @@ -715,19 +723,6 @@ mono_metadata_interfaces_from_typedef_full (MonoImage *image, MonoGenericContext *context, MonoError *error); -MonoArrayType * -mono_metadata_parse_array_full (MonoImage *image, - MonoGenericContainer *container, - const char *ptr, - const char **rptr); - -MONO_API MonoType * -mono_metadata_parse_type_full (MonoImage *image, - MonoGenericContainer *container, - short opt_attrs, - const char *ptr, - const char **rptr); - MONO_API MonoMethodSignature * mono_metadata_parse_method_signature_full (MonoImage *image, MonoGenericContainer *generic_container, @@ -739,7 +734,12 @@ mono_metadata_parse_method_signature_full (MonoImage *image, MONO_API MonoMethodHeader * mono_metadata_parse_mh_full (MonoImage *image, MonoGenericContainer *container, - const char *ptr); + 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); @@ -780,7 +780,7 @@ gboolean mono_metadata_generic_param_equal (MonoGenericParam *p1, MonoGenericParam *p2); void mono_dynamic_stream_reset (MonoDynamicStream* stream); -void mono_assembly_addref (MonoAssembly *assembly); +MONO_API void mono_assembly_addref (MonoAssembly *assembly); void mono_assembly_load_friends (MonoAssembly* ass); gboolean mono_assembly_has_skip_verification (MonoAssembly* ass); @@ -899,6 +899,9 @@ mono_method_get_wrapper_cache (MonoMethod *method); MonoType* mono_metadata_parse_type_checked (MonoImage *m, MonoGenericContainer *container, short opt_attrs, gboolean transient, const char *ptr, const char **rptr, MonoError *error); +MonoGenericContainer * +get_anonymous_container_for_image (MonoImage *image, gboolean is_mvar); + char * mono_image_set_description (MonoImageSet *);