Skip to content
Merged
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
16 changes: 9 additions & 7 deletions stdlib/public/stubs/SwiftNativeNSXXXBaseARC.m
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,21 @@
// decomposedStringWithCanonicalMapping implementation. Instead, we use a local
// autorelease pool to prevent leaking of the temporary object into the callers
// autorelease pool.
#if defined(__i386__)
#define AUTORELEASEPOOL @autoreleasepool
#else
// On other platforms we rely on the remove from autorelease pool optimization.
//
// PLUS ZERO TODO: Right now we force an autoreleasepool here where we really do
// not want to do so. The reason why is that without the autoreleasepool (or
//
// FIXME: Right now we force an autoreleasepool here on x86_64 where we really
// do not want to do so. The reason why is that without the autoreleasepool (or
// really something like a defer), we tail call
// objc_retainAutoreleasedReturnValue which blocks the hand shake. Evidently
// this is something that we do not want to do. See:
// b79ff50f1bca97ecfd053372f5f6dc9d017398bc. Until that is resolved, just create
// an autoreleasepool here.
// an autoreleasepool here on x86_64. On arm/arm64 we do not have such an issue
// since we use an assembly marker instead.
#if defined(__i386__) || defined(__x86_64__)
#define AUTORELEASEPOOL @autoreleasepool
#else
// On other platforms we rely on the remove from autorelease pool optimization.
#define AUTORELEASEPOOL
#endif

SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
Expand Down