Skip to content

Commit a604d99

Browse files
authored
Merge pull request #85403 from drexin/wip-ret-rel-perf
[Runtime] Don't use write back in EIC retain/release
2 parents 22ca80e + defd325 commit a604d99

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

stdlib/public/SwiftDirectRuntime/RetainRelease.s

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@ Lslowpath_release:
192192
// Save/restore the preservemost registers and call swift_retain.
193193
Lcall_swift_release:
194194
maybe_pacibsp
195-
str x9, [sp, #-0x50]!
195+
sub sp, sp, #0x50
196+
str x9, [sp]
196197
stp x10, x11, [sp, #0x10]
197198
stp x12, x13, [sp, #0x20]
198199
stp x14, x15, [sp, #0x30]
@@ -207,12 +208,14 @@ Lcall_swift_release:
207208
ldp x14, x15, [sp, #0x30]
208209
ldp x12, x13, [sp, #0x20]
209210
ldp x10, x11, [sp, #0x10]
210-
ldr x9, [sp], #0x50
211+
ldr x9, [sp]
212+
add sp, sp, #0x50
211213
ret_maybe_ab
212214

213215
LbridgeObjectReleaseDirectObjC:
214216
maybe_pacibsp
215-
stp x0, x9, [sp, #-0x50]!
217+
sub sp, sp, #0x50
218+
stp x0, x9, [sp]
216219
stp x10, x11, [sp, #0x10]
217220
stp x12, x13, [sp, #0x20]
218221
stp x14, x15, [sp, #0x30]
@@ -227,7 +230,8 @@ LbridgeObjectReleaseDirectObjC:
227230
ldp x14, x15, [sp, #0x30]
228231
ldp x12, x13, [sp, #0x20]
229232
ldp x10, x11, [sp, #0x10]
230-
ldp x0, x9, [sp], #0x50
233+
ldp x0, x9, [sp]
234+
add sp, sp, #0x50
231235
LbridgeObjectReleaseObjCRet:
232236
ret_maybe_ab
233237

@@ -330,7 +334,8 @@ Lslowpath_retain:
330334
// Save/restore the preservemost registers and call swift_retain.
331335
Lcall_swift_retain:
332336
maybe_pacibsp
333-
stp x0, x9, [sp, #-0x50]!
337+
sub sp, sp, #0x50
338+
stp x0, x9, [sp]
334339
stp x10, x11, [sp, #0x10]
335340
stp x12, x13, [sp, #0x20]
336341
stp x14, x15, [sp, #0x30]
@@ -345,12 +350,14 @@ Lcall_swift_retain:
345350
ldp x14, x15, [sp, #0x30]
346351
ldp x12, x13, [sp, #0x20]
347352
ldp x10, x11, [sp, #0x10]
348-
ldp x0, x9, [sp], #0x50
353+
ldp x0, x9, [sp]
354+
add sp, sp, #0x50
349355
ret_maybe_ab
350356

351357
Lswift_bridgeObjectRetainDirectObjC:
352358
maybe_pacibsp
353-
stp x0, x9, [sp, #-0x50]!
359+
sub sp, sp, #0x50
360+
stp x0, x9, [sp]
354361
stp x10, x11, [sp, #0x10]
355362
stp x12, x13, [sp, #0x20]
356363
stp x14, x15, [sp, #0x30]
@@ -365,7 +372,8 @@ Lswift_bridgeObjectRetainDirectObjC:
365372
ldp x14, x15, [sp, #0x30]
366373
ldp x12, x13, [sp, #0x20]
367374
ldp x10, x11, [sp, #0x10]
368-
ldp x0, x9, [sp], #0x50
375+
ldp x0, x9, [sp]
376+
add sp, sp, #0x50
369377
ret_maybe_ab
370378

371379
#else

0 commit comments

Comments
 (0)