On Tue, 29 Nov 2022 21:57:09 GMT, Claes Redestad <redes...@openjdk.org> wrote:

> `java.lang.invoke.LambdaForm.NamedFunction` has an `invoker` field acting as 
> a cache, but this field is only used for lambda form interpretation, thus not 
> very performance sensitive. 
> 
> Since the invoker is already cached in the method type hierarchy we could 
> replace it with a cache of the invocation type instead. This means cost to 
> retrieve an invoker for lambda form interpretation is only slightly affected 
> (a few ns/op that end up in the noise since interpretation already incur a 
> >50ns/op overhead on even the simplest forms), while speeding up bytecode 
> generation for `LF`s with `NamedFunction`s not holding a resolvedHandle.
> 
> Being lazy about the creation of the type is not significantly beneficial 
> right now, but is done in anticipation of future changes that may better 
> defer bytecode spinning for `LambdaForm`s.

This pull request has now been integrated.

Changeset: 4485d4e5
Author:    Claes Redestad <redes...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/4485d4e517b6dece7a9eeb5cf9a2180d84956da3
Stats:     19 lines in 1 file changed: 9 ins; 6 del; 4 mod

8297728: Cache invocation type rather than invoker in NamedFunction

Reviewed-by: jvernee

-------------

PR: https://git.openjdk.org/jdk/pull/11424

Reply via email to