RFR: 8198755: Reduce cost of InvokerBytecodeGenerator::isStaticallyInvocable/-Nameable

Paul Sandoz paul.sandoz at oracle.com
Tue Feb 27 16:42:16 UTC 2018

> On Feb 27, 2018, at 7:42 AM, Claes Redestad <claes.redestad at oracle.com> wrote:
> Hi,
> when generating LF classes with InvokerBytecodeGenerator, almost 5% of executed code is concerned with determining if members and parameters are statically invocable and/or nameable, which we can assert is always true for MethodHandle arguments.

IIRC this is for the case where we can reliably crack open the method handle (from it’s member name) and invoke it directly?

> Since MethodHandle targets and parameters are common, it's a profitable startup optimization to add a fast-path test for this.
> Webrev: http://cr.openjdk.java.net/~redestad/8198755/jdk.00/
> Bug: https://bugs.openjdk.java.net/browse/JDK-8198755

 957         for (int i = 0; i < mtype.parameterCount(); i++)
 958             if (!isStaticallyNameable(mtype.parameterType(i)))

Revert back to: 

         for (Class<?> ptype : mtype.parameterArray())
              if (!isStaticallyNameable(ptype))



More information about the core-libs-dev mailing list