File tree Expand file tree Collapse file tree 1 file changed +28
-8
lines changed Expand file tree Collapse file tree 1 file changed +28
-8
lines changed Original file line number Diff line number Diff line change @@ -107,17 +107,33 @@ public func setup_json() {
107
107
JSONTester = CodablePerfTester ( encoder: JSONEncoder ( ) , decoder: JSONDecoder ( ) )
108
108
}
109
109
110
+ #if !_runtime(_ObjC)
111
+ // If we do not have an objc-runtime, then we do not have a definition for
112
+ // autoreleasepool. Add in our own fake autoclosure for it that is inline
113
+ // always. That should be able to be eaten through by the optimizer no problem.
114
+ @inline ( __always)
115
+ public func autoreleasepool< Result> (
116
+ invoking body: ( ) throws -> Result
117
+ ) rethrows -> Result {
118
+ return try body ( )
119
+ }
120
+ #endif
121
+
110
122
@inline ( never)
111
123
public func run_JSONPerfEncode( _ N: Int ) {
112
- for _ in 0 ..< N {
113
- JSONTester . encode ( )
124
+ autoreleasepool {
125
+ for _ in 0 ..< N {
126
+ JSONTester . encode ( )
127
+ }
114
128
}
115
129
}
116
130
117
131
@inline ( never)
118
132
public func run_JSONPerfDecode( _ N: Int ) {
119
- for _ in 0 ..< N {
120
- JSONTester . decode ( )
133
+ autoreleasepool {
134
+ for _ in 0 ..< N {
135
+ JSONTester . decode ( )
136
+ }
121
137
}
122
138
}
123
139
@@ -131,15 +147,19 @@ public func setup_plist() {
131
147
132
148
@inline ( never)
133
149
public func run_PlistPerfEncode( _ N: Int ) {
134
- for _ in 0 ..< N {
135
- plistTester. encode ( )
150
+ autoreleasepool {
151
+ for _ in 0 ..< N {
152
+ plistTester. encode ( )
153
+ }
136
154
}
137
155
}
138
156
139
157
@inline ( never)
140
158
public func run_PlistPerfDecode( _ N: Int ) {
141
- for _ in 0 ..< N {
142
- plistTester. decode ( )
159
+ autoreleasepool {
160
+ for _ in 0 ..< N {
161
+ plistTester. decode ( )
162
+ }
143
163
}
144
164
}
145
165
You can’t perform that action at this time.
0 commit comments