It's surprising that leaving the temporary struct uninitialized avoids the crash. Smells like a GCC bug or some UB on our end the optimizer is exploiting. Does building with `-fno-strict-aliasing` help?alanwu (Alan Wu)
The `as` casts are somewhat dangerous since when the type on either side change, it silently becomes a lossy conversion. This is why we have `IntoUsize` as well as other guaranteed lossless conversion utilities in stdlib. Use them. For ...alanwu (Alan Wu)
When the name is `as_*`, the guideline expects the return type to be a reference type. Also, it's good to have contrast in the naming from the more dangerous `as usize` cast `IntoUsize` is meant to be preferred over. See: https://rust-l...alanwu (Alan Wu)
Previously, YJIT returned truthy for the block given query at the top level. That's incorrect because the top level script never receives a block, and `yield` is a syntax error there. Inside methods, the number of hops to get from `iseq...alanwu (Alan Wu)
Previously, when the output register and the base register are the same in `out = Lea(Mem(out, disp))`, we did out = disp out = out + out Which wasn't the desired `out = out + disp`. Fixes a SEGV with `--zjit-call-threshold=2`...alanwu (Alan Wu)
This helps ZJIT optimize ~300,000 more sends in ruby-bench's lobsters Top-6 not optimized method types for send_without_block Before After iseq: 713,899 (48.0%) iseq: 725,668 (62.4...alanwu (Alan Wu)