aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormvicsokolova <maria.sokolova@jetbrains.com>2023-06-18 23:00:03 +0200
committermvicsokolova <82594708+mvicsokolova@users.noreply.github.com>2023-08-15 15:10:32 +0200
commit203626869e6a1199566d6cef9c3b5cb0dea76d82 (patch)
tree0f21ccab38a104d592d9467d446fb4304d74c68c
parentdec5b9405b9842932e178c92dff5ce793287f262 (diff)
downloadkotlinx.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.kt16
-rw-r--r--atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt8
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
+}