[runtime] Decrease the size of the critical section in mono_bounded_array_class_get ().
[mono.git] / mono / metadata / object-internals.h
index b420ff75543492180fccb50bcbd5fe7e349d2b36..fc141bb338021ea0026458529cee855540b25e26 100644 (file)
@@ -349,7 +349,8 @@ typedef enum {
 struct _MonoInternalThread {
        MonoObject  obj;
        volatile int lock_thread_id; /* to be used as the pre-shifted thread id in thin locks. Used for appdomain_ref push/pop */
-       HANDLE      handle;
+       MonoThreadHandle *handle;
+       HANDLE native_handle;
        MonoArray  *cached_culture_info;
        gunichar2  *name;
        guint32     name_len;
@@ -382,6 +383,8 @@ struct _MonoInternalThread {
        gsize abort_protected_block_count;
        gint32 priority;
        GPtrArray *owned_mutexes;
+       MonoOSEvent *suspended;
+       gint32 self_suspended; // TRUE | FALSE
        /* 
         * These fields are used to avoid having to increment corlib versions
         * when a new field is added to this structure.
@@ -1180,12 +1183,16 @@ typedef struct {
        guint32 attrs;
 } MonoReflectionGenericParam;
 
+typedef struct {
+       MonoReflectionType type;
+       MonoReflectionTypeBuilder *tb;
+} MonoReflectionEnumBuilder;
+
 typedef struct _MonoReflectionGenericClass MonoReflectionGenericClass;
 struct _MonoReflectionGenericClass {
        MonoReflectionType type;
        MonoReflectionType *generic_type; /*Can be either a MonoType or a TypeBuilder*/
        MonoArray *type_arguments;
-       guint32 initialized;
 };
 
 typedef struct {
@@ -1204,6 +1211,9 @@ typedef struct {
        guint32     processor_architecture;
 } MonoReflectionAssemblyName;
 
+/* Safely access System.Reflection.AssemblyName from native code */
+TYPED_HANDLE_DECL (MonoReflectionAssemblyName);
+
 typedef struct {
        MonoObject  obj;
        MonoString *name;
@@ -1282,26 +1292,6 @@ typedef struct {
        MonoArray *modopts;
 } MonoReflectionSigHelper;
 
-typedef struct {
-       MonoObject object;
-       MonoReflectionGenericClass *inst;
-       MonoObject *fb; /*can be either a MonoField or a FieldBuilder*/
-} MonoReflectionFieldOnTypeBuilderInst;
-
-typedef struct {
-       MonoObject object;
-       MonoReflectionGenericClass *inst;
-       MonoObject *cb; /*can be either a MonoCMethod or ConstructorBuilder*/
-} MonoReflectionCtorOnTypeBuilderInst;
-
-typedef struct {
-       MonoObject object;
-       MonoReflectionType *inst;
-       MonoObject *mb; /*can be either a MonoMethod or MethodBuilder*/
-       MonoArray *method_args;
-       MonoReflectionMethodBuilder *generic_method_definition;
-} MonoReflectionMethodOnTypeBuilderInst;
-
 typedef struct {
        MonoObject object;
        MonoBoolean visible;
@@ -1357,12 +1347,6 @@ void          mono_dynamic_image_release_gc_roots (MonoDynamicImage *image);
 
 void        mono_reflection_setup_internal_class  (MonoReflectionTypeBuilder *tb);
 
-MonoReflectionType*
-ves_icall_TypeBuilder_create_runtime_class (MonoReflectionTypeBuilder *tb);
-
-void
-ves_icall_TypeBuilder_setup_internal_class (MonoReflectionTypeBuilder *tb);
-
 void        mono_reflection_get_dynamic_overrides (MonoClass *klass, MonoMethod ***overrides, int *num_overrides, MonoError *error);
 
 void mono_reflection_destroy_dynamic_method (MonoReflectionDynamicMethod *mb);
@@ -1416,6 +1400,9 @@ mono_get_constant_value_from_blob (MonoDomain* domain, MonoTypeEnum type, const
 void
 mono_release_type_locks (MonoInternalThread *thread);
 
+char *
+mono_string_handle_to_utf8 (MonoStringHandle s, MonoError *error);
+
 char *
 mono_string_to_utf8_mp (MonoMemPool *mp, MonoString *s, MonoError *error);
 
@@ -1646,10 +1633,10 @@ MonoString*
 mono_string_intern_checked (MonoString *str, MonoError *error);
 
 char *
-mono_exception_get_native_backtrace (MonoException *exc);
+mono_exception_handle_get_native_backtrace (MonoExceptionHandle exc);
 
-MonoString *
-ves_icall_Mono_Runtime_GetNativeStackTrace (MonoException *exc);
+MonoStringHandle
+ves_icall_Mono_Runtime_GetNativeStackTrace (MonoExceptionHandle exc, MonoError *erro);
 
 char *
 mono_exception_get_managed_backtrace (MonoException *exc);
@@ -1785,25 +1772,19 @@ ves_icall_AssemblyBuilder_basic_init (MonoReflectionAssemblyBuilder *assemblyb);
 MonoReflectionModule*
 ves_icall_AssemblyBuilder_InternalAddModule (MonoReflectionAssemblyBuilder *ab, MonoString *fileName);
 
-void
-ves_icall_TypeBuilder_create_generic_class (MonoReflectionTypeBuilder *tb);
-
 MonoArray*
 ves_icall_CustomAttributeBuilder_GetBlob (MonoReflectionAssembly *assembly, MonoObject *ctor, MonoArray *ctorArgs, MonoArray *properties, MonoArray *propValues, MonoArray *fields, MonoArray* fieldValues);
 
 void
 ves_icall_DynamicMethod_create_dynamic_method (MonoReflectionDynamicMethod *mb);
 
-MonoBoolean
-ves_icall_TypeBuilder_get_IsGenericParameter (MonoReflectionTypeBuilder *tb);
+MonoReflectionType*
+ves_icall_TypeBuilder_create_runtime_class (MonoReflectionTypeBuilder *tb);
 
 void
 ves_icall_EnumBuilder_setup_enum_type (MonoReflectionType *enumtype,
                                                                           MonoReflectionType *t);
 
-MonoReflectionType*
-ves_icall_ModuleBuilder_create_modified_type (MonoReflectionTypeBuilder *tb, MonoString *smodifiers);
-
 void
 ves_icall_ModuleBuilder_basic_init (MonoReflectionModuleBuilder *moduleb);
 
@@ -1813,10 +1794,4 @@ ves_icall_ModuleBuilder_getUSIndex (MonoReflectionModuleBuilder *module, MonoStr
 void
 ves_icall_ModuleBuilder_set_wrappers_type (MonoReflectionModuleBuilder *moduleb, MonoReflectionType *type);
 
-void
-ves_icall_GenericTypeParameterBuilder_initialize_generic_parameter (MonoReflectionGenericParam *gparam);
-
-MonoReflectionMethod*
-ves_icall_MethodBuilder_MakeGenericMethod (MonoReflectionMethod *rmethod, MonoArray *types);
-
 #endif /* __MONO_OBJECT_INTERNALS_H__ */