On Tue, 17 Sep 2024 22:28:17 GMT, Claes Redestad <redes...@openjdk.org> wrote:
>> This PR exploits the observation that in many of the cases where we call >> `methodType.invokerType()` we immediately translate it into a `Name[]` where >> the only effect is to create an array with an additional leading >> `BasicType.L_TYPE` argument. Only in a subset of cases will a corresponding >> `invokerType()` be created later to bind the MH to an invoker. >> >> Providing methods to bypass the creationg of such transient, intermediary >> `MethodType` creation avoids excessive allocations and adding types to the >> MT interning table that quickly become stale. >> >> Number of executed bytecode on a trivial HelloLambda application drops >> locally from ~517k to ~505k. > > Claes Redestad has updated the pull request incrementally with one additional > commit since the last revision: > > Remove argumentsWithTrailingObjectArguments (only one use), handle the > logic at callsite src/java.base/share/classes/java/lang/invoke/DirectMethodHandle.java line 256: > 254: if (doesAlloc) { > 255: var ptypes = mtype.ptypes(); > 256: var newPtypes = new Class<?>[ptypes.length + (doesAlloc ? 2 > : 1)]; Suggestion: var newPtypes = new Class<?>[ptypes.length + 2]; ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/21035#discussion_r1764097518