-
-
Notifications
You must be signed in to change notification settings - Fork 924
Methods that do not bind directly with invokedynamic #5246
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
Comments
Ideally we need to slim down or eliminate the frobnicate logic, since it's over complex and likely will limit the inlining potential of these call sites. See #5246.
* Match wording for directly bound jitted methods * Use method location for printing out method's impl class * Log when a native method failed to bind directly due to arity See related work in #5246.
Kwargs methods now bind directly (0a7419a) by folding in the frobnicated args list. This is a fairly complex set of method handles on top of the already complex frobnication process, but it does appear to help performance of a |
Only the "natural" arities for getters and setters are supported.
Struct accessors and mutators now bind directly to the RubyStruct methods (8555df3). RubyStruct still needs specialization work, likely based on how we are specializing Object subclasses for instance variables. |
With the reboot of the JRuby runtime in 9k, we lost some of the invokedynamic logic to bind directly through to method bodies. These cases reverted to "indirect" binding via the DynamicMethod.call path, since their unique call logic did not have an equivalent in the new JIT.
I have been fixing some of these, like Ruby to Java calls and aliased methods, but several remain. I list them here.
I also committed a change adding indirect binding warnings to the debug output from invokedynamic bindings.
send
calls in Rails)send
do not create a double call site and will never inline, even for a single target. (affectssend
calls in Rails, obviously)The text was updated successfully, but these errors were encountered: