f3d1557d5c (master): Revert "ZJIT: Allow ccalls above 7 arguments"

1 view
Skip to first unread message

Alan Wu

unread,
Dec 16, 2025, 2:53:58 PM (11 hours ago) Dec 16
to ruby...@g.ruby-lang.org
Alan Wu 2025-12-16 19:53:31 +0000 (Tue, 16 Dec 2025)

New Revision: f3d1557d5c

https://github.com/ruby/ruby/commit/f3d1557d5c

Log:
Revert "ZJIT: Allow ccalls above 7 arguments"

This reverts commit 2f151e76b5dc578026706b31f054d5caf5374b05.

The SP decrement (push) before the call do not match up with
the pops after the call, so registers were restored incorrectly.

Code from:

./miniruby --zjit-call-threshold=1 --zjit-dump-disasm -e 'p Time.new(1992, 9, 23, 23, 0, 0, :std)'

str x11, [sp, #-0x10]!
str x12, [sp, #-0x10]!
stur x7, [sp] # last argument
mov x0, x20
mov x7, x6
mov x6, x5
mov x5, x4
mov x4, x3
mov x3, x2
mov x2, x1
ldur x1, [x29, #-0x20]
mov x16, #0xccfc
movk x16, #0x2e7, lsl #16
movk x16, #1, lsl #32
blr x16
ldr x12, [sp], #0x10 # supposed to match str x12, [sp, #-0x10]!, but got last argument
ldr x11, [sp], #0x10

Modified files:
zjit/src/asm/arm64/opnd.rs
zjit/src/backend/arm64/mod.rs
zjit/src/backend/lir.rs
zjit/src/backend/x86_64/mod.rs
zjit/src/codegen.rs
Reply all
Reply to author
Forward
0 new messages