Skip to content

runtime: Also return the destination argument of the unknownWeak- and… #11950

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
merged 2 commits into from
Sep 15, 2017
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
116 changes: 68 additions & 48 deletions include/swift/Runtime/HeapObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -889,13 +889,15 @@ static inline void swift_nonatomic_unknownRelease_n(void *value, int n)
///
/// \param ref - never null
/// \param value - not necessarily a native Swift object; can be null
/// \return ref
SWIFT_RUNTIME_EXPORT
void swift_unknownWeakInit(WeakReference *ref, void *value);
WeakReference *swift_unknownWeakInit(WeakReference *ref, void *value);

#else

static inline void swift_unknownWeakInit(WeakReference *ref, void *value) {
swift_weakInit(ref, static_cast<HeapObject *>(value));
static inline WeakReference *swift_unknownWeakInit(WeakReference *ref,
void *value) {
return swift_weakInit(ref, static_cast<HeapObject *>(value));
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -906,13 +908,15 @@ static inline void swift_unknownWeakInit(WeakReference *ref, void *value) {
///
/// \param ref - never null
/// \param value - not necessarily a native Swift object; can be null
/// \return ref
SWIFT_RUNTIME_EXPORT
void swift_unknownWeakAssign(WeakReference *ref, void *value);
WeakReference *swift_unknownWeakAssign(WeakReference *ref, void *value);

#else

static inline void swift_unknownWeakAssign(WeakReference *ref, void *value) {
swift_weakAssign(ref, static_cast<HeapObject *>(value));
static inline WeakReference *swift_unknownWeakAssign(WeakReference *ref,
void *value) {
return swift_weakAssign(ref, static_cast<HeapObject *>(value));
}

#endif /* SWIFT_OBJC_INTEROP */
Expand Down Expand Up @@ -973,15 +977,16 @@ static inline void swift_unknownWeakDestroy(WeakReference *object) {

/// Copy-initialize a weak reference variable from one that might not
/// refer to a native Swift object.
/// \return dest
SWIFT_RUNTIME_EXPORT
void swift_unknownWeakCopyInit(WeakReference *dest,
WeakReference *src);
WeakReference *swift_unknownWeakCopyInit(WeakReference *dest,
WeakReference *src);

#else

static inline void swift_unknownWeakCopyInit(WeakReference *dest,
WeakReference *src) {
swift_weakCopyInit(dest, src);
static inline WeakReference *swift_unknownWeakCopyInit(WeakReference *dest,
WeakReference *src) {
return swift_weakCopyInit(dest, src);
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -990,15 +995,16 @@ static inline void swift_unknownWeakCopyInit(WeakReference *dest,

/// Take-initialize a weak reference variable from one that might not
/// refer to a native Swift object.
/// \return dest
SWIFT_RUNTIME_EXPORT
void swift_unknownWeakTakeInit(WeakReference *dest,
WeakReference *src);
WeakReference *swift_unknownWeakTakeInit(WeakReference *dest,
WeakReference *src);

#else

static inline void swift_unknownWeakTakeInit(WeakReference *dest,
WeakReference *src) {
swift_weakTakeInit(dest, src);
static inline WeakReference *swift_unknownWeakTakeInit(WeakReference *dest,
WeakReference *src) {
return swift_weakTakeInit(dest, src);
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -1007,15 +1013,16 @@ static inline void swift_unknownWeakTakeInit(WeakReference *dest,

/// Copy-assign a weak reference variable from another when either
/// or both variables might not refer to a native Swift object.
/// \return dest
SWIFT_RUNTIME_EXPORT
void swift_unknownWeakCopyAssign(WeakReference *dest,
WeakReference *src);
WeakReference *swift_unknownWeakCopyAssign(WeakReference *dest,
WeakReference *src);

#else

static inline void swift_unknownWeakCopyAssign(WeakReference *dest,
WeakReference *src) {
swift_weakCopyAssign(dest, src);
static inline WeakReference *swift_unknownWeakCopyAssign(WeakReference *dest,
WeakReference *src) {
return swift_weakCopyAssign(dest, src);
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -1024,15 +1031,16 @@ static inline void swift_unknownWeakCopyAssign(WeakReference *dest,

/// Take-assign a weak reference variable from another when either
/// or both variables might not refer to a native Swift object.
/// \return dest
SWIFT_RUNTIME_EXPORT
void swift_unknownWeakTakeAssign(WeakReference *dest,
WeakReference *src);
WeakReference *swift_unknownWeakTakeAssign(WeakReference *dest,
WeakReference *src);

#else

static inline void swift_unknownWeakTakeAssign(WeakReference *dest,
WeakReference *src) {
swift_weakTakeAssign(dest, src);
static inline WeakReference *swift_unknownWeakTakeAssign(WeakReference *dest,
WeakReference *src) {
return swift_weakTakeAssign(dest, src);
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -1045,14 +1053,16 @@ static inline void swift_unknownWeakTakeAssign(WeakReference *dest,

/// Initialize an unowned reference to an object with unknown reference
/// counting.
/// \return ref
SWIFT_RUNTIME_EXPORT
void swift_unknownUnownedInit(UnownedReference *ref, void *value);
UnownedReference *swift_unknownUnownedInit(UnownedReference *ref, void *value);

#else

static inline void swift_unknownUnownedInit(UnownedReference *ref,
void *value) {
static inline UnownedReference *swift_unknownUnownedInit(UnownedReference *ref,
void *value) {
swift_unownedInit(ref, static_cast<HeapObject*>(value));
return ref;
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -1061,14 +1071,17 @@ static inline void swift_unknownUnownedInit(UnownedReference *ref,

/// Assign to an unowned reference holding an object with unknown reference
/// counting.
/// \return ref
SWIFT_RUNTIME_EXPORT
void swift_unknownUnownedAssign(UnownedReference *ref, void *value);
UnownedReference *swift_unknownUnownedAssign(UnownedReference *ref,
void *value);

#else

static inline void swift_unknownUnownedAssign(UnownedReference *ref,
void *value) {
static inline UnownedReference *
swift_unknownUnownedAssign(UnownedReference *ref, void *value) {
swift_unownedAssign(ref, static_cast<HeapObject*>(value));
return ref;
}

#endif /* SWIFT_OBJC_INTEROP */
Expand Down Expand Up @@ -1121,15 +1134,17 @@ static inline void swift_unknownUnownedDestroy(UnownedReference *ref) {

/// Copy-initialize an unowned reference variable from one that might not
/// refer to a native Swift object.
/// \return dest
SWIFT_RUNTIME_EXPORT
void swift_unknownUnownedCopyInit(UnownedReference *dest,
UnownedReference *src);
UnownedReference *swift_unknownUnownedCopyInit(UnownedReference *dest,
UnownedReference *src);

#else

static inline void swift_unknownUnownedCopyInit(UnownedReference *dest,
UnownedReference *src) {
static inline UnownedReference *
swift_unknownUnownedCopyInit(UnownedReference *dest, UnownedReference *src) {
swift_unownedCopyInit(dest, src);
return dest;
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -1139,14 +1154,15 @@ static inline void swift_unknownUnownedCopyInit(UnownedReference *dest,
/// Take-initialize an unowned reference variable from one that might not
/// refer to a native Swift object.
SWIFT_RUNTIME_EXPORT
void swift_unknownUnownedTakeInit(UnownedReference *dest,
UnownedReference *src);
UnownedReference *swift_unknownUnownedTakeInit(UnownedReference *dest,
UnownedReference *src);

#else

static inline void swift_unknownUnownedTakeInit(UnownedReference *dest,
UnownedReference *src) {
static inline UnownedReference *
swift_unknownUnownedTakeInit(UnownedReference *dest, UnownedReference *src) {
swift_unownedTakeInit(dest, src);
return dest;
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -1155,15 +1171,17 @@ static inline void swift_unknownUnownedTakeInit(UnownedReference *dest,

/// Copy-assign an unowned reference variable from another when either
/// or both variables might not refer to a native Swift object.
/// \return dest
SWIFT_RUNTIME_EXPORT
void swift_unknownUnownedCopyAssign(UnownedReference *dest,
UnownedReference *src);
UnownedReference *swift_unknownUnownedCopyAssign(UnownedReference *dest,
UnownedReference *src);

#else

static inline void swift_unknownUnownedCopyAssign(UnownedReference *dest,
UnownedReference *src) {
static inline UnownedReference *
swift_unknownUnownedCopyAssign(UnownedReference *dest, UnownedReference *src) {
swift_unownedCopyAssign(dest, src);
return dest;
}

#endif /* SWIFT_OBJC_INTEROP */
Expand All @@ -1172,15 +1190,17 @@ static inline void swift_unknownUnownedCopyAssign(UnownedReference *dest,

/// Take-assign an unowned reference variable from another when either
/// or both variables might not refer to a native Swift object.
/// \return dest
SWIFT_RUNTIME_EXPORT
void swift_unknownUnownedTakeAssign(UnownedReference *dest,
UnownedReference *src);
UnownedReference *swift_unknownUnownedTakeAssign(UnownedReference *dest,
UnownedReference *src);

#else

static inline void swift_unknownUnownedTakeAssign(UnownedReference *dest,
UnownedReference *src) {
static inline UnownedReference *
swift_unknownUnownedTakeAssign(UnownedReference *dest, UnownedReference *src) {
swift_unownedTakeAssign(dest, src);
return dest;
}

#endif /* SWIFT_OBJC_INTEROP */
Expand Down
70 changes: 35 additions & 35 deletions include/swift/Runtime/RuntimeFunctions.def
Original file line number Diff line number Diff line change
Expand Up @@ -520,15 +520,15 @@ FUNCTION(UnknownWeakDestroy, swift_unknownWeakDestroy, DefaultCC,

// void swift_unknownWeakInit(WeakReference *object, void *value);
FUNCTION(UnknownWeakInit, swift_unknownWeakInit, DefaultCC,
RETURNS(VoidTy),
RETURNS(WeakReferencePtrTy),
ARGS(WeakReferencePtrTy, UnknownRefCountedPtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownWeakAssign(WeakReference *object, void *value);
// WeakReference *swift_unknownWeakAssign(WeakReference *object, void *value);
FUNCTION(UnknownWeakAssign, swift_unknownWeakAssign, DefaultCC,
RETURNS(VoidTy),
RETURNS(WeakReferencePtrTy),
ARGS(WeakReferencePtrTy, UnknownRefCountedPtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void *swift_unknownWeakLoad(WeakReference *object);
FUNCTION(UnknownWeakLoadStrong, swift_unknownWeakLoadStrong,DefaultCC,
Expand All @@ -542,47 +542,47 @@ FUNCTION(UnknownWeakTakeStrong, swift_unknownWeakTakeStrong,DefaultCC,
ARGS(WeakReferencePtrTy),
ATTRS(NoUnwind))

// void swift_unknownWeakCopyInit(WeakReference *dest, WeakReference *src);
// WeakReference *swift_unknownWeakCopyInit(WeakReference *dest, WeakReference *src);
FUNCTION(UnknownWeakCopyInit, swift_unknownWeakCopyInit, DefaultCC,
RETURNS(VoidTy),
RETURNS(WeakReferencePtrTy),
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownWeakTakeInit(WeakReference *dest, WeakReference *src);
// void *swift_unknownWeakTakeInit(WeakReference *dest, WeakReference *src);
FUNCTION(UnknownWeakTakeInit, swift_unknownWeakTakeInit, DefaultCC,
RETURNS(VoidTy),
RETURNS(WeakReferencePtrTy),
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownWeakCopyAssign(WeakReference *dest, WeakReference *src);
// WeakReference *swift_unknownWeakCopyAssign(WeakReference *dest, WeakReference *src);
FUNCTION(UnknownWeakCopyAssign, swift_unknownWeakCopyAssign, DefaultCC,
RETURNS(VoidTy),
RETURNS(WeakReferencePtrTy),
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownWeakTakeAssign(WeakReference *dest, WeakReference *src);
// WeakReference *swift_unknownWeakTakeAssign(WeakReference *dest, WeakReference *src);
FUNCTION(UnknownWeakTakeAssign, swift_unknownWeakTakeAssign, DefaultCC,
RETURNS(VoidTy),
RETURNS(WeakReferencePtrTy),
ARGS(WeakReferencePtrTy, WeakReferencePtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownUnownedDestroy(UnownedReference *object);
FUNCTION(UnknownUnownedDestroy, swift_unknownUnownedDestroy, DefaultCC,
RETURNS(VoidTy),
ARGS(UnownedReferencePtrTy),
ATTRS(NoUnwind))

// void swift_unknownUnownedInit(UnownedReference *object, void *value);
// UnownedReference *swift_unknownUnownedInit(UnownedReference *object, void *value);
FUNCTION(UnknownUnownedInit, swift_unknownUnownedInit, DefaultCC,
RETURNS(VoidTy),
RETURNS(UnownedReferencePtrTy),
ARGS(UnownedReferencePtrTy, UnknownRefCountedPtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownUnownedAssign(UnownedReference *object, void *value);
// UnownedReference *swift_unknownUnownedAssign(UnownedReference *object, void *value);
FUNCTION(UnknownUnownedAssign, swift_unknownUnownedAssign, DefaultCC,
RETURNS(VoidTy),
RETURNS(UnownedReferencePtrTy),
ARGS(UnownedReferencePtrTy, UnknownRefCountedPtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void *swift_unknownUnownedLoad(UnownedReference *object);
FUNCTION(UnknownUnownedLoadStrong, swift_unknownUnownedLoadStrong, DefaultCC,
Expand All @@ -596,29 +596,29 @@ FUNCTION(UnknownUnownedTakeStrong, swift_unknownUnownedTakeStrong, DefaultCC,
ARGS(UnownedReferencePtrTy),
ATTRS(NoUnwind))

// void swift_unknownUnownedCopyInit(UnownedReference *dest, UnownedReference *src);
// UnownedReference *swift_unknownUnownedCopyInit(UnownedReference *dest, UnownedReference *src);
FUNCTION(UnknownUnownedCopyInit, swift_unknownUnownedCopyInit, DefaultCC,
RETURNS(VoidTy),
RETURNS(UnownedReferencePtrTy),
ARGS(UnownedReferencePtrTy, UnownedReferencePtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownUnownedTakeInit(UnownedReference *dest, UnownedReference *src);
// UnownedReference *swift_unknownUnownedTakeInit(UnownedReference *dest, UnownedReference *src);
FUNCTION(UnknownUnownedTakeInit, swift_unknownUnownedTakeInit, DefaultCC,
RETURNS(VoidTy),
RETURNS(UnownedReferencePtrTy),
ARGS(UnownedReferencePtrTy, UnownedReferencePtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownUnownedCopyAssign(UnownedReference *dest, UnownedReference *src);
// UnownedReference *swift_unknownUnownedCopyAssign(UnownedReference *dest, UnownedReference *src);
FUNCTION(UnknownUnownedCopyAssign, swift_unknownUnownedCopyAssign, DefaultCC,
RETURNS(VoidTy),
RETURNS(UnownedReferencePtrTy),
ARGS(UnownedReferencePtrTy, UnownedReferencePtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// void swift_unknownUnownedTakeAssign(UnownedReference *dest, UnownedReference *src);
// UnownedReference *swift_unknownUnownedTakeAssign(UnownedReference *dest, UnownedReference *src);
FUNCTION(UnknownUnownedTakeAssign, swift_unknownUnownedTakeAssign, DefaultCC,
RETURNS(VoidTy),
RETURNS(UnownedReferencePtrTy),
ARGS(UnownedReferencePtrTy, UnownedReferencePtrTy),
ATTRS(NoUnwind))
ATTRS(NoUnwind, FirstParamReturned))

// bool swift_isUniquelyReferencedNonObjC(const void *);
FUNCTION(IsUniquelyReferencedNonObjC, swift_isUniquelyReferencedNonObjC,
Expand Down
Loading