@@ -23,33 +23,24 @@ import Bionic
23
23
#error("Unsupported platform")
24
24
#endif
25
25
26
- @usableFromInline
27
- internal class Lock {
26
+ internal struct Lock {
28
27
#if canImport(Darwin)
29
- @usableFromInline
30
28
typealias Primitive = os_unfair_lock
31
29
#elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
32
30
typealias Primitive = pthread_mutex_t
33
31
#elseif canImport(WinSDK)
34
- @usableFromInline
35
32
typealias Primitive = SRWLOCK
36
33
#else
37
34
#error("Unsupported platform")
38
35
#endif
39
36
40
- @usableFromInline
41
37
typealias PlatformLock = UnsafeMutablePointer < Primitive >
42
- @usableFromInline
43
38
let platformLock : PlatformLock
44
39
45
40
private init ( _ platformLock: PlatformLock ) {
46
41
self . platformLock = platformLock
47
42
}
48
-
49
- deinit {
50
- self . deinitialize ( )
51
- }
52
-
43
+
53
44
fileprivate static func initialize( _ platformLock: PlatformLock ) {
54
45
#if canImport(Darwin)
55
46
platformLock. initialize ( to: os_unfair_lock ( ) )
@@ -71,8 +62,7 @@ internal class Lock {
71
62
platformLock. deinitialize ( count: 1 )
72
63
}
73
64
74
- @usableFromInline
75
- static func lock( _ platformLock: PlatformLock ) {
65
+ fileprivate static func lock( _ platformLock: PlatformLock ) {
76
66
#if canImport(Darwin)
77
67
os_unfair_lock_lock ( platformLock)
78
68
#elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
@@ -84,8 +74,7 @@ internal class Lock {
84
74
#endif
85
75
}
86
76
87
- @usableFromInline
88
- static func unlock( _ platformLock: PlatformLock ) {
77
+ fileprivate static func unlock( _ platformLock: PlatformLock ) {
89
78
#if canImport(Darwin)
90
79
os_unfair_lock_unlock ( platformLock)
91
80
#elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
@@ -109,12 +98,10 @@ internal class Lock {
109
98
platformLock. deallocate ( )
110
99
}
111
100
112
- @inlinable
113
101
func lock( ) {
114
102
Lock . lock ( platformLock)
115
103
}
116
104
117
- @inlinable
118
105
func unlock( ) {
119
106
Lock . unlock ( platformLock)
120
107
}
@@ -127,7 +114,6 @@ internal class Lock {
127
114
///
128
115
/// - Parameter body: The block to execute while holding the lock.
129
116
/// - Returns: The value returned by the block.
130
- @inlinable
131
117
func withLock< T> ( _ body: ( ) throws -> T ) rethrows -> T {
132
118
self . lock ( )
133
119
defer {
@@ -142,17 +128,14 @@ internal class Lock {
142
128
}
143
129
}
144
130
145
- @usableFromInline
146
131
struct ManagedCriticalState < State> {
147
- @usableFromInline
148
- final class LockedBuffer : ManagedBuffer < State , Lock . Primitive > {
132
+ private final class LockedBuffer : ManagedBuffer < State , Lock . Primitive > {
149
133
deinit {
150
134
withUnsafeMutablePointerToElements { Lock . deinitialize ( $0) }
151
135
}
152
136
}
153
137
154
- @usableFromInline
155
- let buffer : ManagedBuffer < State , Lock . Primitive >
138
+ private let buffer : ManagedBuffer < State , Lock . Primitive >
156
139
157
140
init ( _ initial: State ) {
158
141
buffer = LockedBuffer . create ( minimumCapacity: 1 ) { buffer in
@@ -161,7 +144,6 @@ struct ManagedCriticalState<State> {
161
144
}
162
145
}
163
146
164
- @inlinable
165
147
func withCriticalRegion< R> ( _ critical: ( inout State ) throws -> R ) rethrows -> R {
166
148
try buffer. withUnsafeMutablePointers { header, lock in
167
149
Lock . lock ( lock)
0 commit comments