[K/N] Move kotlin.native.internal.Debugging into kotlin.native.runtime
As a part of efforts to stabilize Native stdlib #KT-55765.
This commit is contained in:
@@ -2749,6 +2749,7 @@ standaloneTest("custom_hook") {
|
||||
}
|
||||
expectedExitStatusChecker = { it != 0 }
|
||||
source = "runtime/exceptions/custom_hook.kt"
|
||||
flags = ['-opt-in=kotlin.native.internal.InternalForKotlinNative']
|
||||
}
|
||||
|
||||
standaloneTest("custom_hook_memory_leak") {
|
||||
@@ -4709,6 +4710,7 @@ interopTest("interop_threadStates") {
|
||||
disabled = (project.testTarget == 'wasm32') || // No interop for wasm yet.
|
||||
!isExperimentalMM // No thread state switching in the legacy MM.
|
||||
source = "interop/threadStates/threadStates.kt"
|
||||
flags = ['-opt-in=kotlin.native.internal.InternalForKotlinNative']
|
||||
interop = "threadStates"
|
||||
}
|
||||
|
||||
@@ -4717,6 +4719,7 @@ interopTest("interop_threadStates_callbacksWithExceptions") {
|
||||
!isExperimentalMM // No thread state switching in the legacy MM.
|
||||
source = "interop/threadStates/callbacksWithExceptions.kt"
|
||||
interop = "threadStates"
|
||||
flags = ['-opt-in=kotlin.native.internal.InternalForKotlinNative']
|
||||
}
|
||||
|
||||
interopTest("interop_threadStates_unhandledException") {
|
||||
@@ -4726,6 +4729,7 @@ interopTest("interop_threadStates_unhandledException") {
|
||||
interop = "threadStates"
|
||||
outputChecker = { it.contains("Error. Runnable state: true") }
|
||||
expectedExitStatusChecker = { it != 0 }
|
||||
flags = ['-opt-in=kotlin.native.internal.InternalForKotlinNative']
|
||||
}
|
||||
|
||||
interopTest("interop_threadStates_unhandledExceptionInForeignThread") {
|
||||
@@ -4735,6 +4739,7 @@ interopTest("interop_threadStates_unhandledExceptionInForeignThread") {
|
||||
interop = "threadStates"
|
||||
outputChecker = { it.contains("Error. Runnable state: true") }
|
||||
expectedExitStatusChecker = { it != 0 }
|
||||
flags = ['-opt-in=kotlin.native.internal.InternalForKotlinNative']
|
||||
}
|
||||
|
||||
interopTest("interop_withSpaces") {
|
||||
@@ -5408,6 +5413,7 @@ dynamicTest("produce_dynamic_unhandledException") {
|
||||
clangTool = "clang++"
|
||||
expectedExitStatusChecker = { it != 0 }
|
||||
outputChecker = { str -> str.startsWith("Kotlin hook: Exception. Runnable state: true") }
|
||||
flags = ['-opt-in=kotlin.native.internal.InternalForKotlinNative']
|
||||
}
|
||||
|
||||
dynamicTest("interop_concurrentRuntime") {
|
||||
|
||||
@@ -11,7 +11,7 @@ fun main() {
|
||||
|
||||
// TODO: the test used to work with forceCheckedShutdown,
|
||||
// but it is broken now. Revisit after it is fixed.
|
||||
// kotlin.native.internal.Debugging.forceCheckedShutdown = true
|
||||
// kotlin.native.runtime.Debugging.forceCheckedShutdown = true
|
||||
Platform.isCleanersLeakCheckerActive = true
|
||||
|
||||
val f = Foo()
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
@file:OptIn(kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import leakMemory.*
|
||||
import kotlin.native.concurrent.*
|
||||
import kotlin.native.Platform
|
||||
@@ -16,7 +18,7 @@ fun ensureInititalized() {
|
||||
|
||||
fun main() {
|
||||
Platform.isMemoryLeakCheckerActive = true
|
||||
kotlin.native.internal.Debugging.forceCheckedShutdown = true
|
||||
kotlin.native.runtime.Debugging.forceCheckedShutdown = true
|
||||
assertTrue(global.value == 0)
|
||||
// Created a thread, made sure Kotlin is initialized there.
|
||||
test_RunInNewThread(staticCFunction(::ensureInititalized))
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
@file:OptIn(kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import leakMemory.*
|
||||
import kotlin.native.concurrent.*
|
||||
import kotlin.native.Platform
|
||||
@@ -16,7 +18,7 @@ fun ensureInititalized() {
|
||||
|
||||
fun main() {
|
||||
Platform.isMemoryLeakCheckerActive = true
|
||||
kotlin.native.internal.Debugging.forceCheckedShutdown = false
|
||||
kotlin.native.runtime.Debugging.forceCheckedShutdown = false
|
||||
assertTrue(global.value == 0)
|
||||
// Created a thread, made sure Kotlin is initialized there.
|
||||
test_RunInNewThread(staticCFunction(::ensureInititalized))
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
@file:OptIn(kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import objclib.*
|
||||
import kotlin.native.concurrent.*
|
||||
import kotlinx.cinterop.*
|
||||
@@ -19,6 +21,6 @@ fun main() {
|
||||
if (Platform.memoryModel == MemoryModel.EXPERIMENTAL) {
|
||||
// Experimental MM by default doesn't run GC neither on worker termination nor on program exit.
|
||||
// Enforce GC on program exit:
|
||||
kotlin.native.internal.Debugging.forceCheckedShutdown = true
|
||||
kotlin.native.runtime.Debugging.forceCheckedShutdown = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import kotlin.test.*
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
// Test relies on full deinitialization at shutdown.
|
||||
kotlin.native.internal.Debugging.forceCheckedShutdown = true
|
||||
kotlin.native.runtime.Debugging.forceCheckedShutdown = true
|
||||
autoreleasepool {
|
||||
run()
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import kotlin.test.*
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
// Test relies on full deinitialization at shutdown.
|
||||
kotlin.native.internal.Debugging.forceCheckedShutdown = true
|
||||
kotlin.native.runtime.Debugging.forceCheckedShutdown = true
|
||||
autoreleasepool {
|
||||
run()
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
import kotlin.native.internal.Debugging
|
||||
@file:OptIn(kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import kotlin.native.runtime.Debugging
|
||||
import kotlin.test.*
|
||||
import kotlinx.cinterop.staticCFunction
|
||||
import threadStates.*
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
import kotlin.native.internal.Debugging
|
||||
@file:OptIn(kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import kotlin.native.runtime.Debugging
|
||||
import kotlin.test.*
|
||||
import kotlinx.cinterop.*
|
||||
import threadStates.*
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
@file:OptIn(FreezingIsDeprecated::class, ExperimentalStdlibApi::class)
|
||||
@file:OptIn(FreezingIsDeprecated::class, ExperimentalStdlibApi::class, kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import kotlin.native.concurrent.*
|
||||
import kotlin.native.internal.Debugging
|
||||
import kotlin.native.runtime.Debugging
|
||||
import kotlinx.cinterop.staticCFunction
|
||||
import threadStates.*
|
||||
|
||||
|
||||
+2
-2
@@ -2,10 +2,10 @@
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
@file:OptIn(FreezingIsDeprecated::class, ExperimentalStdlibApi::class)
|
||||
@file:OptIn(FreezingIsDeprecated::class, ExperimentalStdlibApi::class, kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import kotlin.native.concurrent.*
|
||||
import kotlin.native.internal.Debugging
|
||||
import kotlin.native.runtime.Debugging
|
||||
import kotlinx.cinterop.staticCFunction
|
||||
import threadStates.*
|
||||
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
@file:OptIn(FreezingIsDeprecated::class, ExperimentalStdlibApi::class)
|
||||
@file:OptIn(FreezingIsDeprecated::class, ExperimentalStdlibApi::class, kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import kotlin.native.concurrent.*
|
||||
import kotlin.native.internal.*
|
||||
import kotlin.native.runtime.Debugging
|
||||
|
||||
fun setHookAndThrow() {
|
||||
val hook = { throwable: Throwable ->
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the LICENSE file.
|
||||
*/
|
||||
@file:OptIn(FreezingIsDeprecated::class, ExperimentalStdlibApi::class)
|
||||
@file:OptIn(FreezingIsDeprecated::class, ExperimentalStdlibApi::class, kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
import kotlin.native.concurrent.*
|
||||
import kotlin.native.internal.*
|
||||
import kotlin.native.runtime.Debugging
|
||||
|
||||
fun mainLegacyMM() {
|
||||
val wrong = "wrong"
|
||||
|
||||
@@ -7,13 +7,14 @@ package kotlin.native.internal
|
||||
/*
|
||||
* Internal utilities for debugging K/N compiler and runtime.
|
||||
*/
|
||||
public object Debugging {
|
||||
public var forceCheckedShutdown: Boolean
|
||||
get() = Debugging_getForceCheckedShutdown()
|
||||
set(value) = Debugging_setForceCheckedShutdown(value)
|
||||
|
||||
public val isThreadStateRunnable: Boolean
|
||||
get() = Debugging_isThreadStateRunnable()
|
||||
@OptIn(kotlin.native.runtime.NativeRuntimeApi::class)
|
||||
@Deprecated("Use kotlin.native.runtime.Debugging instead.", ReplaceWith("Debugging", "kotlin.native.runtime.Debugging"))
|
||||
@DeprecatedSinceKotlin(warningSince = "1.9")
|
||||
public object Debugging {
|
||||
public var forceCheckedShutdown: Boolean by kotlin.native.runtime.Debugging::forceCheckedShutdown
|
||||
|
||||
public val isThreadStateRunnable: Boolean by kotlin.native.runtime.Debugging::isThreadStateRunnable
|
||||
}
|
||||
|
||||
@GCUnsafeCall("Kotlin_Debugging_isPermanent")
|
||||
@@ -23,12 +24,3 @@ public external fun Any.isPermanent() : Boolean
|
||||
@GCUnsafeCall("Kotlin_Debugging_isLocal")
|
||||
@InternalForKotlinNative
|
||||
public external fun Any.isLocal() : Boolean
|
||||
|
||||
@GCUnsafeCall("Kotlin_Debugging_getForceCheckedShutdown")
|
||||
private external fun Debugging_getForceCheckedShutdown(): Boolean
|
||||
|
||||
@GCUnsafeCall("Kotlin_Debugging_setForceCheckedShutdown")
|
||||
private external fun Debugging_setForceCheckedShutdown(value: Boolean): Unit
|
||||
|
||||
@GCUnsafeCall("Kotlin_Debugging_isThreadStateRunnable")
|
||||
private external fun Debugging_isThreadStateRunnable(): Boolean
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package kotlin.native.runtime
|
||||
|
||||
import kotlin.native.internal.GCUnsafeCall
|
||||
import kotlin.native.internal.InternalForKotlinNative
|
||||
|
||||
/**
|
||||
* __Note__: this API is unstable and may change in any release.
|
||||
*
|
||||
* A set of utilities for debugging Kotlin/Native runtime.
|
||||
*/
|
||||
@NativeRuntimeApi
|
||||
@SinceKotlin("1.9")
|
||||
public object Debugging {
|
||||
/**
|
||||
* Run full checked deinitialization on shutdown.
|
||||
*
|
||||
* Make sure that after exiting `main()` only a single thread with Kotlin runtime remains.
|
||||
* Run GC collecting everything including globals.
|
||||
*
|
||||
* When enabled together with [Platform.isCleanersLeakCheckerActive] additionally checks that no cleaners get executed after `main()`
|
||||
*/
|
||||
public var forceCheckedShutdown: Boolean
|
||||
get() = Debugging_getForceCheckedShutdown()
|
||||
set(value) = Debugging_setForceCheckedShutdown(value)
|
||||
|
||||
/**
|
||||
* Whether the current thread's state allows running Kotlin code.
|
||||
*
|
||||
* Used by Kotlin/Native internal tests.
|
||||
* If it returns `false`, it's a bug.
|
||||
*/
|
||||
@InternalForKotlinNative
|
||||
public val isThreadStateRunnable: Boolean
|
||||
get() = Debugging_isThreadStateRunnable()
|
||||
}
|
||||
|
||||
|
||||
@GCUnsafeCall("Kotlin_Debugging_getForceCheckedShutdown")
|
||||
private external fun Debugging_getForceCheckedShutdown(): Boolean
|
||||
|
||||
@GCUnsafeCall("Kotlin_Debugging_setForceCheckedShutdown")
|
||||
private external fun Debugging_setForceCheckedShutdown(value: Boolean): Unit
|
||||
|
||||
@GCUnsafeCall("Kotlin_Debugging_isThreadStateRunnable")
|
||||
private external fun Debugging_isThreadStateRunnable(): Boolean
|
||||
Reference in New Issue
Block a user