[runtime] Decrease the size of the critical section in mono_bounded_array_class_get ().
[mono.git] / mono / metadata / object-internals.h
index b2cdf6a9fe9cb65c3665ab51b725630c161e7d7c..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.
@@ -1208,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;
@@ -1394,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);
 
@@ -1624,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);