d81a11d4e6 (master): ZJIT: Snapshot FrameState with reordered args before direct send

1 view
Skip to first unread message

Randy Stauner

unread,
Jan 12, 2026, 4:51:17 PMJan 12
to ruby...@g.ruby-lang.org
Randy Stauner 2026-01-08 17:01:43 +0000 (Thu, 08 Jan 2026)

New Revision: d81a11d4e6

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

Log:
ZJIT: Snapshot FrameState with reordered args before direct send

You can see the reordered args in the new Snapshot right before the
DirectSend insn:

v14:Any = Snapshot FrameState { pc: 0x00, stack: [v6, v11, v13], locals: [] }
PatchPoint MethodRedefined(Object@0x00, a@0x00, cme:0x00)
PatchPoint NoSingletonClass(Object@0x00)
v22:HeapObject[class_exact*:Object@VALUE(0x00)] = GuardType v6, HeapObject[class_exact*:Object@VALUE(0x00)]
- v23:BasicObject = SendWithoutBlockDirect v22, :a (0x00), v13, v11
- v16:Any = Snapshot FrameState { pc: 0x00, stack: [v23], locals: [] }
+ v23:Any = Snapshot FrameState { pc: 0x00, stack: [v6, v13, v11], locals: [] }
+ v24:BasicObject = SendWithoutBlockDirect v22, :a (0x00), v13, v11
+ v16:Any = Snapshot FrameState { pc: 0x00, stack: [v24], locals: [] }

Modified files:
test/ruby/test_zjit.rb
zjit/src/hir.rs
zjit/src/hir/opt_tests.rs
zjit/src/hir/tests.rs
Reply all
Reply to author
Forward
0 new messages