Merge pull request #1916 from ludovic-henry/iolayer-remove-sharedhandle
authorRodrigo Kumpera <kumpera@gmail.com>
Fri, 11 Dec 2015 17:25:46 +0000 (12:25 -0500)
committerRodrigo Kumpera <kumpera@gmail.com>
Fri, 11 Dec 2015 17:25:46 +0000 (12:25 -0500)
[io-layer] Remove shared handles cross process support

mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs
mcs/mcs/expression.cs
mono/metadata/threadpool-ms.c

index 94d2a2040432f76336229c2cf1a72de13294555f..98c939312eadb5c37dea947046bf681ae0ae4459 100644 (file)
@@ -129,8 +129,8 @@ namespace MonoTests.System.Threading
 
                        workerThreads_new = workerThreads == 1 ? 2 : 1;
                        completionPortThreads_new = completionPortThreads == 1 ? 2 : 1;
-
                        ThreadPool.SetMinThreads (workerThreads_new, completionPortThreads_new);
+
                        ThreadPool.GetMinThreads (out workerThreads, out completionPortThreads);
                        Assert.IsTrue (workerThreads == workerThreads_new, "#3");
                        Assert.IsTrue (completionPortThreads == completionPortThreads_new, "#4");
@@ -149,8 +149,8 @@ namespace MonoTests.System.Threading
 
                        workerThreads_new = workerThreads == cpuCount ? cpuCount + 1 : cpuCount;
                        completionPortThreads_new = completionPortThreads == cpuCount ? cpuCount + 1 : cpuCount;
-
                        ThreadPool.SetMaxThreads (workerThreads_new, completionPortThreads_new);
+
                        ThreadPool.GetMaxThreads (out workerThreads, out completionPortThreads);
                        Assert.IsTrue (workerThreads == workerThreads_new, "#3");
                        Assert.IsTrue (completionPortThreads == completionPortThreads_new, "#4");
@@ -164,13 +164,15 @@ namespace MonoTests.System.Threading
                        int i, workerThreads, completionPortThreads;
 
                        try {
-                               ThreadPool.SetMaxThreads (20, 20);
+                               Assert.IsTrue (ThreadPool.SetMaxThreads (Environment.ProcessorCount, Environment.ProcessorCount));
 
                                while (true) {
                                        ThreadPool.GetAvailableThreads (out workerThreads, out completionPortThreads);
                                        if (workerThreads == 0)
                                                break;
 
+                                       Console.WriteLine ("workerThreads = {0}, completionPortThreads = {1}", workerThreads, completionPortThreads);
+
                                        if ((DateTime.Now - start).TotalSeconds >= 10)
                                                Assert.Fail ("did not reach 0 available threads");
 
index 48a682c6901ebf8cbfaea51211d34189ec3d393a..ebd2fc2c8c4702e59847412a2053729945436596 100644 (file)
@@ -6018,6 +6018,7 @@ namespace Mono.CSharp
                                case BuiltinTypeSpec.Type.Byte:
                                case BuiltinTypeSpec.Type.Short:
                                case BuiltinTypeSpec.Type.UShort:
+                               case BuiltinTypeSpec.Type.Int:
                                        ec.Emit (OpCodes.Conv_I);
                                        break;
                                case BuiltinTypeSpec.Type.UInt:
index 8b3ca3d67adf22cd8acaf074f705e7cea82c10ca..9e960df6e37aa1e37102d53972936951400d5bc2 100644 (file)
@@ -1430,7 +1430,7 @@ ves_icall_System_Threading_ThreadPool_GetAvailableThreadsNative (gint32 *worker_
 
        counter.as_gint64 = COUNTER_READ ();
 
-       *worker_threads = threadpool->limit_worker_max - counter._.active;
+       *worker_threads = MAX (0, threadpool->limit_worker_max - counter._.active);
        *completion_port_threads = threadpool->limit_io_max;
 }