Skip to content

Commit a8306a0

Browse files
mvicsokolovawoainikk
authored andcommitted
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 7697fff commit a8306a0

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
@@ -6,9 +6,9 @@
66

77
package kotlinx.atomicfu
88

9-
import kotlin.native.concurrent.AtomicInt as KAtomicInt
10-
import kotlin.native.concurrent.AtomicLong as KAtomicLong
11-
import kotlin.native.concurrent.FreezableAtomicReference as KAtomicRef
9+
import kotlin.concurrent.AtomicInt as KAtomicInt
10+
import kotlin.concurrent.AtomicLong as KAtomicLong
11+
import kotlin.concurrent.AtomicReference as KAtomicRef
1212
import kotlin.native.concurrent.isFrozen
1313
import kotlin.native.concurrent.freeze
1414
import kotlin.reflect.KProperty
@@ -53,7 +53,7 @@ public actual value class AtomicRef<T> internal constructor(@PublishedApi intern
5353
while (true) {
5454
val cur = a.value
5555
if (cur === value) return cur
56-
if (a.compareAndSwap(cur, value) === cur) return cur
56+
if (a.compareAndExchange(cur, value) === cur) return cur
5757
}
5858
}
5959

@@ -155,12 +155,12 @@ public actual value class AtomicLong internal constructor(@PublishedApi internal
155155
}
156156
}
157157

158-
public actual inline fun getAndIncrement(): Long = a.addAndGet(1) - 1
159-
public actual inline fun getAndDecrement(): Long = a.addAndGet(-1) + 1
158+
public actual inline fun getAndIncrement(): Long = a.addAndGet(1L) - 1
159+
public actual inline fun getAndDecrement(): Long = a.addAndGet(-1L) + 1
160160
public actual inline fun getAndAdd(delta: Long): Long = a.addAndGet(delta) - delta
161161
public actual inline fun addAndGet(delta: Long): Long = a.addAndGet(delta)
162-
public actual inline fun incrementAndGet(): Long = a.addAndGet(1)
163-
public actual inline fun decrementAndGet(): Long = a.addAndGet(-1)
162+
public actual inline fun incrementAndGet(): Long = a.addAndGet(1L)
163+
public actual inline fun decrementAndGet(): Long = a.addAndGet(-1L)
164164

165165
public actual inline operator fun plusAssign(delta: Long) { getAndAdd(delta) }
166166
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)