From 9dbb8447420a213bacc34e4046ae9c947601dea2 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Tue, 21 Dec 2021 15:36:28 +0300 Subject: [PATCH] [Native][tests] Gradle property: MemoryModel --- native/native.tests/build.gradle.kts | 1 + .../blackboxtest/support/NativeBlackBoxTestSupport.kt | 5 +++++ .../kotlin/konan/blackboxtest/support/TestCompiler.kt | 4 ++++ .../kotlin/konan/blackboxtest/support/TestDirectives.kt | 3 ++- .../blackboxtest/support/settings/TestProcessSettings.kt | 7 +++++++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/native/native.tests/build.gradle.kts b/native/native.tests/build.gradle.kts index d35803758e4..609952ef5cf 100644 --- a/native/native.tests/build.gradle.kts +++ b/native/native.tests/build.gradle.kts @@ -49,6 +49,7 @@ enum class TestProperty(shortName: String) { COMPILER_CLASSPATH("compilerClasspath"), TEST_MODE("mode"), OPTIMIZATION_MODE("optimizationMode"), + MEMORY_MODEL("memoryModel"), USE_CACHE("useCache"), EXECUTION_TIMEOUT("executionTimeout"); diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/NativeBlackBoxTestSupport.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/NativeBlackBoxTestSupport.kt index 7d454f907fc..ab8618060af 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/NativeBlackBoxTestSupport.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/NativeBlackBoxTestSupport.kt @@ -58,6 +58,7 @@ class NativeBlackBoxTestSupport : BeforeEachCallback { computeNativeClassLoader(), computeTestMode(), computeOptimizationMode(), + computeMemoryModel(), CacheKind::class to computeCacheKind(), computeBaseDirs(), computeTimeouts() @@ -87,6 +88,9 @@ class NativeBlackBoxTestSupport : BeforeEachCallback { private fun computeOptimizationMode(): OptimizationMode = enumSystemProperty(OPTIMIZATION_MODE, OptimizationMode.values(), default = OptimizationMode.DEBUG) + private fun computeMemoryModel(): MemoryModel = + enumSystemProperty(MEMORY_MODEL, MemoryModel.values(), default = MemoryModel.DEFAULT) + private fun computeCacheKind(): CacheKind { val useCache = systemProperty(USE_CACHE, String::toBooleanStrictOrNull, default = true) return if (useCache) CacheKind.WithStaticCache else CacheKind.WithoutCache @@ -133,6 +137,7 @@ class NativeBlackBoxTestSupport : BeforeEachCallback { private const val COMPILER_CLASSPATH = "kotlin.internal.native.test.compilerClasspath" private const val TEST_MODE = "kotlin.internal.native.test.mode" private const val OPTIMIZATION_MODE = "kotlin.internal.native.test.optimizationMode" + private const val MEMORY_MODEL = "kotlin.internal.native.test.memoryModel" private const val USE_CACHE = "kotlin.internal.native.test.useCache" private const val EXECUTION_TIMEOUT = "kotlin.internal.native.test.executionTimeout" private const val PROJECT_BUILD_DIR = "PROJECT_BUILD_DIR" diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/TestCompiler.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/TestCompiler.kt index 50ecd402327..d79c15c5792 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/TestCompiler.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/TestCompiler.kt @@ -51,6 +51,7 @@ internal class TestCompilationFactory { home = settings.get(), classLoader = settings.get(), optimizationMode = settings.get(), + memoryModel = settings.get(), freeCompilerArgs = freeCompilerArgs, sourceModules = rootModules, dependencies = TestCompilationDependencies(libraries = libraries, friends = friends), @@ -93,6 +94,7 @@ internal class TestCompilationFactory { home = settings.get(), classLoader = settings.get(), optimizationMode = settings.get(), + memoryModel = settings.get(), freeCompilerArgs = freeCompilerArgs, sourceModules = sourceModules, dependencies = TestCompilationDependencies(libraries = libraries, friends = friends), @@ -242,6 +244,7 @@ private class TestCompilationImpl( private val home: KotlinNativeHome, private val classLoader: KotlinNativeClassLoader, private val optimizationMode: OptimizationMode, + private val memoryModel: MemoryModel, private val freeCompilerArgs: TestCompilerArgs, private val sourceModules: Collection, private val dependencies: TestCompilationDependencies, @@ -268,6 +271,7 @@ private class TestCompilationImpl( "-Xbinary=runtimeAssertionsMode=panic" ) optimizationMode.compilerFlag?.let { compilerFlag -> add(compilerFlag) } + memoryModel.compilerFlags?.let { compilerFlags -> add(compilerFlags) } addFlattened(dependencies.libraries) { library -> listOf("-l", library.resultingArtifactPath) } dependencies.friends.takeIf(Collection<*>::isNotEmpty)?.let { friends -> diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/TestDirectives.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/TestDirectives.kt index 41024c0f64c..c9e52950b08 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/TestDirectives.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/TestDirectives.kt @@ -118,7 +118,8 @@ internal class TestCompilerArgs(val compilerArgs: List) { "-repo", "-target", "-Xinclude", - "-g", "-opt" + "-g", "-opt", + "-memory-model" ) } } diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/settings/TestProcessSettings.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/settings/TestProcessSettings.kt index e0b81771214..8907625cbc1 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/settings/TestProcessSettings.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/settings/TestProcessSettings.kt @@ -53,6 +53,13 @@ internal enum class OptimizationMode(private val description: String, val compil override fun toString() = description + if (compilerFlag == null) "" else " ($compilerFlag)" } +internal enum class MemoryModel(val compilerFlags: List?) { + DEFAULT(null), + EXPERIMENTAL(listOf("-memory-model", "experimental")); + + override fun toString() = compilerFlags?.joinToString(prefix = "(", separator = " ", postfix = ")").orEmpty() +} + /** * Current project's directories. */