Sometimes it's convenient to write that `make_equal_to(x, big_decision_tree_to_find_replacement)` where most of the time the decision tree gives something not equal to `x`. Since infinite loops are hard to debug and this condition is ea...alanwu (Alan Wu)
When guarding on anything but special const forms (`types::Immediate`), we need to dereference the VALUE to load RBasic::flags and maybe RBasic::class. Those are memory read effects.alanwu (Alan Wu)
Previously, when dealing with a `super()` nested in a block that runs as a method (through e.g. `define_method`), YJIT generated a guard that never passes leading to a misidentification of the callsite as megamorphic and an unconditional...alanwu (Alan Wu)
As we found out from YJIT, `super` from within a block needs a loop for the running CME guard, and the current LEP based guard always fails. Don't specialize for now so we use the fallback instead of side-exiting.alanwu (Alan Wu)
Solaris mentioned, so I'm bringing up illumos. Ruby has an [OpenIndiana](https://www.ruby-lang.org/en/documentation/installation/#openindiana) port, so this could be tested there :P https://illumos.org/man/3C/door_create alanwu (Alan Wu)
There is no splitting for these so let's add a assert to try and catch misuse. VRegs are not necessarily registers in the end, so this is best effort. In those situations they'll get a less proximate panic message.alanwu (Alan Wu)
Since we automatically preserve registers across calls, it's never necessary to manually and imprecisely do it with `C{Push,Pop}All`. Delete them to remove the maintenance burden and reduce confusion.alanwu (Alan Wu)