[embedded] Add swift_isUniquelyReferenced_native into the embedded runtime

This commit is contained in:
Kuba Mracek
2024-03-25 11:51:01 -07:00
parent 50b358c64f
commit 8f247e2d36
2 changed files with 25 additions and 0 deletions

View File

@@ -146,6 +146,12 @@ func swift_initStackObject(metadata: UnsafeMutablePointer<ClassMetadata>, object
public func swift_setDeallocating(object: Builtin.RawPointer) { public func swift_setDeallocating(object: Builtin.RawPointer) {
} }
@_cdecl("swift_isUniquelyReferenced_native")
public func swift_isUniquelyReferenced_native(object: Builtin.RawPointer) -> Bool {
if Int(Builtin.ptrtoint_Word(object)) == 0 { return false }
return swift_isUniquelyReferenced_nonNull_native(object: UnsafeMutablePointer<HeapObject>(object))
}
@_cdecl("swift_isUniquelyReferenced_nonNull_native") @_cdecl("swift_isUniquelyReferenced_nonNull_native")
public func swift_isUniquelyReferenced_nonNull_native(object: Builtin.RawPointer) -> Bool { public func swift_isUniquelyReferenced_nonNull_native(object: Builtin.RawPointer) -> Bool {
return swift_isUniquelyReferenced_nonNull_native(object: UnsafeMutablePointer<HeapObject>(object)) return swift_isUniquelyReferenced_nonNull_native(object: UnsafeMutablePointer<HeapObject>(object))

View File

@@ -0,0 +1,19 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend %s -enable-experimental-feature Embedded -c -o %t/main.o
// RUN: %target-clang %t/main.o -o %t/a.out -dead_strip
// RUN: %target-run %t/a.out | %FileCheck %s
// REQUIRES: swift_in_compiler
// REQUIRES: executable_test
// REQUIRES: optimized_stdlib
// REQUIRES: OS=macosx || OS=linux-gnu
class Foo {
var foo: Foo?
}
do {
_ = Foo()
print("OK!")
}
// CHECK: OK!