mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[embedded] Add support for ManagedBuffer to Embedded Swift
This makes ManagedBuffer available and usable in Embedded Swift, by: - Removing an internal consistency check from ManagedBuffer that relies on metatypes. - Making the .create() API transparent (to hoist the metatype to the callee). - Adding a AllocRefDynamicInst simplification to convert `alloc_ref_dynamic` to `alloc_ref`, which removes a metatype use. - Adding tests for the above.
This commit is contained in:
@@ -206,6 +206,15 @@ public func swift_dynamicCastClass(object: UnsafeMutableRawPointer, targetMetada
|
||||
return object
|
||||
}
|
||||
|
||||
@_cdecl("swift_dynamicCastClassUnconditional")
|
||||
public func swift_dynamicCastClassUnconditional(object: UnsafeMutableRawPointer, targetMetadata: UnsafeRawPointer,
|
||||
file: UnsafePointer<CChar>, line: CUnsignedInt, column: CUnsignedInt) -> UnsafeMutableRawPointer {
|
||||
guard let result = swift_dynamicCastClass(object: object, targetMetadata: targetMetadata) else {
|
||||
Builtin.int_trap()
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@_cdecl("swift_isUniquelyReferenced_native")
|
||||
public func swift_isUniquelyReferenced_native(object: Builtin.RawPointer) -> Bool {
|
||||
if !isValidPointerForNativeRetain(object: object) { return false }
|
||||
|
||||
Reference in New Issue
Block a user