2008-04-21 Gonzalo Paniagua Javier <gonzalo.mono@gmail.com>
[mono.git] / mono / metadata / object-internals.h
index 8e6e27ccfd1b3a8abb73ad38ac00c78111dccafc..df479b861b6f39786ca239e60447e870a50397d9 100644 (file)
@@ -2,6 +2,7 @@
 #define __MONO_OBJECT_INTERNALS_H__
 
 #include <mono/metadata/object.h>
+#include <mono/metadata/threads.h>
 #include <mono/metadata/reflection.h>
 #include <mono/metadata/mempool.h>
 #include <mono/io-layer/io-layer.h>
@@ -262,7 +263,7 @@ struct _MonoThread {
        gpointer suspend_event;
        gpointer suspended_event;
        gpointer resume_event;
-       MonoObject *synch_lock;
+       CRITICAL_SECTION *synch_cs;
        guint8* serialized_culture_info;
        guint32 serialized_culture_info_len;
        guint8* serialized_ui_culture_info;
@@ -279,7 +280,7 @@ struct _MonoThread {
        gssize small_id;    /* A small, unique id, used for the hazard
                               pointer table.  Should be changed to a
                               guint32 at the next corlib version bump. */
-       gpointer unused6;
+       MonoThreadManageCallback manage_callback;
        gpointer unused7;
 };
 
@@ -526,6 +527,7 @@ struct _MonoDelegate {
        gpointer method_ptr;
        gpointer invoke_impl;
        MonoObject *target;
+       MonoMethod *method;
        MonoObject *target_type;
        MonoString *method_name;
        gpointer delegate_trampoline;
@@ -935,7 +937,7 @@ typedef struct {
 typedef struct _MonoReflectionGenericClass MonoReflectionGenericClass;
 struct _MonoReflectionGenericClass {
        MonoReflectionType type;
-       MonoReflectionType *generic_type;
+       MonoReflectionTypeBuilder *generic_type;
        guint32 initialized;
 };
 
@@ -952,6 +954,7 @@ typedef struct {
        MonoArray   *keyToken;
        guint32     versioncompat;
        MonoObject *version;
+       guint32     processor_architecture;
 } MonoReflectionAssemblyName;
 
 typedef struct {
@@ -1027,8 +1030,16 @@ typedef struct {
        MonoReflectionType *return_type;
        guint32 call_conv;
        guint32 unmanaged_call_conv;
+       MonoArray *modreqs;
+       MonoArray *modopts;
 } MonoReflectionSigHelper;
 
+typedef struct {
+       MonoObject object;
+       MonoReflectionGenericClass *inst;
+       MonoReflectionFieldBuilder *fb;
+} MonoReflectionFieldOnTypeBuilderInst;
+
 enum {
        RESOURCE_LOCATION_EMBEDDED = 1,
        RESOURCE_LOCATION_ANOTHER_ASSEMBLY = 2,
@@ -1063,6 +1074,8 @@ guint32       mono_image_insert_string (MonoReflectionModuleBuilder *module, Mon
 guint32       mono_image_create_token  (MonoDynamicImage *assembly, MonoObject *obj, gboolean create_methodspec) MONO_INTERNAL;
 guint32       mono_image_create_method_token (MonoDynamicImage *assembly, MonoObject *obj, MonoArray *opt_param_types) MONO_INTERNAL;
 void          mono_image_module_basic_init (MonoReflectionModuleBuilder *module) MONO_INTERNAL;
+void          mono_image_register_token (MonoDynamicImage *assembly, guint32 token, MonoObject *obj) MONO_INTERNAL;
+void          mono_dynamic_image_free (MonoDynamicImage *image) MONO_INTERNAL;
 
 void        mono_reflection_setup_internal_class  (MonoReflectionTypeBuilder *tb) MONO_INTERNAL;
 
@@ -1099,11 +1112,14 @@ MonoArray  *mono_reflection_sighelper_get_signature_field (MonoReflectionSigHelp
 MonoReflectionMarshal* mono_reflection_marshal_from_marshal_spec (MonoDomain *domain, MonoClass *klass, MonoMarshalSpec *spec) MONO_INTERNAL;
 
 gpointer
-mono_reflection_lookup_dynamic_token (MonoImage *image, guint32 token, MonoClass **handle_class, MonoGenericContext *context) MONO_INTERNAL;
+mono_reflection_lookup_dynamic_token (MonoImage *image, guint32 token, gboolean valid_token, MonoClass **handle_class, MonoGenericContext *context) MONO_INTERNAL;
 
 gboolean
 mono_reflection_call_is_assignable_to (MonoClass *klass, MonoClass *oklass) MONO_INTERNAL;
 
+gboolean
+mono_reflection_is_valid_dynamic_token (MonoDynamicImage *image, guint32 token) MONO_INTERNAL;
+
 void
 mono_image_build_metadata (MonoReflectionModuleBuilder *module) MONO_INTERNAL;
 
@@ -1128,6 +1144,9 @@ mono_remote_class_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mon
 void
 mono_upgrade_remote_class (MonoDomain *domain, MonoObject *tproxy, MonoClass *klass) MONO_INTERNAL;
 
+gpointer
+mono_create_ftnptr (MonoDomain *domain, gpointer addr) MONO_INTERNAL;
+
 gpointer
 mono_get_addr_from_ftnptr (gpointer descr) MONO_INTERNAL;
 
@@ -1168,6 +1187,9 @@ mono_install_imt_thunk_builder (MonoImtThunkBuilder func) MONO_INTERNAL;
 void
 mono_install_imt_trampoline (gpointer tramp) MONO_INTERNAL;
 
+void
+mono_install_vtable_trampoline (gpointer tramp) MONO_INTERNAL;
+
 void
 mono_vtable_build_imt_slot (MonoVTable* vtable, int imt_slot) MONO_INTERNAL;