diff --git a/stdlib/core/BridgeStorage.swift b/stdlib/core/BridgeStorage.swift index 526eabf72fa..6d4b5506571 100644 --- a/stdlib/core/BridgeStorage.swift +++ b/stdlib/core/BridgeStorage.swift @@ -70,7 +70,7 @@ struct _BridgeStorage< mutating func isUniquelyReferencedNative() -> Bool { return _swift_isUniquelyReferencedNonObjC_nonNull_bridgeObject( _bitPattern(rawValue) - ) != 0 + ) } public // @testable @@ -110,7 +110,7 @@ struct _BridgeStorage< _sanityCheck(isNative) _sanityCheck(_nonPointerBits(rawValue) == 0) let p: UnsafePointer = Builtin.reinterpretCast(rawValue) - return _swift_isUniquelyReferenced_nonNull_native(p) != 0 + return _swift_isUniquelyReferenced_nonNull_native(p) } public // @testable diff --git a/stdlib/core/Builtin.swift b/stdlib/core/Builtin.swift index 2f3ba41b1a7..135e911369a 100644 --- a/stdlib/core/Builtin.swift +++ b/stdlib/core/Builtin.swift @@ -241,7 +241,7 @@ internal func _usesNativeSwiftReferenceCounting(theClass: AnyClass) -> Bool { #if _runtime(_ObjC) return _swift_usesNativeSwiftReferenceCounting_class( unsafeAddressOf(theClass) - ) != 0 + ) #else return true #endif diff --git a/stdlib/core/HashedCollections.swift.gyb b/stdlib/core/HashedCollections.swift.gyb index bbc919fea93..ee012dc30e8 100644 --- a/stdlib/core/HashedCollections.swift.gyb +++ b/stdlib/core/HashedCollections.swift.gyb @@ -2551,7 +2551,7 @@ internal enum _Variant${Self}Storage<${TypeParametersDecl}> : _HashStorageType { let o: UnsafePointer = Builtin.reinterpretCast(self) let result = _swift_isUniquelyReferenced_native(o) Builtin.fixLifetime(self) - return result != 0 + return result } switch self { @@ -2559,7 +2559,7 @@ internal enum _Variant${Self}Storage<${TypeParametersDecl}> : _HashStorageType { let o: UnsafePointer = Builtin.reinterpretCast(self) let result = _swift_isUniquelyReferenced_native(o) Builtin.fixLifetime(self) - return result != 0 + return result case .Cocoa: // Don't consider Cocoa storage mutable, even if it is mutable and is // uniquely referenced. diff --git a/stdlib/core/HeapBuffer.swift b/stdlib/core/HeapBuffer.swift index 4c68d0482f0..080ca4ce9e2 100644 --- a/stdlib/core/HeapBuffer.swift +++ b/stdlib/core/HeapBuffer.swift @@ -70,7 +70,7 @@ internal func _isUniquelyReferenced_native( inout x: Builtin.NativeObject? ) -> Bool { let p: UnsafePointer<_HeapObject> = Builtin.reinterpretCast(x) - let result = _swift_isUniquelyReferenced_native(p) != 0 + let result = _swift_isUniquelyReferenced_native(p) Builtin.fixLifetime(x) return result } @@ -216,7 +216,7 @@ internal struct _HeapBuffer : Equatable { let o: UnsafePointer = Builtin.reinterpretCast(_storage) let result = _swift_isUniquelyReferenced_native(o) Builtin.fixLifetime(_storage) - return result != 0 + return result } } diff --git a/stdlib/core/ManagedBuffer.swift b/stdlib/core/ManagedBuffer.swift index fbd2852805f..c8ea4689159 100644 --- a/stdlib/core/ManagedBuffer.swift +++ b/stdlib/core/ManagedBuffer.swift @@ -263,7 +263,7 @@ public struct ManagedBufferPointer : Equatable { let o = UnsafePointer(Builtin.bridgeToRawPointer(_nativeBuffer)) let result = _swift_isUniquelyReferenced_nonNull_native(o) _fixLifetime(_nativeBuffer) - return result != 0 + return result } //===--- internal/private API -------------------------------------------===// @@ -414,7 +414,7 @@ public func isUniquelyReferencedNonObjC(inout object: T) -> Bool { let o = UnsafePointer(Builtin.bridgeToRawPointer(object)) let result = _swift_isUniquelyReferencedNonObjC_nonNull(o) Builtin.fixLifetime(object) - return result != 0 + return result } /// Returns `true` iff `object` is a non-\ `@objc` class instance with a single @@ -447,7 +447,7 @@ public func isUniquelyReferenced( let o = UnsafePointer(Builtin.bridgeToRawPointer(object)) let result = _swift_isUniquelyReferenced_nonNull_native(o) Builtin.fixLifetime(object) - return result != 0 + return result } /// Returns `true` iff `object` is a non-\ `@objc` class instance with @@ -482,6 +482,6 @@ public func isUniquelyReferencedNonObjC( let o = Builtin.reinterpretCast(object) as UnsafePointer let result = _swift_isUniquelyReferencedNonObjC(o) Builtin.fixLifetime(object) - return result != 0 + return result } diff --git a/stdlib/core/Shims.swift b/stdlib/core/Shims.swift index e823bb893a3..075566deb15 100644 --- a/stdlib/core/Shims.swift +++ b/stdlib/core/Shims.swift @@ -40,7 +40,7 @@ internal func _isUniquelyReferenced_native( inout x: Builtin.NativeObject ) -> Bool { let p = UnsafePointer<_HeapObject>(Builtin.bridgeToRawPointer(x)) - let result = _swift_isUniquelyReferenced_nonNull_native(p) != 0 + let result = _swift_isUniquelyReferenced_nonNull_native(p) Builtin.fixLifetime(x) return result } diff --git a/stdlib/runtime/SwiftObject.mm b/stdlib/runtime/SwiftObject.mm index 4cdc0a460dc..e43232642e5 100644 --- a/stdlib/runtime/SwiftObject.mm +++ b/stdlib/runtime/SwiftObject.mm @@ -446,7 +446,7 @@ bool swift::usesNativeSwiftReferenceCounting(const ClassMetadata *theClass) { } // version for SwiftShims -unsigned char +bool swift::_swift_usesNativeSwiftReferenceCounting_class(const void *theClass) { #if SWIFT_OBJC_INTEROP return usesNativeSwiftReferenceCounting((const ClassMetadata *)theClass); @@ -935,7 +935,7 @@ extern "C" const char *swift_getGenericClassObjCName(const ClassMetadata *clas, // Given a non-nil object reference, return true iff the object uses // native swift reference counting. -unsigned char swift::_swift_usesNativeSwiftReferenceCounting_nonNull( +bool swift::_swift_usesNativeSwiftReferenceCounting_nonNull( const void* object ) { assert(object != nullptr); @@ -949,7 +949,7 @@ unsigned char swift::_swift_usesNativeSwiftReferenceCounting_nonNull( // Given a non-nil non-@objc object reference, return true iff the // object has a strong reference count of 1. -unsigned char swift::_swift_isUniquelyReferenced_nonNull_native( +bool swift::_swift_isUniquelyReferenced_nonNull_native( const HeapObject* object ) { assert(object != nullptr); @@ -959,7 +959,7 @@ unsigned char swift::_swift_isUniquelyReferenced_nonNull_native( // Given a non-@objc object reference, return true iff the // object is non-nil and has a strong reference count of 1. -unsigned char swift::_swift_isUniquelyReferenced_native( +bool swift::_swift_isUniquelyReferenced_native( const HeapObject* object ) { return object != nullptr @@ -968,7 +968,7 @@ unsigned char swift::_swift_isUniquelyReferenced_native( // Given a non-nil object reference, return true iff the object is a // native swift object with strong reference count of 1. -unsigned char swift::_swift_isUniquelyReferencedNonObjC_nonNull( +bool swift::_swift_isUniquelyReferencedNonObjC_nonNull( const void* object ) { assert(object != nullptr); @@ -981,22 +981,18 @@ unsigned char swift::_swift_isUniquelyReferencedNonObjC_nonNull( // Given an object reference, return true iff it is non-nil and refers // to a native swift object with strong reference count of 1. -unsigned char swift::_swift_isUniquelyReferencedNonObjC( +bool swift::_swift_isUniquelyReferencedNonObjC( const void* object ) { return object != nullptr && _swift_isUniquelyReferencedNonObjC_nonNull(object); } -//===----------------------------------------------------------------------===// -// FIXME: this should return bool but it chokes the compiler -// -//===----------------------------------------------------------------------===// /// Given the bits of a possibly-nil Native swift object reference, or of a /// word-sized Swift enum containing a Native swift object reference as /// a payload, return true iff the object's strong reference count is /// 1. -unsigned char swift::_swift_isUniquelyReferenced_native_spareBits( +bool swift::_swift_isUniquelyReferenced_native_spareBits( __swift_uintptr_t bits ) { const auto object = reinterpret_cast( @@ -1012,7 +1008,7 @@ unsigned char swift::_swift_isUniquelyReferenced_native_spareBits( /// Return true if the given bits of a Builtin.BridgeObject refer to a /// native swift object whose strong reference count is 1. -unsigned char swift::_swift_isUniquelyReferencedNonObjC_nonNull_bridgeObject( +bool swift::_swift_isUniquelyReferencedNonObjC_nonNull_bridgeObject( __swift_uintptr_t bits ) { auto bridgeObject = (void*)bits; diff --git a/stdlib/shims/RuntimeShims.h b/stdlib/shims/RuntimeShims.h index b3ae52ce260..ba44fb62485 100644 --- a/stdlib/shims/RuntimeShims.h +++ b/stdlib/shims/RuntimeShims.h @@ -23,18 +23,20 @@ #ifdef __cplusplus namespace swift { extern "C" { +#else +#define bool _Bool #endif -unsigned char _swift_isUniquelyReferencedNonObjC(const void *); -unsigned char _swift_isUniquelyReferencedNonObjC_nonNull(const void *); -unsigned char _swift_usesNativeSwiftReferenceCounting_nonNull(const void *); -unsigned char _swift_usesNativeSwiftReferenceCounting_class(const void *); -unsigned char _swift_isUniquelyReferenced_native_spareBits(__swift_uintptr_t bits); -unsigned char _swift_isUniquelyReferencedNonObjC_nonNull_bridgeObject( +bool _swift_isUniquelyReferencedNonObjC(const void *); +bool _swift_isUniquelyReferencedNonObjC_nonNull(const void *); +bool _swift_usesNativeSwiftReferenceCounting_nonNull(const void *); +bool _swift_usesNativeSwiftReferenceCounting_class(const void *); +bool _swift_isUniquelyReferenced_native_spareBits(__swift_uintptr_t bits); +bool _swift_isUniquelyReferencedNonObjC_nonNull_bridgeObject( __swift_uintptr_t bits); -unsigned char +bool _swift_isUniquelyReferenced_nonNull_native(const struct HeapObject *); -unsigned char _swift_isUniquelyReferenced_native(const struct HeapObject *); +bool _swift_isUniquelyReferenced_native(const struct HeapObject *); __swift_size_t _swift_class_getInstancePositiveExtentSize(const void *); #ifdef __cplusplus