@@ -2092,144 +2092,7 @@ extension UInt.AtomicRepresentation: AtomicIntegerStorage {
20922092
20932093
20942094
2095- #if (compiler(>=5.9) && _pointerBitWidth(_32)) || (compiler(<5.9) && (arch(i386) || arch(arm) || arch(arm64_32) || arch(wasm32)))
2096- extension DoubleWord : AtomicValue {
2097- @frozen
2098- public struct AtomicRepresentation {
2099- public typealias Value = DoubleWord
2100-
2101- #if ATOMICS_NATIVE_BUILTINS
2102- @usableFromInline
2103- internal typealias _Storage = Int64
2104- #else
2105- @usableFromInline
2106- internal typealias _Storage = _AtomicInt64Storage
2107- #endif
2108-
2109- @usableFromInline
2110- internal var _storage : _Storage
2111-
2112- @inline ( __always) @_alwaysEmitIntoClient
2113- public init ( _ value: Value ) {
2114- #if ATOMICS_NATIVE_BUILTINS
2115- _storage = unsafeBitCast ( value, to: Int64 . self)
2116- #else
2117- _storage = _sa_prepare_Int64 ( unsafeBitCast ( value, to: Int64 . self) )
2118- #endif
2119- }
2120-
2121- @inline ( __always) @_alwaysEmitIntoClient
2122- public func dispose( ) -> Value {
2123- #if ATOMICS_NATIVE_BUILTINS
2124- return unsafeBitCast ( _storage, to: DoubleWord . self)
2125- #else
2126- let v = _sa_dispose_Int64 ( _storage)
2127- return unsafeBitCast ( v, to: DoubleWord . self)
2128- #endif
2129- }
2130- }
2131- }
2132-
2133- extension UnsafeMutablePointer
2134- where Pointee == DoubleWord . AtomicRepresentation {
2135- @inlinable @inline ( __always)
2136- internal var _extract : UnsafeMutablePointer < Pointee . _Storage > {
2137- // `DoubleWord.AtomicRepresentation` is layout-compatible with
2138- // its only stored property.
2139- UnsafeMutableRawPointer ( self ) . assumingMemoryBound ( to: Pointee . _Storage. self)
2140- }
2141- }
2142-
2143- extension DoubleWord . AtomicRepresentation : AtomicStorage {
2144- @_semantics ( " atomics.requires_constant_orderings " )
2145- @_transparent @_alwaysEmitIntoClient
2146- public static func atomicLoad(
2147- at pointer: UnsafeMutablePointer < Self > ,
2148- ordering: AtomicLoadOrdering
2149- ) -> DoubleWord {
2150- let r = pointer. _extract. _atomicLoad ( ordering: ordering)
2151- return unsafeBitCast ( r, to: DoubleWord . self)
2152- }
21532095
2154- @_semantics ( " atomics.requires_constant_orderings " )
2155- @_transparent @_alwaysEmitIntoClient
2156- public static func atomicStore(
2157- _ desired: DoubleWord ,
2158- at pointer: UnsafeMutablePointer < Self > ,
2159- ordering: AtomicStoreOrdering
2160- ) {
2161- pointer. _extract. _atomicStore (
2162- unsafeBitCast ( desired, to: Int64 . self) ,
2163- ordering: ordering)
2164- }
2165-
2166- @_semantics ( " atomics.requires_constant_orderings " )
2167- @_transparent @_alwaysEmitIntoClient
2168- public static func atomicExchange(
2169- _ desired: DoubleWord ,
2170- at pointer: UnsafeMutablePointer < Self > ,
2171- ordering: AtomicUpdateOrdering
2172- ) -> DoubleWord {
2173- let r = pointer. _extract. _atomicExchange (
2174- unsafeBitCast ( desired, to: Int64 . self) ,
2175- ordering: ordering)
2176- return unsafeBitCast ( r, to: DoubleWord . self)
2177- }
2178-
2179- @_semantics ( " atomics.requires_constant_orderings " )
2180- @_transparent @_alwaysEmitIntoClient
2181- public static func atomicCompareExchange(
2182- expected: DoubleWord ,
2183- desired: DoubleWord ,
2184- at pointer: UnsafeMutablePointer < Self > ,
2185- ordering: AtomicUpdateOrdering
2186- ) -> ( exchanged: Bool , original: DoubleWord ) {
2187- let r = pointer. _extract. _atomicCompareExchange (
2188- expected: unsafeBitCast ( expected, to: Int64 . self) ,
2189- desired: unsafeBitCast ( desired, to: Int64 . self) ,
2190- ordering: ordering)
2191- return ( r. exchanged, unsafeBitCast ( r. original, to: DoubleWord . self) )
2192- }
2193-
2194- @_semantics ( " atomics.requires_constant_orderings " )
2195- @_transparent @_alwaysEmitIntoClient
2196- public static func atomicCompareExchange(
2197- expected: DoubleWord ,
2198- desired: DoubleWord ,
2199- at pointer: UnsafeMutablePointer < Self > ,
2200- successOrdering: AtomicUpdateOrdering ,
2201- failureOrdering: AtomicLoadOrdering
2202- ) -> ( exchanged: Bool , original: DoubleWord ) {
2203- let r = pointer. _extract. _atomicCompareExchange (
2204- expected: unsafeBitCast ( expected, to: Int64 . self) ,
2205- desired: unsafeBitCast ( desired, to: Int64 . self) ,
2206- successOrdering: successOrdering,
2207- failureOrdering: failureOrdering)
2208- return ( r. exchanged, unsafeBitCast ( r. original, to: DoubleWord . self) )
2209- }
2210-
2211- @_semantics ( " atomics.requires_constant_orderings " )
2212- @_transparent @_alwaysEmitIntoClient
2213- public static func atomicWeakCompareExchange(
2214- expected: DoubleWord ,
2215- desired: DoubleWord ,
2216- at pointer: UnsafeMutablePointer < Self > ,
2217- successOrdering: AtomicUpdateOrdering ,
2218- failureOrdering: AtomicLoadOrdering
2219- ) -> ( exchanged: Bool , original: DoubleWord ) {
2220- let r = pointer. _extract. _atomicWeakCompareExchange (
2221- expected: unsafeBitCast ( expected, to: Int64 . self) ,
2222- desired: unsafeBitCast ( desired, to: Int64 . self) ,
2223- successOrdering: successOrdering,
2224- failureOrdering: failureOrdering)
2225- return ( r. exchanged, unsafeBitCast ( r. original, to: DoubleWord . self) )
2226- }
2227- }
2228-
2229-
2230-
2231-
2232- #else /* (compiler(>=5.9) && _pointerBitWidth(_32)) || (compiler(<5.9) && (arch(i386) || arch(arm) || arch(arm64_32) || arch(wasm32))) */
22332096extension DoubleWord : AtomicValue {
22342097 @frozen
22352098 public struct AtomicRepresentation {
@@ -2363,5 +2226,5 @@ extension DoubleWord.AtomicRepresentation: AtomicStorage {
23632226 }
23642227}
23652228
2366- #endif /* (compiler(>=5.9) && _pointerBitWidth(_32)) || (compiler(<5.9) && (arch(i386) || arch(arm) || arch(arm64_32) || arch(wasm32))) */
2229+
23672230
0 commit comments