diff --git a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt index 07b97edfca5..486964093d9 100644 --- a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt +++ b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt @@ -327,7 +327,7 @@ class K2NativeCompilerArguments : CommonCompilerArguments() { @Argument(value="-Xdestroy-runtime-mode", valueDescription = "", description = "When to destroy runtime. 'legacy' and 'on-shutdown' are currently supported. NOTE: 'legacy' mode is deprecated and will be removed.") var destroyRuntimeMode: String? = "on-shutdown" - @Argument(value="-Xgc", valueDescription = "", description = "GC to use, 'noop' and 'stms' are currently supported. Works only with -memory-model experimental") + @Argument(value="-Xgc", valueDescription = "", description = "GC to use, 'noop', 'stms' and 'cms' are currently supported. Works only with -memory-model experimental") var gc: String? = null @Argument(value = "-Xir-property-lazy-initialization", valueDescription = "{disable|enable}", description = "Initialize top level properties lazily per file") diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt index d8950b4cceb..51955315c2b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt @@ -86,7 +86,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration val (gcFallbackReason, realGc) = when { configGc == GC.CONCURRENT_MARK_AND_SWEEP && !target.supportsThreads() -> "Concurrent mark and sweep gc is not supported for this target. Fallback to Same thread mark and sweep is done" to GC.SAME_THREAD_MARK_AND_SWEEP - configGc == null -> null to GC.SAME_THREAD_MARK_AND_SWEEP + configGc == null -> null to GC.CONCURRENT_MARK_AND_SWEEP else -> null to configGc } if (gcFallbackReason != null) { diff --git a/kotlin-native/runtime/src/gc/cms/cpp/ConcurrentMarkAndSweep.cpp b/kotlin-native/runtime/src/gc/cms/cpp/ConcurrentMarkAndSweep.cpp index a706d747a19..eae11caa6e2 100644 --- a/kotlin-native/runtime/src/gc/cms/cpp/ConcurrentMarkAndSweep.cpp +++ b/kotlin-native/runtime/src/gc/cms/cpp/ConcurrentMarkAndSweep.cpp @@ -99,6 +99,7 @@ gc::ConcurrentMarkAndSweep::ConcurrentMarkAndSweep( } } }); + RuntimeLogDebug({kTagGC}, "Concurrent Mark & Sweep GC initialized"); } gc::ConcurrentMarkAndSweep::~ConcurrentMarkAndSweep() { diff --git a/kotlin-native/runtime/src/gc/noop/cpp/NoOpGC.hpp b/kotlin-native/runtime/src/gc/noop/cpp/NoOpGC.hpp index d8f255e45de..64623848f66 100644 --- a/kotlin-native/runtime/src/gc/noop/cpp/NoOpGC.hpp +++ b/kotlin-native/runtime/src/gc/noop/cpp/NoOpGC.hpp @@ -51,7 +51,9 @@ public: private: }; - NoOpGC(mm::ObjectFactory&, GCScheduler&) noexcept {} + NoOpGC(mm::ObjectFactory&, GCScheduler&) noexcept { + RuntimeLogDebug({kTagGC}, "No-op GC initialized"); + } ~NoOpGC() = default; GCScheduler& scheduler() noexcept { return scheduler_; } diff --git a/kotlin-native/runtime/src/gc/stms/cpp/SameThreadMarkAndSweep.cpp b/kotlin-native/runtime/src/gc/stms/cpp/SameThreadMarkAndSweep.cpp index b458f078c4b..9a4963f440f 100644 --- a/kotlin-native/runtime/src/gc/stms/cpp/SameThreadMarkAndSweep.cpp +++ b/kotlin-native/runtime/src/gc/stms/cpp/SameThreadMarkAndSweep.cpp @@ -112,6 +112,7 @@ gc::SameThreadMarkAndSweep::SameThreadMarkAndSweep( RuntimeLogDebug({kTagGC}, "Scheduling GC by thread %d", konan::currentThreadId()); } }); + RuntimeLogDebug({kTagGC}, "Same thread Mark & Sweep GC initialized"); } bool gc::SameThreadMarkAndSweep::PerformFullGC() noexcept { 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 b54f141c195..c043b82478d 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 @@ -87,7 +87,8 @@ internal enum class ThreadStateChecker(val compilerFlag: String?) { internal enum class GCType(val compilerFlag: String?) { UNSPECIFIED(null), NOOP("-Xgc=noop"), - STMS("-Xgc=stms"); + STMS("-Xgc=stms"), + CMS("-Xgc=cms"); override fun toString() = compilerFlag?.let { "($it)" }.orEmpty() }