#define MONO_PROCESSOR_ARCHITECTURE_X86 2
#define MONO_PROCESSOR_ARCHITECTURE_IA64 3
#define MONO_PROCESSOR_ARCHITECTURE_AMD64 4
+#define MONO_PROCESSOR_ARCHITECTURE_ARM 5
struct _MonoAssemblyName {
const char *name;
* It is NULL terminated.
*/
MonoAssembly **references;
+ int nreferences;
MonoImage **modules;
guint32 module_count;
/*
* Indexed by fielddef and memberref tokens
*/
- GHashTable *field_cache;
+ GHashTable *field_cache; /*protected by the image lock*/
/* indexed by typespec tokens. */
GHashTable *typespec_cache;
GHashTable *delegate_end_invoke_cache;
GHashTable *delegate_invoke_cache;
GHashTable *runtime_invoke_cache;
+ GHashTable *runtime_invoke_vtype_cache;
/*
* indexed by SignatureMethodPair
GHashTable *cominterop_wrapper_cache; /* LOCKING: marshal lock */
GHashTable *thunk_invoke_cache;
GHashTable *wrapper_param_names;
+ GHashTable *synchronized_generic_cache;
+ GHashTable *array_accessor_cache;
/*
* indexed by MonoClass pointers
GSList *reflection_info_unregister_classes;
/* List of image sets containing this image */
+ /* Protected by image_sets_lock */
GSList *image_sets;
/* Caches for MonoClass-es representing anon generic params */
/* Maps malloc-ed char* pinvoke scope -> malloced-ed char* filename */
GHashTable *pinvoke_scope_filenames;
+ /* Indexed by MonoGenericParam pointers */
+ GHashTable *gsharedvt_types;
+
/*
* 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.
void
mono_remove_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data) MONO_INTERNAL;
+void
+mono_image_append_class_to_reflection_info_set (MonoClass *class) MONO_INTERNAL;
+
gpointer
mono_image_set_alloc (MonoImageSet *set, guint size) MONO_INTERNAL;
MonoType*
mono_metadata_get_shared_type (MonoType *type) MONO_INTERNAL;
-GSList*
+void
mono_metadata_clean_for_image (MonoImage *image) MONO_INTERNAL;
void
mono_metadata_clean_generic_classes_for_image (MonoImage *image) MONO_INTERNAL;
-void
+MONO_API void
mono_metadata_cleanup (void);
const char * mono_meta_table_name (int table) MONO_INTERNAL;
const char *ptr,
const char **rptr) MONO_INTERNAL;
-MonoType *
+MONO_API MonoType *
mono_metadata_parse_type_full (MonoImage *image,
MonoGenericContainer *container,
MonoParseTypeMode mode,
MonoGenericContainer *generic_container,
guint32 token) MONO_INTERNAL;
-MonoMethodSignature *
+MONO_API MonoMethodSignature *
mono_metadata_parse_method_signature_full (MonoImage *image,
MonoGenericContainer *generic_container,
int def,
const char *ptr,
const char **rptr);
-MonoMethodHeader *
+MONO_API MonoMethodHeader *
mono_metadata_parse_mh_full (MonoImage *image,
MonoGenericContainer *container,
const char *ptr);
gboolean *is_version_defined,
gboolean *is_token_defined) MONO_INTERNAL;
-guint32 mono_metadata_get_generic_param_row (MonoImage *image, guint32 token, guint32 *owner);
+MONO_API guint32 mono_metadata_get_generic_param_row (MonoImage *image, guint32 token, guint32 *owner);
void mono_unload_interface_ids (MonoBitSet *bitset) MONO_INTERNAL;
int
mono_type_stack_size_internal (MonoType *t, int *align, gboolean allow_open) MONO_INTERNAL;
-void mono_type_get_desc (GString *res, MonoType *type, mono_bool include_namespace);
+MONO_API void mono_type_get_desc (GString *res, MonoType *type, mono_bool include_namespace);
gboolean
mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, gboolean signature_only) MONO_INTERNAL;
guint mono_metadata_generic_inst_hash (gconstpointer data) MONO_INTERNAL;
gboolean mono_metadata_generic_inst_equal (gconstpointer ka, gconstpointer kb) MONO_INTERNAL;
-void
+MONO_API void
mono_metadata_field_info_with_mempool (
MonoImage *meta,
guint32 table_index,