Merge pull request #3591 from directhex/mono_libdir_fallback
[mono.git] / mcs / class / corlib / System.Threading / Thread.cs
index 7527667be3f9394a2a95fc7a949e38b774fac6ef..2e19104a39d81b5d9b92fdc6b2eda620468c3fad 100644 (file)
@@ -65,7 +65,6 @@ namespace System.Threading {
                /* start_notify is used by the runtime to signal that Start()
                 * is ok to return
                 */
-               private IntPtr start_notify;
                private IntPtr stack_ptr;
                private UIntPtr static_data; /* GC-tracked */
                private IntPtr runtime_thread_info;
@@ -90,12 +89,21 @@ namespace System.Threading {
                private IntPtr interrupt_on_stop;
                private IntPtr flags;
                private IntPtr thread_pinning_ref;
-               private IntPtr start_notify_refcount;
+               private IntPtr abort_protected_block_count;
+               private int priority = (int) ThreadPriority.Normal;
+               private IntPtr owned_mutex;
                /* 
                 * These fields are used to avoid having to increment corlib versions
                 * when a new field is added to the unmanaged MonoThread structure.
                 */
+               private IntPtr unused1;
                private IntPtr unused2;
+
+               /* This is used only to check that we are in sync between the representation
+                * of MonoInternalThread in native and InternalThread in managed
+                *
+                * DO NOT RENAME! DO NOT ADD FIELDS AFTER! */
+               private IntPtr last;
                #endregion
 #pragma warning restore 169, 414, 649
 
@@ -116,16 +124,11 @@ namespace System.Threading {
                private InternalThread internal_thread;
                object m_ThreadStartArg;
                object pending_exception;
-               int priority = (int) ThreadPriority.Normal;
                #endregion
 #pragma warning restore 414
 
                IPrincipal principal;
                int principal_version;
-               bool current_culture_set;
-               bool current_ui_culture_set;
-               CultureInfo current_culture;
-               CultureInfo current_ui_culture;
 
                // the name of current_thread is
                // important because they are used by the runtime.
@@ -133,9 +136,6 @@ namespace System.Threading {
                [ThreadStatic]
                static Thread current_thread;
 
-               static internal CultureInfo default_culture;
-               static internal CultureInfo default_ui_culture;
-
                // can be both a ThreadStart and a ParameterizedThreadStart
                private MulticastDelegate m_Delegate;
 
@@ -340,54 +340,6 @@ namespace System.Threading {
                        }
                }
 
-               //[MethodImplAttribute (MethodImplOptions.InternalCall)]
-               //private static extern int current_lcid ();
-
-               public CultureInfo CurrentCulture {
-                       get {
-                               CultureInfo culture = current_culture;
-                               if (current_culture_set && culture != null)
-                                       return culture;
-
-                               if (default_culture != null)
-                                       return default_culture;
-
-                               current_culture = culture = CultureInfo.ConstructCurrentCulture ();
-                               return culture;
-                       }
-                       
-                       [SecurityPermission (SecurityAction.Demand, ControlThread=true)]
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-
-                               value.CheckNeutral ();
-                               current_culture = value;
-                               current_culture_set = true;
-                       }
-               }
-
-               public CultureInfo CurrentUICulture {
-                       get {
-                               CultureInfo culture = current_ui_culture;
-                               if (current_ui_culture_set && culture != null)
-                                       return culture;
-
-                               if (default_ui_culture != null)
-                                       return default_ui_culture;
-
-                               current_ui_culture = culture = CultureInfo.ConstructCurrentUICulture ();
-                               return culture;
-                       }
-                       
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-                               current_ui_culture = value;
-                               current_ui_culture_set = true;
-                       }
-               }
-
                public bool IsThreadPoolThread {
                        get {
                                return IsThreadPoolThreadInternal;
@@ -508,6 +460,12 @@ namespace System.Threading {
                {
                        throw new PlatformNotSupportedException ("Thread.ResetAbort is not supported on the current platform.");
                }
+
+               internal object AbortReason {
+                       get {
+                               throw new PlatformNotSupportedException ("Thread.ResetAbort is not supported on the current platform.");
+                       }
+               }
 #endif // MONO_FEATURE_THREAD_ABORT
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
@@ -723,11 +681,6 @@ namespace System.Threading {
                        return ManagedThreadId;
                }
 
-               internal CultureInfo GetCurrentUICultureNoAppX ()
-               {
-                       return CultureInfo.CurrentUICulture;
-               }
-
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                internal static extern void GetStackTraces (out Thread[] threads, out object[] stack_frames);
 
@@ -757,5 +710,10 @@ namespace System.Threading {
                        throw new PlatformNotSupportedException ("Thread.Resume is not supported on the current platform.");
                }
 #endif
+
+               public void DisableComObjectEagerCleanup ()
+               {
+                       throw new PlatformNotSupportedException ();
+               }
        }
 }