[K/N] Use @Escapes for all external funs with escaping arguments
This commit is contained in:
committed by
Space Team
parent
8d81fd6647
commit
4e6451c25e
@@ -6,9 +6,11 @@
|
|||||||
package kotlinx.cinterop
|
package kotlinx.cinterop
|
||||||
|
|
||||||
import kotlin.native.*
|
import kotlin.native.*
|
||||||
|
import kotlin.native.internal.Escapes
|
||||||
import kotlin.native.internal.GCUnsafeCall
|
import kotlin.native.internal.GCUnsafeCall
|
||||||
|
|
||||||
@GCUnsafeCall("Kotlin_Interop_createStablePointer")
|
@GCUnsafeCall("Kotlin_Interop_createStablePointer")
|
||||||
|
@Escapes(0b01) // any escapes into stable ref.
|
||||||
internal external fun createStablePointer(any: Any): COpaquePointer
|
internal external fun createStablePointer(any: Any): COpaquePointer
|
||||||
|
|
||||||
@GCUnsafeCall("Kotlin_Interop_disposeStablePointer")
|
@GCUnsafeCall("Kotlin_Interop_disposeStablePointer")
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ internal fun CPointer<*>.cPointerToString() = "CPointer(raw=$rawValue)"
|
|||||||
*/
|
*/
|
||||||
@ExperimentalForeignApi
|
@ExperimentalForeignApi
|
||||||
@TypedIntrinsic(IntrinsicType.INTEROP_STATIC_C_FUNCTION)
|
@TypedIntrinsic(IntrinsicType.INTEROP_STATIC_C_FUNCTION)
|
||||||
|
// function is static, so it's never heap allocated anyway; no need to use @Escapes
|
||||||
public external fun <R> staticCFunction(@VolatileLambda function: () -> R): CPointer<CFunction<() -> R>>
|
public external fun <R> staticCFunction(@VolatileLambda function: () -> R): CPointer<CFunction<() -> R>>
|
||||||
|
|
||||||
@ExperimentalForeignApi
|
@ExperimentalForeignApi
|
||||||
|
|||||||
@@ -6,11 +6,7 @@ package kotlin.native
|
|||||||
|
|
||||||
import kotlin.experimental.ExperimentalNativeApi
|
import kotlin.experimental.ExperimentalNativeApi
|
||||||
import kotlin.native.concurrent.InvalidMutabilityException
|
import kotlin.native.concurrent.InvalidMutabilityException
|
||||||
import kotlin.native.internal.ExportForCppRuntime
|
import kotlin.native.internal.*
|
||||||
import kotlin.native.internal.GCUnsafeCall
|
|
||||||
import kotlin.native.internal.UnhandledExceptionHookHolder
|
|
||||||
import kotlin.native.internal.runUnhandledExceptionHook
|
|
||||||
import kotlin.native.internal.ReportUnhandledException
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes Kotlin runtime for the current thread, if not inited already.
|
* Initializes Kotlin runtime for the current thread, if not inited already.
|
||||||
@@ -80,6 +76,7 @@ public fun getUnhandledExceptionHook(): ReportUnhandledExceptionHook? {
|
|||||||
@ExperimentalNativeApi
|
@ExperimentalNativeApi
|
||||||
@SinceKotlin("1.6")
|
@SinceKotlin("1.6")
|
||||||
@GCUnsafeCall("Kotlin_processUnhandledException")
|
@GCUnsafeCall("Kotlin_processUnhandledException")
|
||||||
|
@Escapes(0b01) // throwable may be passed to the user code via unhandled exception hook.
|
||||||
public external fun processUnhandledException(throwable: Throwable): Unit
|
public external fun processUnhandledException(throwable: Throwable): Unit
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -91,6 +88,7 @@ public external fun processUnhandledException(throwable: Throwable): Unit
|
|||||||
@ExperimentalNativeApi
|
@ExperimentalNativeApi
|
||||||
@SinceKotlin("1.6")
|
@SinceKotlin("1.6")
|
||||||
@GCUnsafeCall("Kotlin_terminateWithUnhandledException")
|
@GCUnsafeCall("Kotlin_terminateWithUnhandledException")
|
||||||
|
// No need to mark throwable as @Escapes because this function never returns.
|
||||||
public external fun terminateWithUnhandledException(throwable: Throwable): Nothing
|
public external fun terminateWithUnhandledException(throwable: Throwable): Nothing
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,14 +6,11 @@
|
|||||||
package kotlin.native.concurrent
|
package kotlin.native.concurrent
|
||||||
|
|
||||||
import kotlin.experimental.ExperimentalNativeApi
|
import kotlin.experimental.ExperimentalNativeApi
|
||||||
import kotlin.native.internal.DescribeObjectForDebugging
|
|
||||||
import kotlin.native.internal.ExportForCppRuntime
|
|
||||||
import kotlin.native.internal.GCUnsafeCall
|
|
||||||
import kotlin.native.internal.InternalForKotlinNative
|
|
||||||
import kotlin.native.internal.debugDescription
|
|
||||||
import kotlin.native.identityHashCode
|
import kotlin.native.identityHashCode
|
||||||
import kotlin.reflect.KClass
|
import kotlinx.cinterop.CPointer
|
||||||
import kotlinx.cinterop.*
|
import kotlinx.cinterop.CFunction
|
||||||
|
import kotlinx.cinterop.ExperimentalForeignApi
|
||||||
|
import kotlin.native.internal.*
|
||||||
|
|
||||||
@GCUnsafeCall("Kotlin_Any_isShareable")
|
@GCUnsafeCall("Kotlin_Any_isShareable")
|
||||||
@FreezingIsDeprecated
|
@FreezingIsDeprecated
|
||||||
@@ -38,7 +35,7 @@ external internal fun waitForAnyFuture(versionToken: Int, millis: Int): Boolean
|
|||||||
@ObsoleteWorkersApi
|
@ObsoleteWorkersApi
|
||||||
external internal fun versionToken(): Int
|
external internal fun versionToken(): Int
|
||||||
|
|
||||||
@kotlin.native.internal.ExportForCompiler
|
@ExportForCompiler
|
||||||
@ObsoleteWorkersApi
|
@ObsoleteWorkersApi
|
||||||
internal fun executeImpl(worker: Worker, mode: TransferMode, producer: () -> Any?,
|
internal fun executeImpl(worker: Worker, mode: TransferMode, producer: () -> Any?,
|
||||||
job: CPointer<CFunction<*>>): Future<Any?> =
|
job: CPointer<CFunction<*>>): Future<Any?> =
|
||||||
@@ -46,6 +43,7 @@ internal fun executeImpl(worker: Worker, mode: TransferMode, producer: () -> Any
|
|||||||
|
|
||||||
@GCUnsafeCall("Kotlin_Worker_startInternal")
|
@GCUnsafeCall("Kotlin_Worker_startInternal")
|
||||||
@ObsoleteWorkersApi
|
@ObsoleteWorkersApi
|
||||||
|
@Escapes(0b10) // name is stored in the Worker instance.
|
||||||
external internal fun startInternal(errorReporting: Boolean, name: String?): Int
|
external internal fun startInternal(errorReporting: Boolean, name: String?): Int
|
||||||
|
|
||||||
@GCUnsafeCall("Kotlin_Worker_currentInternal")
|
@GCUnsafeCall("Kotlin_Worker_currentInternal")
|
||||||
@@ -63,6 +61,7 @@ external internal fun executeInternal(
|
|||||||
|
|
||||||
@GCUnsafeCall("Kotlin_Worker_executeAfterInternal")
|
@GCUnsafeCall("Kotlin_Worker_executeAfterInternal")
|
||||||
@ObsoleteWorkersApi
|
@ObsoleteWorkersApi
|
||||||
|
@Escapes(0b10) // operation escapes into stable ref.
|
||||||
external internal fun executeAfterInternal(id: Int, operation: () -> Unit, afterMicroseconds: Long): Unit
|
external internal fun executeAfterInternal(id: Int, operation: () -> Unit, afterMicroseconds: Long): Unit
|
||||||
|
|
||||||
@GCUnsafeCall("Kotlin_Worker_processQueueInternal")
|
@GCUnsafeCall("Kotlin_Worker_processQueueInternal")
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import kotlinx.cinterop.ExperimentalForeignApi
|
|||||||
|
|
||||||
@GCUnsafeCall("Kotlin_WorkerBoundReference_create")
|
@GCUnsafeCall("Kotlin_WorkerBoundReference_create")
|
||||||
@ObsoleteWorkersApi
|
@ObsoleteWorkersApi
|
||||||
|
@Escapes(0b01) // value escapes into stable ref.
|
||||||
external private fun createWorkerBoundReference(value: Any): NativePtr
|
external private fun createWorkerBoundReference(value: Any): NativePtr
|
||||||
|
|
||||||
@GCUnsafeCall("Kotlin_WorkerBoundReference_deref")
|
@GCUnsafeCall("Kotlin_WorkerBoundReference_deref")
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ public class ObjCErrorException(
|
|||||||
@PublishedApi
|
@PublishedApi
|
||||||
@GCUnsafeCall("Kotlin_ObjCExport_trapOnUndeclaredException")
|
@GCUnsafeCall("Kotlin_ObjCExport_trapOnUndeclaredException")
|
||||||
@ExportForCppRuntime
|
@ExportForCppRuntime
|
||||||
|
// No need to mark throwable as @Escapes because this function actually never returns.
|
||||||
internal external fun trapOnUndeclaredException(exception: Throwable)
|
internal external fun trapOnUndeclaredException(exception: Throwable)
|
||||||
|
|
||||||
@ExportForCppRuntime
|
@ExportForCppRuntime
|
||||||
|
|||||||
@@ -122,5 +122,6 @@ private class CleanerImpl(
|
|||||||
|
|
||||||
|
|
||||||
@GCUnsafeCall("CreateStablePointer")
|
@GCUnsafeCall("CreateStablePointer")
|
||||||
|
@Escapes(0b01) // obj escapes into stable ref.
|
||||||
external private fun createStablePointer(obj: Any): NativePtr
|
external private fun createStablePointer(obj: Any): NativePtr
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user