ruby/zjit
Alan Wu da0de3cb87 ZJIT: A64: Fix splitting for large memory displacements
On the ruby side, this fixes a crash for methods with 39 or more
parameters. We used to miscomp those entry points due to Insn::Lea
picking ADDS which cannot reference SP:

    # set method params: 40
    mov x0, #0xfee8
    movk x0, #0xffff, lsl #16
    movk x0, #0xffff, lsl #32
    movk x0, #0xffff, lsl #48
    adds x0, xzr, x0

Have Lea work for all i32 displacements and avoid involving the split
pass. Previously, direct use of Insn::Lea directly from the user (as
opposed to generated by the split pass for some memory operations)
wasn't split, so being able to handle the whole range in arm64_emit()
was implicitly required. Also, not going through split reduces register
pressure.
2025-07-31 13:45:20 -04:00
..
bindgen ZJIT: Add --zjit-stats (#14034) 2025-07-29 10:00:15 -07:00
src ZJIT: A64: Fix splitting for large memory displacements 2025-07-31 13:45:20 -04:00
.gitignore
build.rs ZJIT: Add --allow-multiple-definition for make zjit-test 2025-05-21 01:22:55 +09:00
Cargo.lock Use expect-test for HIR tests 2025-04-18 21:53:01 +09:00
Cargo.toml ZJIT: Have make zjit-test use the same Cargo features as miniruby 2025-07-16 14:10:22 -04:00
zjit.mk ZJIT: Start testing againt /test 2025-07-23 19:52:59 -04:00