inline_array_push, inline_array_pop, and inline_array_aref did not guard/coerce the receiver to Array type before emitting Array-specific HIR instructions (ArrayPush, ArrayPop, ArrayLength, ArrayAref). This caused a MismatchedOperandTyp...rwstauner (Randy Stauner)
Anonymous modules/classes get names like `"#<Module:0x00007f...>"` from `rb_class2name`, which include a memory address that changes between runs. This makes stat keys unstable for diffing across runs and is less informative than it coul...rwstauner (Randy Stauner)
Multiple YJIT functions created overlapping `&'static mut IseqPayload` references by calling `get_iseq_payload()` multiple times for the same iseq. Overlapping &mut is UB in rust's aliasing model, and as consequence, we trigered use-afte...rwstauner (Randy Stauner)
Split rb_yjit_init into rb_yjit_init_builtin_cmes (called before ruby_init_prelude) and rb_yjit_init (called after). The prelude may load bundler via BUNDLER_SETUP which can call Kernel.prepend, moving core methods to an origin iclass. R...rwstauner (Randy Stauner)
Split rb_zjit_init into rb_zjit_init_builtin_cmes (called before ruby_init_prelude) and rb_zjit_init (called after). The prelude may load bundler via BUNDLER_SETUP which can call Kernel.prepend, moving core methods to an origin iclass. R...rwstauner (Randy Stauner)
When --zjit-trace-exits is enabled, rb_zjit_record_exit_stack was called before compile_exit restored the VM state (cfp->pc, cfp->sp, stack, locals). This ccall clobbers caller-saved registers that may hold stack/local operands, causing ...rwstauner (Randy Stauner)
Before this it would raise if zjit wasn't enabled and raise a different exception if zjit was but extended stats were not (_some_ stats are available).rwstauner (Randy Stauner)