YJIT: Support ifunc on invokeblock #7233
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is the
ifunc
support that was skipped in #6640.It's not used that much now, but converting
Array#each
to Ruby #6687 makes it used significantly more often. I'd like to introduce this support first for fair comparison.#6687 reduces ratio_in_yjit from 91.7% to 88.8% on railsbench with run_once.sh, but merging this PR to that branch improves it from 88.8% to 89.8%. We also need to support
iseq_arg0_splat
to fully recover it, but it should be done in another PR.This does help reducing invokeblock exits on a few benchmarks on master as well:
hexapdf
Before
After
railsbench
Before
After
SFR
This might help SFR more than those benchmarks. On Jan 19th, we had: