New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
More indy call optz #7720
Merged
Merged
More indy call optz #7720
Conversation
This file contains 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
headius
force-pushed
the
more_indy_call_optz
branch
2 times, most recently
from
March 15, 2023 17:26
ba28f28
to
690a24e
Compare
For non-indy mode, replace setCallInfo(0) with clearCallInfo(). For indy mode, embed flags in an indy call site so the bytecode is always just ALOAD context, INVOKEDYNAMIC.
This moves the update of call info state into the indy call site for all normal and super invocations. The call info update happens in a method handle "fold" combiner just prior to calling the target method body.
headius
force-pushed
the
more_indy_call_optz
branch
2 times, most recently
from
March 15, 2023 21:46
5406f9a
to
255a958
Compare
Also remove Java 8 from indy runs of test:jruby and spec:compiler.
headius
force-pushed
the
more_indy_call_optz
branch
from
March 16, 2023 02:19
255a958
to
be53dbc
Compare
Adding an indy test:jruby:jit job to CI uncovered #7726 which will have a fix from headius/invokebinder#15 soon. |
headius
added a commit
to headius/jruby
that referenced
this pull request
Mar 16, 2023
headius
force-pushed
the
more_indy_call_optz
branch
from
March 16, 2023 12:45
3857c7b
to
faef718
Compare
headius
force-pushed
the
more_indy_call_optz
branch
from
March 17, 2023 19:26
faef718
to
04d3687
Compare
The checkpoint logic was hooked up to a SwitchPoint, but two other things were missing: * The SwitchPoint was never invalidated, so the indy checkpoint would never run. * The indy checkpoint itself did not call into the thread event logic. Fixing this will mean that any thread event now invalidates all code with an indy checkpoint, so we'll need to evaluate how big an impact that has. The code should reoptimize back to solid, but if these events are being used heavily they will continue to invalidate optimized code.
headius
force-pushed
the
more_indy_call_optz
branch
from
March 17, 2023 20:02
04d3687
to
583fa5b
Compare
The specialized method_missing methods already pass the symbol for us, so we should just invoke it generically and not pass an additional symbol along. This logic needs to be simplified.
headius
force-pushed
the
more_indy_call_optz
branch
3 times, most recently
from
March 20, 2023 19:17
2125b6c
to
ffc25cb
Compare
* Cache a call site entry in the same way that indy logic does. * Avoid acquiring the same method name symbol repeatedly. * Reduce duplication in method_missing handling in call sites. * Pass all five arities through Helpers.MethodMissingMethod to reduce argument boxing and copying.
headius
force-pushed
the
more_indy_call_optz
branch
from
March 20, 2023 20:55
ffc25cb
to
48ef556
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Various improvements to invokedynamic call binding.