Thomas Klemm 8b9dc082e7
ZJIT: Don't side-exit on every super from a method that got a block (#19682)
A specialized invokesuper guards that the method's frame has no block
handler, and that guard never recompiled, so a super in a method called
with a block side-exited on every call. Profile whether invokesuper ran
with a block and use the dynamic super for those sites, and let the
guard recompile when a block shows up after compilation.

Only count the frame's block when the call site doesn't pass its own
(`super(&b)`, `super { }`), and keep the flag in a `bool` on
`ProfileEntry`, which fits in existing padding.

Fixes https://github.com/Shopify/ruby/issues/1100
2026-11-04 17:51:12 -08:00
..
…