Imported Upstream version 5.20.0.180

Former-commit-id: ff953ca879339fe1e1211f7220f563e1342e66cb
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2019-02-04 20:11:37 +00:00
parent 0e2d47d1c8
commit 0510252385
3360 changed files with 83827 additions and 39243 deletions

View File

@@ -1 +1 @@
ebcc83472ef4e3dfabc85b0df748807dbb8103fd
131a11060435d35ce6b010151023448480ab65f9

View File

@@ -716,7 +716,11 @@ namespace System.Threading
// If a cancellation has since come in, we will try to undo the registration and run the callback ourselves.
// (this avoids leaving the callback orphaned)
#if MONO
bool deregisterOccurred = registration.Unregister();
#else
bool deregisterOccurred = registration.TryDeregister();
#endif
if (!deregisterOccurred)
{

View File

@@ -40,8 +40,10 @@ namespace System.Threading {
internal class ThreadHelper
{
#if !MONO
[System.Security.SecuritySafeCritical]
static ThreadHelper() {}
#endif
Delegate _start;
Object _startArg = null;

View File

@@ -78,6 +78,19 @@ namespace System.Threading
internal static class ThreadPoolGlobals
{
#if MONO
public const uint tpQuantum = 30U;
public static int processorCount => Environment.ProcessorCount;
public static bool tpHosted => ThreadPool.IsThreadPoolHosted();
public static volatile bool vmTpInitialized;
public static bool enableWorkerTracking;
[SecurityCritical]
public static readonly ThreadPoolWorkQueue workQueue = new ThreadPoolWorkQueue();
#else
//Per-appDomain quantum (in ms) for which the thread keeps processing
//requests in the current domain.
public static uint tpQuantum = 30U;
@@ -96,6 +109,7 @@ namespace System.Threading
static ThreadPoolGlobals()
{
}
#endif
}
internal sealed class ThreadPoolWorkQueue
@@ -1216,8 +1230,10 @@ namespace System.Threading
internal sealed class QueueUserWorkItemCallback : IThreadPoolWorkItem
{
#if !MONO
[System.Security.SecuritySafeCritical]
static QueueUserWorkItemCallback() {}
#endif
private WaitCallback callback;
private ExecutionContext context;

View File

@@ -96,7 +96,17 @@ namespace System {
return type;
}
#if MONO
internal static void GetUnitySerializationInfo(SerializationInfo info, int unityType)
{
info.SetType(typeof(UnitySerializationHolder));
info.AddValue("Data", null, typeof(string));
info.AddValue("UnityType", unityType);
info.AddValue("AssemblyName", string.Empty);
}
#endif
internal static void GetUnitySerializationInfo(SerializationInfo info, RuntimeType type)
{
if (type.GetRootElementType().IsGenericParameter)