[sgen] Make los usage of size_t cosnsitent.
[mono.git] / mono / metadata / metadata-internals.h
index 973f5fd35dc21684fa8c55d6cc1d6b6f36e6364e..618fd5b59d52a7487fe1b0798397971c06a119bf 100644 (file)
@@ -44,6 +44,7 @@ struct _MonoType {
 #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;
@@ -223,7 +224,7 @@ struct _MonoImage {
        /*
         * Indexed by fielddef and memberref tokens
         */
-       GHashTable *field_cache;
+       GHashTable *field_cache; /*protected by the image lock*/
 
        /* indexed by typespec tokens. */
        GHashTable *typespec_cache;
@@ -256,6 +257,7 @@ struct _MonoImage {
        GHashTable *delegate_end_invoke_cache;
        GHashTable *delegate_invoke_cache;
        GHashTable *runtime_invoke_cache;
+       GHashTable *runtime_invoke_vtype_cache;
 
        /*
         * indexed by SignatureMethodPair
@@ -282,6 +284,8 @@ struct _MonoImage {
        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
@@ -319,6 +323,7 @@ struct _MonoImage {
        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 */
@@ -333,6 +338,9 @@ struct _MonoImage {
        /* 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.
@@ -568,6 +576,9 @@ mono_install_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data) MO
 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;
 
@@ -582,13 +593,13 @@ mono_image_set_strdup (MonoImageSet *set, const char *s) 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;
@@ -608,7 +619,7 @@ mono_metadata_parse_array_full              (MonoImage             *image,
                                             const char            *ptr,
                                             const char           **rptr) MONO_INTERNAL;
 
-MonoType *
+MONO_API MonoType *
 mono_metadata_parse_type_full               (MonoImage             *image,
                                             MonoGenericContainer  *container,
                                             MonoParseTypeMode      mode,
@@ -621,14 +632,14 @@ mono_metadata_parse_signature_full          (MonoImage             *image,
                                             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);
@@ -687,7 +698,7 @@ mono_assembly_name_parse_full                    (const char           *name,
                                              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;
 
@@ -702,7 +713,7 @@ mono_get_shared_generic_inst (MonoGenericContainer *container) 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;
@@ -713,7 +724,7 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, const char *ptr) MONO_I
 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,