Skip to content

Commit f691657

Browse files
committed
Use an autorelease pool on i386 instead
1 parent e015d71 commit f691657

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

stdlib/public/stubs/SwiftNativeNSXXXBaseARC.m

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,46 @@
2424
// want ARC to insert 'objc_retainAutoreleasedReturnValue' and the necessary
2525
// markers for the hand-off.
2626

27+
// On i386 we use an autorelease pool to prevent leaking.
28+
#if defined(__i386__)
29+
#define AUTORELEASEPOOL @autoreleasepool
30+
#else
31+
// On other platforms we rely on autorelease return optimization.
32+
#define AUTORELEASEPOOL
33+
#endif
34+
2735
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
2836
size_t swift_stdlib_NSStringHashValue(NSString *NS_RELEASES_ARGUMENT str,
2937
bool isASCII) {
30-
return isASCII ? str.hash : str.decomposedStringWithCanonicalMapping.hash;
38+
AUTORELEASEPOOL {
39+
return isASCII ? str.hash : str.decomposedStringWithCanonicalMapping.hash;
40+
}
3141
}
3242

3343
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
3444
size_t
3545
swift_stdlib_NSStringHashValuePointer(void *opaque, bool isASCII) {
3646
NSString __unsafe_unretained *str =
3747
(__bridge NSString __unsafe_unretained *)opaque;
38-
return isASCII ? str.hash : str.decomposedStringWithCanonicalMapping.hash;
48+
AUTORELEASEPOOL {
49+
return isASCII ? str.hash : str.decomposedStringWithCanonicalMapping.hash;
50+
}
3951
}
4052

4153
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
4254
NS_RETURNS_RETAINED NSString *
4355
swift_stdlib_NSStringLowercaseString(NSString *NS_RELEASES_ARGUMENT str) {
44-
return str.lowercaseString;
56+
AUTORELEASEPOOL {
57+
return str.lowercaseString;
58+
}
4559
}
4660

4761
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_INTERFACE
4862
NS_RETURNS_RETAINED NSString *
4963
swift_stdlib_NSStringUppercaseString(NSString *NS_RELEASES_ARGUMENT str) {
50-
return str.uppercaseString;
64+
AUTORELEASEPOOL {
65+
return str.uppercaseString;
66+
}
5167
}
5268

5369
#endif

test/stdlib/StringMemoryTest.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66
// REQUIRES: executable_test
77
// REQUIRES: objc_interop
88

9-
// The autorelease return optimizaion seems to be failing in the simulator.
10-
// rdar://34863458
11-
// XFAIL: CPU=i386
12-
139
import Foundation
1410

1511
let str = "abcdefg\u{A758}hijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\u{A759}"

0 commit comments

Comments
 (0)