Skip to content

[+0-all-args] Clean up remains of +1 convention from the runtime. #17815

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions include/swift/Runtime/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -206,16 +206,4 @@
// so changing this value is not sufficient.
#define SWIFT_DEFAULT_LLVM_CC llvm::CallingConv::C

// These are temporary macros during the +0 cc exploration to cleanly support
// both +0 and +1 in the runtime.
#ifndef SWIFT_RUNTIME_ENABLE_GUARANTEED_NORMAL_ARGUMENTS
#define SWIFT_NS_RELEASES_ARGUMENT NS_RELEASES_ARGUMENT
#define SWIFT_CC_PLUSONE_GUARD(...) do { __VA_ARGS__ ; } while (0)
#define SWIFT_CC_PLUSZERO_GUARD(...)
#else
#define SWIFT_NS_RELEASES_ARGUMENT
#define SWIFT_CC_PLUSONE_GUARD(...)
#define SWIFT_CC_PLUSZERO_GUARD(...) do { __VA_ARGS__ ; } while (0)
#endif

#endif // SWIFT_RUNTIME_CONFIG_H
4 changes: 0 additions & 4 deletions stdlib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ endif()
# we get link failures regardless, so instead, this just disables the checks.
append("-DLLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING=1" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)

if(SWIFT_ENABLE_GUARANTEED_NORMAL_ARGUMENTS)
append("-DSWIFT_RUNTIME_ENABLE_GUARANTEED_NORMAL_ARGUMENTS=1" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
endif()

set(SWIFT_STDLIB_LIBRARY_BUILD_TYPES)
if(SWIFT_BUILD_DYNAMIC_STDLIB)
list(APPEND SWIFT_STDLIB_LIBRARY_BUILD_TYPES SHARED)
Expand Down
4 changes: 1 addition & 3 deletions stdlib/private/StdlibUnittest/InspectValue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ uint32_t getMetadataKindOf(
OpaqueValue *value,
const Metadata *type
) {
auto result = uint32_t(type->getKind());
SWIFT_CC_PLUSONE_GUARD(type->vw_destroy(value));
return result;
return uint32_t(type->getKind());
}

Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,10 @@

SWIFT_CC(swift) SWIFT_RUNTIME_LIBRARY_VISIBILITY
extern "C" void
NSArray_getObjects(NSArray SWIFT_NS_RELEASES_ARGUMENT *_Nonnull nsArray,
NSArray_getObjects(NSArray *_Nonnull nsArray,
id *objects, NSUInteger rangeLocation,
NSUInteger rangeLength) {
[nsArray getObjects:objects range:NSMakeRange(rangeLocation, rangeLength)];
SWIFT_CC_PLUSONE_GUARD([nsArray release]);
}

SWIFT_CC(swift) SWIFT_RUNTIME_LIBRARY_VISIBILITY
Expand All @@ -28,6 +27,5 @@
id *objects, id *keys,
NSInteger count) {
[nsDictionary getObjects:objects andKeys:keys count:count];
SWIFT_CC_PLUSONE_GUARD([nsDictionary release]);
}

8 changes: 0 additions & 8 deletions stdlib/public/SDK/Foundation/DataThunks.m
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,6 @@ BOOL __NSDataWriteToURL(NSData * _Nonnull data NS_RELEASES_ARGUMENT, NSURL * _No

if (![path getFileSystemRepresentation:cpath maxLength:1024]) {
if (errorPtr) *errorPtr = _NSErrorWithFilePath(NSFileWriteInvalidFileNameError, path);
SWIFT_CC_PLUSONE_GUARD([data release]);
SWIFT_CC_PLUSONE_GUARD([url release]);
return NO;
}

Expand All @@ -137,8 +135,6 @@ BOOL __NSDataWriteToURL(NSData * _Nonnull data NS_RELEASES_ARGUMENT, NSURL * _No
int32_t fd = _NSOpenFileDescriptor(cpath, flags, protectionClass, 0666);
if (fd < 0) {
if (errorPtr) *errorPtr = _NSErrorWithFilePathAndErrno(errno, path, NO);
SWIFT_CC_PLUSONE_GUARD([url release]);
SWIFT_CC_PLUSONE_GUARD([data release]);
return NO;
}

Expand Down Expand Up @@ -172,12 +168,8 @@ BOOL __NSDataWriteToURL(NSData * _Nonnull data NS_RELEASES_ARGUMENT, NSURL * _No
if (errorPtr) {
*errorPtr = _NSErrorWithFilePathAndErrno(errno, path, NO);
}
SWIFT_CC_PLUSONE_GUARD([url release]);
SWIFT_CC_PLUSONE_GUARD([data release]);
return NO;
}
close(fd);
SWIFT_CC_PLUSONE_GUARD([url release]);
SWIFT_CC_PLUSONE_GUARD([data release]);
return YES;
}
6 changes: 2 additions & 4 deletions stdlib/public/SDK/Foundation/TypePreservingNSNumber.mm
Original file line number Diff line number Diff line change
Expand Up @@ -317,29 +317,27 @@ - (Class)classForCoder {

SWIFT_CC(swift) extern "C" uint8_t
_swift_Foundation_TypePreservingNSNumberGetKind(
NSNumber *SWIFT_NS_RELEASES_ARGUMENT _Nonnull self_) {
NSNumber *_Nonnull self_) {
uint8_t result = NonSwift;
if ([self_ isKindOfClass:
SWIFT_LAZY_CONSTANT([_SwiftTypePreservingNSNumber class])]) {
result = ((_SwiftTypePreservingNSNumber *) self_)->tag;
} else if (CFGetTypeID(self_) == CFBooleanGetTypeID()) {
result = SwiftBool;
}
SWIFT_CC_PLUSONE_GUARD([self_ release]);
return result;
}

#define DEFINE_GETTER(C_TYPE, FUNCTION_NAME) \
SWIFT_CC(swift) extern "C" C_TYPE \
_swift_Foundation_TypePreservingNSNumberGetAs ## FUNCTION_NAME( \
_SwiftTypePreservingNSNumber *SWIFT_NS_RELEASES_ARGUMENT _Nonnull self_) { \
_SwiftTypePreservingNSNumber *_Nonnull self_) { \
if (self_->tag != Swift ## FUNCTION_NAME) { \
swift::swift_reportError( \
/* flags = */ 0, "Incorrect tag.\n"); \
} \
C_TYPE result; \
memcpy(&result, self_->storage, sizeof(result)); \
SWIFT_CC_PLUSONE_GUARD([self_ release]); \
return result; \
}

Expand Down
18 changes: 0 additions & 18 deletions stdlib/public/runtime/AnyHashableSupport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,27 +161,9 @@ void _swift_makeAnyHashableUpcastingToHashableBaseType(

if (auto unboxedHashableWT =
swift_conformsToProtocol(unboxedType, &HashableProtocolDescriptor)) {
#ifndef SWIFT_RUNTIME_ENABLE_GUARANTEED_NORMAL_ARGUMENTS
ValueBuffer unboxedCopyBuf;
// Allocate buffer.
OpaqueValue *unboxedValueCopy =
unboxedType->allocateBufferIn(&unboxedCopyBuf);
// initWithCopy.
unboxedType->vw_initializeWithCopy(
unboxedValueCopy, const_cast<OpaqueValue *>(unboxedValue));

_swift_makeAnyHashableUpcastingToHashableBaseType(
unboxedValueCopy, anyHashableResultPointer, unboxedType,
unboxedHashableWT);

// Deallocate buffer.
unboxedType->deallocateBufferIn(&unboxedCopyBuf);
type->vw_destroy(value);
#else
_swift_makeAnyHashableUpcastingToHashableBaseType(
const_cast<OpaqueValue *>(unboxedValue), anyHashableResultPointer,
unboxedType, unboxedHashableWT);
#endif
return;
}
}
Expand Down
3 changes: 1 addition & 2 deletions stdlib/public/runtime/Casting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2701,7 +2701,7 @@ static bool _dynamicCastClassToValueViaObjCBridgeable(
(HeapObject *)srcObject, (OpaqueValue *)optDestBuffer,
targetType, targetType, targetBridgeWitness);
}
SWIFT_CC_PLUSZERO_GUARD(swift_unknownRelease(srcObject));
swift_unknownRelease(srcObject);

// If we succeeded, take from the optional buffer into the
// destination buffer.
Expand Down Expand Up @@ -3016,7 +3016,6 @@ _bridgeNonVerbatimFromObjectiveCConditional(

// Local function that releases the source and returns false.
auto fail = [&] () -> bool {
SWIFT_CC_PLUSONE_GUARD(swift_unknownRelease(sourceValue));
return false;
};

Expand Down
2 changes: 0 additions & 2 deletions stdlib/public/runtime/ErrorDefaultImpls.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,5 @@ intptr_t _swift_stdlib_getDefaultErrorCode(OpaqueValue *error,
break;
}

// Destroy the value.
SWIFT_CC_PLUSONE_GUARD(T->vw_destroy(error));
return result;
}
1 change: 0 additions & 1 deletion stdlib/public/runtime/ErrorObject.mm
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,6 @@ NSInteger getErrorCode(const OpaqueValue *error,
// -> AnyObject?
auto foundationGetDefaultUserInfo = getErrorBridgingInfo().GetErrorDefaultUserInfo;
if (!foundationGetDefaultUserInfo) {
SWIFT_CC_PLUSONE_GUARD(T->vw_destroy(error));
return nullptr;
}

Expand Down
1 change: 0 additions & 1 deletion stdlib/public/runtime/ReflectionMirror.mm
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,6 @@ auto call(OpaqueValue *passedValue, const Metadata *T, const Metadata *passedTyp
impl->type = type;
impl->value = value;
auto result = f(impl);
SWIFT_CC_PLUSONE_GUARD(T->vw_destroy(passedValue));
return result;
};

Expand Down
2 changes: 1 addition & 1 deletion stdlib/public/runtime/SwiftObject.mm
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ static Class _swift_getObjCClassOfAllocated(const void *object) {

NSString *swift::getDescription(OpaqueValue *value, const Metadata *type) {
auto result = swift_stdlib_getDescription(value, type);
SWIFT_CC_PLUSZERO_GUARD(type->vw_destroy(value));
type->vw_destroy(value);
return [result autorelease];
}

Expand Down
10 changes: 3 additions & 7 deletions stdlib/public/stubs/Reflection.mm
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,9 @@
SWIFT_CC(swift)
SWIFT_RUNTIME_STDLIB_INTERFACE
bool _swift_stdlib_NSObject_isKindOfClass(
id SWIFT_NS_RELEASES_ARGUMENT _Nonnull object,
NSString *SWIFT_NS_RELEASES_ARGUMENT _Nonnull className) {
bool result = [object isKindOfClass:NSClassFromString(className)];
SWIFT_CC_PLUSONE_GUARD([object release]);
SWIFT_CC_PLUSONE_GUARD([className release]);

return result;
id _Nonnull object,
NSString * _Nonnull className) {
return [object isKindOfClass:NSClassFromString(className)];
}
#endif

21 changes: 7 additions & 14 deletions stdlib/public/stubs/SwiftNativeNSXXXBase.mm.gyb
Original file line number Diff line number Diff line change
Expand Up @@ -104,23 +104,17 @@ SWIFT_RUNTIME_STDLIB_INTERFACE

SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERNAL
bool
swift_stdlib_NSObject_isEqual(NSObject *SWIFT_NS_RELEASES_ARGUMENT lhs,
NSObject *SWIFT_NS_RELEASES_ARGUMENT rhs) {
bool Result = (lhs == rhs) || [lhs isEqual:rhs];
SWIFT_CC_PLUSONE_GUARD(swift_unknownRelease(lhs));
SWIFT_CC_PLUSONE_GUARD(swift_unknownRelease(rhs));
return Result;
swift_stdlib_NSObject_isEqual(NSObject *lhs,
NSObject *rhs) {
return (lhs == rhs) || [lhs isEqual:rhs];
}

SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
int32_t swift_stdlib_compareNSStringDeterministicUnicodeCollation(
NSString *SWIFT_NS_RELEASES_ARGUMENT lhs, NSString *SWIFT_NS_RELEASES_ARGUMENT rhs) {
NSString *lhs, NSString *rhs) {
// 'kCFCompareNonliteral' actually means "normalize to NFD".
int Result = CFStringCompare((__bridge CFStringRef)lhs,
(__bridge CFStringRef)rhs, kCFCompareNonliteral);
SWIFT_CC_PLUSONE_GUARD(swift_unknownRelease(lhs));
SWIFT_CC_PLUSONE_GUARD(swift_unknownRelease(rhs));
return Result;
return CFStringCompare((__bridge CFStringRef)lhs,
(__bridge CFStringRef)rhs, kCFCompareNonliteral);
}

SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
Expand All @@ -145,10 +139,9 @@ swift_stdlib_CFStringHashCString(const uint8_t *bytes, CFIndex len) {
}

SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERNAL
void swift_stdlib_CFSetGetValues(NSSet *SWIFT_NS_RELEASES_ARGUMENT set,
void swift_stdlib_CFSetGetValues(NSSet *set,
const void **values) {
CFSetGetValues((__bridge CFSetRef)set, values);
SWIFT_CC_PLUSONE_GUARD(swift_unknownRelease(set));
}
#endif

Expand Down
6 changes: 3 additions & 3 deletions stdlib/public/stubs/SwiftNativeNSXXXBaseARC.m
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
#endif

SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
size_t swift_stdlib_NSStringHashValue(NSString *SWIFT_NS_RELEASES_ARGUMENT str,
size_t swift_stdlib_NSStringHashValue(NSString *str,
bool isASCII) {
AUTORELEASEPOOL {
return isASCII ? str.hash : str.decomposedStringWithCanonicalMapping.hash;
Expand All @@ -68,15 +68,15 @@ size_t swift_stdlib_NSStringHashValue(NSString *SWIFT_NS_RELEASES_ARGUMENT str,

SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
NS_RETURNS_RETAINED NSString *
swift_stdlib_NSStringLowercaseString(NSString *SWIFT_NS_RELEASES_ARGUMENT str) {
swift_stdlib_NSStringLowercaseString(NSString *str) {
AUTORELEASEPOOL {
return str.lowercaseString;
}
}

SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
NS_RETURNS_RETAINED NSString *
swift_stdlib_NSStringUppercaseString(NSString *SWIFT_NS_RELEASES_ARGUMENT str) {
swift_stdlib_NSStringUppercaseString(NSString *str) {
AUTORELEASEPOOL {
return str.uppercaseString;
}
Expand Down