@@ -19,12 +19,15 @@ public struct ClassMetadata {
1919
2020 // There is no way to express the actual calling convention on the heap desroy
2121 // function (swiftcc with 'self') currently, so let's use UnsafeRawPointer
22- // and a helper function in C (_swift_runtime_invoke_heap_object_destroy ).
22+ // and a helper function in C (_swift_embedded_invoke_heap_object_destroy ).
2323 var destroy : UnsafeRawPointer
2424}
2525
2626public struct HeapObject {
27- var metadata : UnsafeMutablePointer < ClassMetadata >
27+ // There is no way to express the custom ptrauth signature on the metadata
28+ // field, so let's use UnsafeRawPointer and a helper function in C instead
29+ // (_swift_embedded_set_heap_object_metadata_pointer).
30+ var metadata : UnsafeRawPointer
2831
2932 // TODO: This is just an initial support for strong refcounting only. We need
3033 // to think about supporting (or banning) weak and/or unowned references.
@@ -82,7 +85,7 @@ public func swift_slowDealloc(_ ptr: UnsafeMutableRawPointer, _ size: Int, _ ali
8285public func swift_allocObject( metadata: UnsafeMutablePointer < ClassMetadata > , requiredSize: Int , requiredAlignmentMask: Int ) -> UnsafeMutablePointer < HeapObject > {
8386 let p = swift_slowAlloc ( requiredSize, requiredAlignmentMask) !
8487 let object = p. assumingMemoryBound ( to: HeapObject . self)
85- object. pointee . metadata = metadata
88+ _swift_embedded_set_heap_object_metadata_pointer ( object, metadata)
8689 object. pointee. refcount = 1
8790 return object
8891}
@@ -103,14 +106,14 @@ public func swift_deallocClassInstance(object: UnsafeMutablePointer<HeapObject>,
103106
104107@_silgen_name ( " swift_initStaticObject " )
105108public func swift_initStaticObject( metadata: UnsafeMutablePointer < ClassMetadata > , object: UnsafeMutablePointer < HeapObject > ) -> UnsafeMutablePointer < HeapObject > {
106- object. pointee . metadata = metadata
109+ _swift_embedded_set_heap_object_metadata_pointer ( object, metadata)
107110 object. pointee. refcount = HeapObject . immortalRefCount
108111 return object
109112}
110113
111114@_silgen_name ( " swift_initStackObject " )
112115public func swift_initStackObject( metadata: UnsafeMutablePointer < ClassMetadata > , object: UnsafeMutablePointer < HeapObject > ) -> UnsafeMutablePointer < HeapObject > {
113- object. pointee . metadata = metadata
116+ _swift_embedded_set_heap_object_metadata_pointer ( object, metadata)
114117 object. pointee. refcount = 1 | HeapObject . doNotFreeBit
115118 return object
116119}
0 commit comments