From c034a73d7253918ac2c24e11dd8fb42a31c12f60 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Wed, 22 Mar 2017 15:16:09 +0100 Subject: [PATCH] Extract and reuse JarFS-related IO fallback configurator function Partly fixes #KT-16927 --- .../kotlin/cli/common/environment/util.kt | 31 +++++++++++++++++++ .../kotlin/cli/common/CLICompiler.java | 13 +------- .../kotlin/daemon/KotlinCompileDaemon.kt | 3 ++ .../jsr223/KotlinJsr223ScriptEngineIT.kt | 5 +++ 4 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/environment/util.kt diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/environment/util.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/environment/util.kt new file mode 100644 index 00000000000..5142e55db15 --- /dev/null +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/environment/util.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.cli.common.environment + +import com.intellij.openapi.util.SystemInfo + +fun setIdeaIoUseFallback() { + if (SystemInfo.isWindows) { + val properties = System.getProperties() + + properties.setProperty("idea.io.use.nio2", java.lang.Boolean.TRUE.toString()) + + if (!(SystemInfo.isJavaVersionAtLeast("1.7") && "1.7.0-ea" != SystemInfo.JAVA_VERSION)) { + properties.setProperty("idea.io.use.fallback", java.lang.Boolean.TRUE.toString()) + } + } +} diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java index a3cf9d99bb7..dcf21e6eb6a 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java @@ -41,22 +41,11 @@ import java.io.PrintStream; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Properties; import static org.jetbrains.kotlin.cli.common.ExitCode.*; +import static org.jetbrains.kotlin.cli.common.environment.UtilKt.setIdeaIoUseFallback; public abstract class CLICompiler { - static private void setIdeaIoUseFallback() { - if (SystemInfo.isWindows) { - Properties properties = System.getProperties(); - - properties.setProperty("idea.io.use.nio2", Boolean.TRUE.toString()); - - if (!(SystemInfo.isJavaVersionAtLeast("1.7") && !"1.7.0-ea".equals(SystemInfo.JAVA_VERSION))) { - properties.setProperty("idea.io.use.fallback", Boolean.TRUE.toString()); - } - } - } @NotNull public ExitCode exec(@NotNull PrintStream errStream, @NotNull String... args) { diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinCompileDaemon.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinCompileDaemon.kt index 404c6baa8d1..1be59f76c10 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinCompileDaemon.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinCompileDaemon.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.daemon import org.jetbrains.kotlin.cli.common.CLICompiler +import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback import org.jetbrains.kotlin.cli.js.K2JSCompiler import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler @@ -94,6 +95,8 @@ object KotlinCompileDaemon { log.info("daemon args: " + args.joinToString(" ")) log.info("daemon process name: " + ManagementFactory.getRuntimeMXBean().name) + setIdeaIoUseFallback() + val compilerId = CompilerId() val daemonOptions = DaemonOptions() diff --git a/libraries/examples/kotlin-jsr223-local-example/src/test/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineIT.kt b/libraries/examples/kotlin-jsr223-local-example/src/test/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineIT.kt index 58a6003ae49..1aeccf325df 100644 --- a/libraries/examples/kotlin-jsr223-local-example/src/test/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineIT.kt +++ b/libraries/examples/kotlin-jsr223-local-example/src/test/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineIT.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.script.jsr223 import org.jetbrains.kotlin.config.KotlinCompilerVersion import org.jetbrains.kotlin.daemon.common.threadCpuTime +import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback import org.junit.Assert import org.junit.Test import java.lang.management.ManagementFactory @@ -26,6 +27,10 @@ import javax.script.* class KotlinJsr223LocalScriptEngineIT { + init { + setIdeaIoUseFallback() + } + @Test fun testEngineFactory() { val factory = ScriptEngineManager().getEngineByExtension("kts").factory