In jit_rb_int_lshift(), we guard against the right hand side changing since we want to avoid generating variable length shifts. When control reaches a putobject and opt_ltlt pair, though, we know that the right hand side never changes.
This commit detects this situation and substitutes an implementation that does not guard against the right hand side changing, saving that work.
Deleted some putobject Rust tests since they aren't that valuable and cause linking issues.
YJIT: Optimize putobject+opt_ltlt for integers
In
jit_rb_int_lshift(), we guard against the right hand side changingsince we want to avoid generating variable length shifts. When control
reaches a
putobjectandopt_ltltpair, though, we know that the righthand side never changes.
This commit detects this situation and substitutes an implementation
that does not guard against the right hand side changing, saving that
work.
Deleted some
putobjectRust tests since they aren't that valuable andcause linking issues.
Nice boost to
optcarrotandprotoboeuf: