This is a continuation of #9219 after the base functionality there was merged into JRuby 10.1.1.0.
The changes here are leftover from that PR as well as new tasks.
Core changes
Introduce annotations and processing to allow specifying keyword-receiving overloads.
Identify and modify an existing keyword-argument core method to have a specialized form and redirect generic forms to it. Any methods that accept a single keyword like exception: or nonblock: would be good candidates for now.
JIT changes
Caller side
The caller side indy optimizations can be implemented early and provides benefits without the rest due to moving hash construction and flags-setting into the call site.
Expand support for MetaCallSite to all invocations (currently limited to very specific shapes)
Expand MetaCallSite to support lazy splatting (defer Array construction until we determine the shape of the target, possibly avoiding multiple allocations)
Callee side
Wire up invokedynamic callee side to discover and bind specialized keyword argument paths, similar to the eager arity-splitting logic already introduced. (experiment started in the initial commit to this PR)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 a continuation of #9219 after the base functionality there was merged into JRuby 10.1.1.0.
The changes here are leftover from that PR as well as new tasks.
Core changes
JIT changes
Caller side
The caller side indy optimizations can be implemented early and provides benefits without the rest due to moving hash construction and flags-setting into the call site.
Callee side