Fix Experimental MM tests on mingw

This commit is contained in:
Alexander Shabalin
2021-06-21 19:37:06 +03:00
committed by Space
parent 6db5fc0a23
commit b7fbe09ef4
2 changed files with 12 additions and 15 deletions
@@ -714,8 +714,7 @@ task runtime_basic_simd(type: KonanLocalTest) {
} }
task runtime_worker_random(type: KonanLocalTest) { task runtime_worker_random(type: KonanLocalTest) {
enabled = (project.testTarget != 'wasm32') && // Uses workers. enabled = (project.testTarget != 'wasm32') // Uses workers.
!(isExperimentalMM && project.testTarget == 'mingw_x64') // TODO: Fix Experimental MM performance on Windows.
source = "runtime/basic/worker_random.kt" source = "runtime/basic/worker_random.kt"
} }
@@ -888,8 +887,7 @@ standaloneTest("cleaner_in_tls_worker") {
} }
standaloneTest("worker_bound_reference0") { standaloneTest("worker_bound_reference0") {
enabled = (project.testTarget != 'wasm32') && // Workers need pthreads. enabled = (project.testTarget != 'wasm32') // Workers need pthreads.
!(isExperimentalMM && project.testTarget == 'mingw_x64') // TODO: Fix Experimental MM performance on Windows.
source = "runtime/concurrent/worker_bound_reference0.kt" source = "runtime/concurrent/worker_bound_reference0.kt"
flags = ['-tr'] flags = ['-tr']
} }
@@ -901,15 +899,13 @@ task worker0(type: KonanLocalTest) {
} }
task worker1(type: KonanLocalTest) { task worker1(type: KonanLocalTest) {
enabled = (project.testTarget != 'wasm32') && // Workers need pthreads. enabled = (project.testTarget != 'wasm32') // Workers need pthreads.
!(isExperimentalMM && project.testTarget == 'mingw_x64') // TODO: Fix Experimental MM performance on Windows.
goldValue = "OK\n" goldValue = "OK\n"
source = "runtime/workers/worker1.kt" source = "runtime/workers/worker1.kt"
} }
task worker2(type: KonanLocalTest) { task worker2(type: KonanLocalTest) {
enabled = (project.testTarget != 'wasm32') && // Workers need pthreads. enabled = (project.testTarget != 'wasm32') // Workers need pthreads.
!(isExperimentalMM && project.testTarget == 'mingw_x64') // TODO: Fix Experimental MM performance on Windows.
goldValue = "OK\n" goldValue = "OK\n"
source = "runtime/workers/worker2.kt" source = "runtime/workers/worker2.kt"
} }
@@ -964,8 +960,7 @@ task worker10(type: KonanLocalTest) {
} }
task worker11(type: KonanLocalTest) { task worker11(type: KonanLocalTest) {
enabled = (project.testTarget != 'wasm32') && // Workers need pthreads. enabled = (project.testTarget != 'wasm32') // Workers need pthreads.
!(isExperimentalMM && project.testTarget == 'mingw_x64') // TODO: Fix Experimental MM performance on Windows.
goldValue = "OK\n" goldValue = "OK\n"
source = "runtime/workers/worker11.kt" source = "runtime/workers/worker11.kt"
} }
@@ -1033,8 +1028,7 @@ task freeze6(type: KonanLocalTest) {
} }
task atomic0(type: KonanLocalTest) { task atomic0(type: KonanLocalTest) {
enabled = (project.testTarget != 'wasm32') && // Workers need pthreads. enabled = (project.testTarget != 'wasm32') // Workers need pthreads.
!(isExperimentalMM && project.testTarget == 'mingw_x64') // TODO: Fix Experimental MM performance on Windows.
goldValue = "35\n" + "20\n" + "OK\n" goldValue = "35\n" + "20\n" + "OK\n"
source = "runtime/workers/atomic0.kt" source = "runtime/workers/atomic0.kt"
} }
@@ -2831,8 +2825,7 @@ task initializers5(type: KonanLocalTest) {
} }
task initializers6(type: KonanLocalTest) { task initializers6(type: KonanLocalTest) {
disabled = (project.testTarget == 'wasm32') || // Needs workers. disabled = (project.testTarget == 'wasm32') // Needs workers.
(isExperimentalMM && project.testTarget == 'mingw_x64') // TODO: Fix Experimental MM performance on Windows.
source = "runtime/basic/initializers6.kt" source = "runtime/basic/initializers6.kt"
} }
@@ -888,7 +888,11 @@ void* workerRoutine(void* argument) {
// to see there's already a worker created for this thread. // to see there's already a worker created for this thread.
::g_worker = worker; ::g_worker = worker;
Kotlin_initRuntimeIfNeeded(); Kotlin_initRuntimeIfNeeded();
SwitchThreadState(worker->memoryState(), ThreadState::kRunnable);
// Only run this routine in the runnable state. The moment between this routine exiting and thread
// destructors running will be spent in the native state. `Kotlin_deinitRuntimeCallback` ensures
// that runtime deinitialization switches back to the runnable state.
kotlin::ThreadStateGuard guard(worker->memoryState(), ThreadState::kRunnable);
do { do {
if (worker->processQueueElement(true) == JOB_TERMINATE) break; if (worker->processQueueElement(true) == JOB_TERMINATE) break;