X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmetadata-internals.h;h=8ca4e5d5ebc781c6dcb434ad2183c903e5ac78a3;hb=28eaf793c49f36dd8ea54bf9d20fd6e4fa455574;hp=b11e3ac77ed98bc072c95c377ddd17c09a425cd0;hpb=8a1a9ac3b51cbaafd5906c2f58b318a944c0ae92;p=mono.git diff --git a/mono/metadata/metadata-internals.h b/mono/metadata/metadata-internals.h index b11e3ac77ed..8ca4e5d5ebc 100644 --- a/mono/metadata/metadata-internals.h +++ b/mono/metadata/metadata-internals.h @@ -10,6 +10,12 @@ #include "mono/utils/mono-compiler.h" #include "mono/utils/mono-dl.h" #include "mono/utils/monobitset.h" +#include "mono/utils/mono-property-hash.h" +#include "mono/utils/mono-value-hash.h" + +#define MONO_SECMAN_FLAG_INIT(x) (x & 0x2) +#define MONO_SECMAN_FLAG_GET_VALUE(x) (x & 0x1) +#define MONO_SECMAN_FLAG_SET_VALUE(x,y) do { x = ((y) ? 0x3 : 0x2); } while (0) struct _MonoAssembly { /* @@ -35,6 +41,7 @@ struct _MonoAssembly { guint32 aptc:2; /* Has the [AllowPartiallyTrustedCallers] attributes */ guint32 fulltrust:2; /* Has FullTrust permission */ guint32 unmanaged:2; /* Has SecurityPermissionFlag.UnmanagedCode permission */ + guint32 skipverification:2; /* Has SecurityPermissionFlag.SkipVerification permission */ }; typedef struct { @@ -77,6 +84,11 @@ struct _MonoImage { guint8 raw_buffer_used : 1; guint8 raw_data_allocated : 1; +#ifdef PLATFORM_WIN32 + /* Module was loaded using LoadLibrary. */ + guint8 is_module_handle : 1; +#endif + /* Whenever this is a dynamically emitted module */ guint8 dynamic : 1; @@ -137,8 +149,12 @@ struct _MonoImage { /* * Indexed by method tokens and typedef tokens. */ - GHashTable *method_cache; + MonoValueHashTable *method_cache; MonoInternalHashTable class_cache; + + /* Indexed by memberref + methodspec tokens */ + GHashTable *methodref_cache; + /* * Indexed by fielddef and memberref tokens */ @@ -188,18 +204,27 @@ struct _MonoImage { GHashTable *unbox_wrapper_cache; GHashTable *cominterop_invoke_cache; GHashTable *cominterop_wrapper_cache; + GHashTable *static_rgctx_invoke_cache; /* LOCKING: marshal lock */ + GHashTable *thunk_invoke_cache; /* * indexed by MonoClass pointers */ GHashTable *ldfld_wrapper_cache; GHashTable *ldflda_wrapper_cache; - GHashTable *ldfld_remote_wrapper_cache; GHashTable *stfld_wrapper_cache; - GHashTable *stfld_remote_wrapper_cache; GHashTable *isinst_cache; GHashTable *castclass_cache; GHashTable *proxy_isinst_cache; + GHashTable *rgctx_template_hash; /* LOCKING: templates lock */ + + /* + * indexed by token and MonoGenericContext pointer + */ + GHashTable *generic_class_cache; + + /* Contains rarely used fields of runtime structures belonging to this image */ + MonoPropertyHash *property_hash; void *reflection_info; @@ -276,6 +301,7 @@ struct _MonoDynamicImage { GHashTable *method_to_table_idx; GHashTable *field_to_table_idx; GHashTable *method_aux_hash; + MonoGHashTable *generic_def_objects; gboolean run; gboolean save; gboolean initial_image; @@ -408,7 +434,10 @@ mono_metadata_inflate_generic_inst (MonoGenericInst *ginst, void mono_dynamic_stream_reset (MonoDynamicStream* stream) MONO_INTERNAL; void mono_assembly_addref (MonoAssembly *assembly) MONO_INTERNAL; -void mono_assembly_load_friends (MonoAssembly* ass); +void mono_assembly_load_friends (MonoAssembly* ass) MONO_INTERNAL; +gboolean mono_assembly_has_skip_verification (MonoAssembly* ass) MONO_INTERNAL; + +gboolean mono_public_tokens_are_equal (const unsigned char *pubt1, const unsigned char *pubt2) MONO_INTERNAL; void mono_config_parse_publisher_policy (const char *filename, MonoAssemblyBindingInfo *binding_info) MONO_INTERNAL; @@ -416,7 +445,8 @@ gboolean mono_assembly_name_parse_full (const char *name, MonoAssemblyName *aname, gboolean save_public_key, - gboolean *is_version_defined) MONO_INTERNAL; + gboolean *is_version_defined, + gboolean *is_token_defined) MONO_INTERNAL; guint32 mono_metadata_get_generic_param_row (MonoImage *image, guint32 token, guint32 *owner); @@ -424,6 +454,7 @@ void mono_unload_interface_ids (MonoBitSet *bitset) MONO_INTERNAL; MonoType *mono_metadata_type_dup (MonoMemPool *mp, const MonoType *original) MONO_INTERNAL; +MonoMethodSignature *mono_metadata_signature_dup_full (MonoMemPool *mp,MonoMethodSignature *sig) MONO_INTERNAL; MonoGenericInst * mono_get_shared_generic_inst (MonoGenericContainer *container) MONO_INTERNAL; @@ -431,5 +462,9 @@ mono_get_shared_generic_inst (MonoGenericContainer *container) MONO_INTERNAL; int mono_type_stack_size_internal (MonoType *t, int *align, gboolean allow_open) MONO_INTERNAL; +gboolean +mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, gboolean signature_only) MONO_INTERNAL; + + #endif /* __MONO_METADATA_INTERNALS_H__ */