Skip to content

Commit cf35e92

Browse files
committed
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) NOTE: this commit is not present in develop branch, because new kotlin.concurrent atomics are only available since Kotlin 1.9.0. IT SHOULD BE REMOVED after kotlinx.atomicfu updates Kotlin version to 1.9.0 (#313)
1 parent dec5b94 commit cf35e92

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/AtomicFU.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212

1313
package kotlinx.atomicfu
1414

15-
import kotlin.native.concurrent.AtomicInt as KAtomicInt
16-
import kotlin.native.concurrent.AtomicLong as KAtomicLong
17-
import kotlin.native.concurrent.FreezableAtomicReference as KAtomicRef
15+
import kotlin.concurrent.AtomicInt as KAtomicInt
16+
import kotlin.concurrent.AtomicLong as KAtomicLong
17+
import kotlin.concurrent.AtomicReference as KAtomicRef
1818
import kotlin.native.concurrent.isFrozen
1919
import kotlin.native.concurrent.freeze
2020
import kotlin.reflect.KProperty
@@ -62,7 +62,7 @@ public actual value class AtomicRef<T> internal constructor(@PublishedApi intern
6262
while (true) {
6363
val cur = a.value
6464
if (cur === value) return cur
65-
if (a.compareAndSwap(cur, value) === cur) return cur
65+
if (a.compareAndExchange(cur, value) === cur) return cur
6666
}
6767
}
6868

@@ -166,12 +166,12 @@ public actual value class AtomicLong internal constructor(@PublishedApi internal
166166
}
167167
}
168168

169-
public actual inline fun getAndIncrement(): Long = a.addAndGet(1) - 1
170-
public actual inline fun getAndDecrement(): Long = a.addAndGet(-1) + 1
169+
public actual inline fun getAndIncrement(): Long = a.addAndGet(1L) - 1
170+
public actual inline fun getAndDecrement(): Long = a.addAndGet(-1L) + 1
171171
public actual inline fun getAndAdd(delta: Long): Long = a.addAndGet(delta) - delta
172172
public actual inline fun addAndGet(delta: Long): Long = a.addAndGet(delta)
173-
public actual inline fun incrementAndGet(): Long = a.addAndGet(1)
174-
public actual inline fun decrementAndGet(): Long = a.addAndGet(-1)
173+
public actual inline fun incrementAndGet(): Long = a.addAndGet(1L)
174+
public actual inline fun decrementAndGet(): Long = a.addAndGet(-1L)
175175

176176
public actual inline operator fun plusAssign(delta: Long) { getAndAdd(delta) }
177177
public actual inline operator fun minusAssign(delta: Long) { getAndAdd(-delta) }

atomicfu/src/nativeMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ package kotlinx.atomicfu.locks
33
import platform.posix.*
44
import interop.*
55
import kotlinx.cinterop.*
6-
import kotlin.native.concurrent.*
6+
import kotlin.concurrent.*
77
import kotlin.native.internal.NativePtr
88
import kotlinx.atomicfu.locks.SynchronizedObject.Status.*
9+
import kotlin.concurrent.AtomicNativePtr
10+
import kotlin.concurrent.AtomicReference
11+
import kotlin.native.SharedImmutable
12+
import kotlin.native.concurrent.*
913

1014
public actual open class SynchronizedObject {
1115

@@ -217,4 +221,4 @@ class MutexPool(capacity: Int) {
217221
return oldTop
218222
}
219223
}
220-
}
224+
}

0 commit comments

Comments
 (0)