@@ -48,10 +48,10 @@ public struct HeapObject {
4848
4949/// Forward declarations of C functions
5050
51- @_silgen_name ( " posix_memalign " )
51+ @_extern ( c , " posix_memalign " )
5252func posix_memalign( _: UnsafeMutablePointer < UnsafeMutableRawPointer ? > , _: Int , _: Int ) -> CInt
5353
54- @_silgen_name ( " free " )
54+ @_extern ( c , " free " )
5555func free( _ p: Builtin . RawPointer )
5656
5757
@@ -81,38 +81,58 @@ public func swift_slowDealloc(_ ptr: UnsafeMutableRawPointer, _ size: Int, _ ali
8181 free ( ptr. _rawValue)
8282}
8383
84- @_silgen_name ( " swift_allocObject " )
85- public func swift_allocObject( metadata: UnsafeMutablePointer < ClassMetadata > , requiredSize: Int , requiredAlignmentMask: Int ) -> UnsafeMutablePointer < HeapObject > {
84+ @_cdecl ( " swift_allocObject " )
85+ public func swift_allocObject( metadata: Builtin . RawPointer , requiredSize: Int , requiredAlignmentMask: Int ) -> Builtin . RawPointer {
86+ return swift_allocObject ( metadata: UnsafeMutablePointer < ClassMetadata > ( metadata) , requiredSize: requiredSize, requiredAlignmentMask: requiredAlignmentMask) . _rawValue
87+ }
88+
89+ func swift_allocObject( metadata: UnsafeMutablePointer < ClassMetadata > , requiredSize: Int , requiredAlignmentMask: Int ) -> UnsafeMutablePointer < HeapObject > {
8690 let p = swift_slowAlloc ( requiredSize, requiredAlignmentMask) !
8791 let object = p. assumingMemoryBound ( to: HeapObject . self)
8892 _swift_embedded_set_heap_object_metadata_pointer ( object, metadata)
8993 object. pointee. refcount = 1
9094 return object
9195}
9296
93- @_silgen_name ( " swift_deallocObject " )
94- public func swift_deallocObject( object: UnsafeMutablePointer < HeapObject > , allocatedSize: Int , allocatedAlignMask: Int ) {
97+ @_cdecl ( " swift_deallocObject " )
98+ public func swift_deallocObject( object: Builtin . RawPointer , allocatedSize: Int , allocatedAlignMask: Int ) {
99+ swift_deallocObject ( object: UnsafeMutablePointer < HeapObject > ( object) , allocatedSize: allocatedSize, allocatedAlignMask: allocatedAlignMask)
100+ }
101+
102+ func swift_deallocObject( object: UnsafeMutablePointer < HeapObject > , allocatedSize: Int , allocatedAlignMask: Int ) {
95103 free ( object. _rawValue)
96104}
97105
98- @_silgen_name ( " swift_deallocClassInstance " )
99- public func swift_deallocClassInstance( object: UnsafeMutablePointer < HeapObject > , allocatedSize: Int , allocatedAlignMask: Int ) {
106+ @_cdecl ( " swift_deallocClassInstance " )
107+ public func swift_deallocClassInstance( object: Builtin . RawPointer , allocatedSize: Int , allocatedAlignMask: Int ) {
108+ swift_deallocClassInstance ( object: UnsafeMutablePointer < HeapObject > ( object) , allocatedSize: allocatedSize, allocatedAlignMask: allocatedAlignMask)
109+ }
110+
111+ func swift_deallocClassInstance( object: UnsafeMutablePointer < HeapObject > , allocatedSize: Int , allocatedAlignMask: Int ) {
100112 if ( object. pointee. refcount & HeapObject . doNotFreeBit) != 0 {
101113 return
102114 }
103115
104116 free ( object. _rawValue)
105117}
106118
107- @_silgen_name ( " swift_initStaticObject " )
108- public func swift_initStaticObject( metadata: UnsafeMutablePointer < ClassMetadata > , object: UnsafeMutablePointer < HeapObject > ) -> UnsafeMutablePointer < HeapObject > {
119+ @_cdecl ( " swift_initStaticObject " )
120+ public func swift_initStaticObject( metadata: Builtin . RawPointer , object: Builtin . RawPointer ) -> Builtin . RawPointer {
121+ return swift_initStaticObject ( metadata: UnsafeMutablePointer < ClassMetadata > ( metadata) , object: UnsafeMutablePointer < HeapObject > ( object) ) . _rawValue
122+ }
123+
124+ func swift_initStaticObject( metadata: UnsafeMutablePointer < ClassMetadata > , object: UnsafeMutablePointer < HeapObject > ) -> UnsafeMutablePointer < HeapObject > {
109125 _swift_embedded_set_heap_object_metadata_pointer ( object, metadata)
110126 object. pointee. refcount = HeapObject . immortalRefCount
111127 return object
112128}
113129
114- @_silgen_name ( " swift_initStackObject " )
115- public func swift_initStackObject( metadata: UnsafeMutablePointer < ClassMetadata > , object: UnsafeMutablePointer < HeapObject > ) -> UnsafeMutablePointer < HeapObject > {
130+ @_cdecl ( " swift_initStackObject " )
131+ public func swift_initStackObject( metadata: Builtin . RawPointer , object: Builtin . RawPointer ) -> Builtin . RawPointer {
132+ return swift_initStackObject ( metadata: UnsafeMutablePointer < ClassMetadata > ( metadata) , object: UnsafeMutablePointer < HeapObject > ( object) ) . _rawValue
133+ }
134+
135+ func swift_initStackObject( metadata: UnsafeMutablePointer < ClassMetadata > , object: UnsafeMutablePointer < HeapObject > ) -> UnsafeMutablePointer < HeapObject > {
116136 _swift_embedded_set_heap_object_metadata_pointer ( object, metadata)
117137 object. pointee. refcount = 1 | HeapObject . doNotFreeBit
118138 return object
@@ -122,25 +142,29 @@ public func swift_initStackObject(metadata: UnsafeMutablePointer<ClassMetadata>,
122142
123143/// Refcounting
124144
125- @_silgen_name ( " swift_setDeallocating " )
126- public func swift_setDeallocating( object: UnsafeMutablePointer < HeapObject > ) {
145+ @_cdecl ( " swift_setDeallocating " )
146+ public func swift_setDeallocating( object: Builtin . RawPointer ) {
147+ }
148+
149+ @_cdecl ( " swift_isUniquelyReferenced_nonNull_native " )
150+ public func swift_isUniquelyReferenced_nonNull_native( object: Builtin . RawPointer ) -> Bool {
151+ return swift_isUniquelyReferenced_nonNull_native ( object: UnsafeMutablePointer < HeapObject > ( object) )
127152}
128153
129- @_silgen_name ( " swift_isUniquelyReferenced_nonNull_native " )
130- public func swift_isUniquelyReferenced_nonNull_native( object: UnsafeMutablePointer < HeapObject > ) -> Bool {
154+ func swift_isUniquelyReferenced_nonNull_native( object: UnsafeMutablePointer < HeapObject > ) -> Bool {
131155 let refcount = refcountPointer ( for: object)
132156 return loadAcquire ( refcount) == 1
133157}
134158
135- @_silgen_name ( " swift_retain " )
159+ @_cdecl ( " swift_retain " )
136160public func swift_retain( object: Builtin . RawPointer ) -> Builtin . RawPointer {
137161 if Int ( Builtin . ptrtoint_Word ( object) ) == 0 { return object }
138162 let o = UnsafeMutablePointer < HeapObject > ( object)
139163 return swift_retain_n_ ( object: o, n: 1 ) . _rawValue
140164}
141165
142166// Cannot use UnsafeMutablePointer<HeapObject>? directly in the function argument or return value as it causes IRGen crashes
143- @_silgen_name ( " swift_retain_n " )
167+ @_cdecl ( " swift_retain_n " )
144168public func swift_retain_n( object: Builtin . RawPointer , n: UInt32 ) -> Builtin . RawPointer {
145169 if Int ( Builtin . ptrtoint_Word ( object) ) == 0 { return object }
146170 let o = UnsafeMutablePointer < HeapObject > ( object)
@@ -158,21 +182,21 @@ func swift_retain_n_(object: UnsafeMutablePointer<HeapObject>, n: UInt32) -> Uns
158182 return object
159183}
160184
161- @_silgen_name ( " swift_release " )
185+ @_cdecl ( " swift_release " )
162186public func swift_release( object: Builtin . RawPointer ) {
163187 if Int ( Builtin . ptrtoint_Word ( object) ) == 0 { return }
164188 let o = UnsafeMutablePointer < HeapObject > ( object)
165189 swift_release_n_ ( object: o, n: 1 )
166190}
167191
168- @_silgen_name ( " swift_release_n " )
192+ @_cdecl ( " swift_release_n " )
169193public func swift_release_n( object: Builtin . RawPointer , n: UInt32 ) {
170194 if Int ( Builtin . ptrtoint_Word ( object) ) == 0 { return }
171195 let o = UnsafeMutablePointer < HeapObject > ( object)
172196 swift_release_n_ ( object: o, n: n)
173197}
174198
175- public func swift_release_n_( object: UnsafeMutablePointer < HeapObject > ? , n: UInt32 ) {
199+ func swift_release_n_( object: UnsafeMutablePointer < HeapObject > ? , n: UInt32 ) {
176200 guard let object else {
177201 return
178202 }
@@ -228,12 +252,12 @@ fileprivate func storeRelease(_ atomic: UnsafeMutablePointer<Int>, newValue: Int
228252
229253/// Exclusivity checking
230254
231- @_silgen_name ( " swift_beginAccess " )
255+ @_cdecl ( " swift_beginAccess " )
232256public func swift_beginAccess( pointer: UnsafeMutableRawPointer , buffer: UnsafeMutableRawPointer , flags: UInt , pc: UnsafeMutableRawPointer ) {
233257 // TODO: Add actual exclusivity checking.
234258}
235259
236- @_silgen_name ( " swift_endAccess " )
260+ @_cdecl ( " swift_endAccess " )
237261public func swift_endAccess( buffer: UnsafeMutableRawPointer ) {
238262 // TODO: Add actual exclusivity checking.
239263}
@@ -242,7 +266,7 @@ public func swift_endAccess(buffer: UnsafeMutableRawPointer) {
242266
243267// Once
244268
245- @_silgen_name ( " swift_once " )
269+ @_cdecl ( " swift_once " )
246270public func swift_once( predicate: UnsafeMutablePointer < Int > , fn: ( @convention ( c) ( UnsafeMutableRawPointer ) -> ( ) ) , context: UnsafeMutableRawPointer ) {
247271 let checkedLoadAcquire = { predicate in
248272 let value = loadAcquire ( predicate)
@@ -269,12 +293,12 @@ public func swift_once(predicate: UnsafeMutablePointer<Int>, fn: (@convention(c)
269293
270294// Misc
271295
272- @_silgen_name ( " swift_deletedMethodError " )
296+ @_cdecl ( " swift_deletedMethodError " )
273297public func swift_deletedMethodError( ) -> Never {
274298 Builtin . int_trap ( )
275299}
276300
277- @_silgen_name ( " swift_willThrow " )
301+ @_silgen_name ( " swift_willThrow " ) // This is actually expected to be swiftcc (@_silgen_name and not @_cdecl).
278302public func swift_willThrow( ) throws {
279303}
280304
0 commit comments