diff options
author | mvicsokolova <maria.sokolova@jetbrains.com> | 2023-06-18 23:00:03 +0200 |
---|---|---|
committer | mvicsokolova <82594708+mvicsokolova@users.noreply.github.com> | 2023-08-15 15:10:32 +0200 |
commit | 203626869e6a1199566d6cef9c3b5cb0dea76d82 (patch) | |
tree | 0f21ccab38a104d592d9467d446fb4304d74c68c | |
parent | dec5b9405b9842932e178c92dff5ce793287f262 (diff) | |
download | kotlinx.atomicfu-203626869e6a1199566d6cef9c3b5cb0dea76d82.tar.gz |
Update native atomics implementation
This commit replaces deprecated native atomics from kotlin.native.concurrent package with new atomics from kotlin.concurrent, because deprecation levels of native atomics were updated for 1.9.20 (see KT-58123)
-rw-r--r-- | atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/AtomicFU.kt | 16 | ||||
-rw-r--r-- | atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt | 8 |
2 files changed, 14 insertions, 10 deletions
diff --git a/atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/AtomicFU.kt b/atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/AtomicFU.kt index 4f79de3..4751266 100644 --- a/atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/AtomicFU.kt +++ b/atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/AtomicFU.kt @@ -12,9 +12,9 @@ package kotlinx.atomicfu -import kotlin.native.concurrent.AtomicInt as KAtomicInt -import kotlin.native.concurrent.AtomicLong as KAtomicLong -import kotlin.native.concurrent.FreezableAtomicReference as KAtomicRef +import kotlin.concurrent.AtomicInt as KAtomicInt +import kotlin.concurrent.AtomicLong as KAtomicLong +import kotlin.concurrent.AtomicReference as KAtomicRef import kotlin.native.concurrent.isFrozen import kotlin.native.concurrent.freeze import kotlin.reflect.KProperty @@ -62,7 +62,7 @@ public actual value class AtomicRef<T> internal constructor(@PublishedApi intern while (true) { val cur = a.value if (cur === value) return cur - if (a.compareAndSwap(cur, value) === cur) return cur + if (a.compareAndExchange(cur, value) === cur) return cur } } @@ -166,12 +166,12 @@ public actual value class AtomicLong internal constructor(@PublishedApi internal } } - public actual inline fun getAndIncrement(): Long = a.addAndGet(1) - 1 - public actual inline fun getAndDecrement(): Long = a.addAndGet(-1) + 1 + public actual inline fun getAndIncrement(): Long = a.addAndGet(1L) - 1 + public actual inline fun getAndDecrement(): Long = a.addAndGet(-1L) + 1 public actual inline fun getAndAdd(delta: Long): Long = a.addAndGet(delta) - delta public actual inline fun addAndGet(delta: Long): Long = a.addAndGet(delta) - public actual inline fun incrementAndGet(): Long = a.addAndGet(1) - public actual inline fun decrementAndGet(): Long = a.addAndGet(-1) + public actual inline fun incrementAndGet(): Long = a.addAndGet(1L) + public actual inline fun decrementAndGet(): Long = a.addAndGet(-1L) public actual inline operator fun plusAssign(delta: Long) { getAndAdd(delta) } public actual inline operator fun minusAssign(delta: Long) { getAndAdd(-delta) } diff --git a/atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt b/atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt index 76e5d7a..968bbdf 100644 --- a/atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt +++ b/atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt @@ -3,9 +3,13 @@ package kotlinx.atomicfu.locks import platform.posix.* import interop.* import kotlinx.cinterop.* -import kotlin.native.concurrent.* +import kotlin.concurrent.* import kotlin.native.internal.NativePtr import kotlinx.atomicfu.locks.SynchronizedObject.Status.* +import kotlin.concurrent.AtomicNativePtr +import kotlin.concurrent.AtomicReference +import kotlin.native.SharedImmutable +import kotlin.native.concurrent.* public actual open class SynchronizedObject { @@ -217,4 +221,4 @@ class MutexPool(capacity: Int) { return oldTop } } -}
\ No newline at end of file +} |