Skip to content

Commit 50496c8

Browse files
committed
Remove atomic protocols
All the calls here are concrete; there's no need for conformances
1 parent f78b925 commit 50496c8

File tree

5 files changed

+5
-131
lines changed

5 files changed

+5
-131
lines changed

Sources/_LazyAtomic/AtomicValue.swift

Lines changed: 0 additions & 37 deletions
This file was deleted.

Sources/_LazyAtomic/Int.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import _LazyAtomicShims
1515

16-
extension Int: AtomicValue {
16+
extension Int {
1717
@frozen
1818
public struct AtomicRepresentation {
1919
public typealias Value = Int
@@ -43,7 +43,7 @@ where Pointee == Int.AtomicRepresentation {
4343
}
4444
}
4545

46-
extension Int.AtomicRepresentation: AtomicStorage {
46+
extension Int.AtomicRepresentation {
4747
@_semantics("atomics.requires_constant_orderings")
4848
@_transparent @_alwaysEmitIntoClient
4949
public static func atomicLoad(

Sources/_LazyAtomic/Optional.swift

Lines changed: 0 additions & 21 deletions
This file was deleted.

Sources/_LazyAtomic/Unmanaged.swift

Lines changed: 2 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -11,75 +11,7 @@
1111

1212
// THIS FILE IS PART OF A SUBSET OF https://github.com/apple/swift-atomics/
1313

14-
extension Unmanaged: AtomicValue {
15-
@frozen
16-
public struct AtomicRepresentation {
17-
public typealias Value = Unmanaged
18-
@usableFromInline internal typealias Storage = Int.AtomicRepresentation
19-
20-
@usableFromInline
21-
internal let _storage: Storage
22-
23-
@inline(__always) @_alwaysEmitIntoClient
24-
public init(_ value: Value) {
25-
self._storage = .init(Self._encode(value))
26-
}
27-
28-
@inline(__always) @_alwaysEmitIntoClient
29-
public func dispose() -> Value {
30-
Self._decode(_storage.dispose())
31-
}
32-
}
33-
}
34-
35-
extension Unmanaged.AtomicRepresentation {
36-
@_transparent @_alwaysEmitIntoClient
37-
@usableFromInline
38-
internal static func _extract(
39-
_ ptr: UnsafeMutablePointer<Self>
40-
) -> UnsafeMutablePointer<Storage> {
41-
// `Self` is layout-compatible with its only stored property.
42-
return UnsafeMutableRawPointer(ptr)
43-
.assumingMemoryBound(to: Storage.self)
44-
}
45-
46-
@_transparent @_alwaysEmitIntoClient
47-
internal static func _decode(_ bitPattern: Int) -> Value {
48-
return Unmanaged.fromOpaque(UnsafeRawPointer(bitPattern: bitPattern)!)
49-
}
50-
51-
@_transparent @_alwaysEmitIntoClient
52-
internal static func _encode(_ value: Value) -> Int {
53-
return Int(bitPattern: value.toOpaque())
54-
}
55-
}
56-
57-
extension Unmanaged.AtomicRepresentation: AtomicStorage {
58-
@_semantics("atomics.requires_constant_orderings")
59-
@_transparent @_alwaysEmitIntoClient
60-
public static func atomicLoad(
61-
at pointer: UnsafeMutablePointer<Self>
62-
) -> Value {
63-
let encoded = Storage.atomicLoad(at: _extract(pointer))
64-
return _decode(encoded)
65-
}
66-
67-
@_semantics("atomics.requires_constant_orderings")
68-
@_transparent @_alwaysEmitIntoClient
69-
public static func atomicCompareExchange(
70-
expected: Value,
71-
desired: Value,
72-
at pointer: UnsafeMutablePointer<Self>
73-
) -> (exchanged: Bool, original: Value) {
74-
let (exchanged, original) = Storage.atomicCompareExchange(
75-
expected: _encode(expected),
76-
desired: _encode(desired),
77-
at: _extract(pointer))
78-
return (exchanged, _decode(original))
79-
}
80-
}
81-
82-
extension Unmanaged: AtomicOptionalWrappable {
14+
extension Unmanaged {
8315
@frozen
8416
public struct AtomicOptionalRepresentation {
8517
public typealias Value = Unmanaged?
@@ -126,7 +58,7 @@ extension Unmanaged.AtomicOptionalRepresentation {
12658
}
12759
}
12860

129-
extension Unmanaged.AtomicOptionalRepresentation: AtomicStorage {
61+
extension Unmanaged.AtomicOptionalRepresentation {
13062
@_semantics("atomics.requires_constant_orderings")
13163
@_transparent @_alwaysEmitIntoClient
13264
public static func atomicLoad(

Sources/_LazyAtomic/UnsafeAtomicLazyReference.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public struct UnsafeAtomicLazyReference<Instance: AnyObject> {
1616
public typealias Value = Instance?
1717

1818
@usableFromInline
19-
internal typealias _Rep = Optional<Unmanaged<Instance>>.AtomicRepresentation
19+
internal typealias _Rep = Unmanaged<Instance>.AtomicOptionalRepresentation
2020

2121
@usableFromInline
2222
internal let _ptr: UnsafeMutablePointer<_Rep>

0 commit comments

Comments
 (0)