Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Oct 28, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

tekknolagi and others added 18 commits October 28, 2025 10:49
We can fully remove the CCall now.
Fixes Shopify#814

This change specializes the case of calling `Array#pop` on a non frozen array with no arguments. `Array#pop` exists in the non-inlined C function list in the ZJIT SFR performance burndown list.

If in the future it is helpful, this patch could be extended to support the case where an argument is provided, but this initial work seeks to elide the ruby frame normally pushed in the case of `Array#pop` without an argument.
Once we add register spill, the C stack will have not only spilled basic
block params but also spilled VRegs.

We won't know how many stack slots are used for spilled VRegs until
alloc_regs, so you can't compute an offset as of writing LIR.
We can measure how many we can remove by adding type information to C
functions, etc.
`hir.rs` was getting rather large, so I've opted to move the inline tests into their own files. This should also help when looking for where to put your tests, as the optimization tests have a dedicated file.

Future follow up work could make the layout of test modules more idiomatic to Rust.
@pull pull bot locked and limited conversation to collaborators Oct 28, 2025
@pull pull bot added the ⤵️ pull label Oct 28, 2025
@pull pull bot merged commit 8a76597 into turkdevops:master Oct 28, 2025
1 of 2 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants