diff options
| author | Alan Wu <XrXr@users.noreply.github.com> | 2025-07-18 14:30:58 -0400 |
|---|---|---|
| committer | Alan Wu <XrXr@users.noreply.github.com> | 2025-07-21 23:09:42 -0400 |
| commit | e77eee96a3bd4ba737f6aee01acaffe795d7be60 (patch) | |
| tree | 21268a8fd55bd8c6d1f8a4056bd9f8e06ebc9c3f /include/ruby/encoding.h | |
| parent | 9f961a4b309cd2ac1b58e1c5633b8a744e042f3d (diff) | |
ZJIT: Load return value before frame teardown
Or else the following returns garbage since it loads after
moving SP. Prior bad disassembly:
def a(n1,n2,n3,n4,n5,n6,n7,n8) = n8
a(1,1,1,1,1,1,1,0)
# Block: bb0(v0, v1, v2, v3, v4, v5, v6, v7, v8)
stp x29, x30, [sp, #-0x10]!
mov x29, sp
# bump C stack pointer
sub sp, sp, #0x10
# Insn: v10 Return v8
# pop stack frame
adds x19, x19, #0x38
stur x19, [x20, #0x10]
# restore C stack pointer
add sp, sp, #0x10
mov sp, x29
ldp x29, x30, [sp], #0x10
ldur x0, [sp]
ret
Diffstat (limited to 'include/ruby/encoding.h')
0 files changed, 0 insertions, 0 deletions
