diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2025-08-22 12:59:31 -0400 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2025-08-22 20:13:22 -0400 |
commit | 5b5b5b3af555a0349c3d7e4e2a50f36ecd848560 (patch) | |
tree | d7ac0dd013c0117468f3318163133d90595ef101 /parser_st.c | |
parent | 8c24e6683b236a390587282998d5885c932cfef4 (diff) |
Previously, we only spilled the arguments necessary for the particular
send. In case the callee raises and a rescue resumes the ISEQ, that
did not present a complete stack state. E.g. in `[1, (raise rescue 2)]`
the raise send only spills `self`, when `1` also needs to be spilled.
Spill the whole stack. Adjust parsing for `opt_aref_with` since the
key argument for the send now needs to be described by the frame state
of the send.
This changes the contract for `Insn::SendWithoutBlock` to use arguments
from the interpreter stack as described by its frame state.
Diffstat (limited to 'parser_st.c')
0 files changed, 0 insertions, 0 deletions