RFR: 8340456: Reduce overhead of proxying Object methods in ProxyGenerator
Chen Liang
liach at openjdk.org
Thu Sep 19 18:37:35 UTC 2024
On Thu, 19 Sep 2024 14:08:04 GMT, Claes Redestad <redestad at openjdk.org> wrote:
> This PR changes proxy code gen to avoid generating `Class.forName("java.lang.Object")`, instead emitting an ldc for the class literal, `ldc(CD_Object)`, java code equivalent `Object.class`.
>
> More types could profitably use `ldc(ClassDesc/-Entry)`, taking cues from `InvokerBytecodeGenerator.isStaticallyInvocable`, but just addressing the `Object` methods gets rid of most `Class.forName` emits. It's not terribly important for throughput performance since these are called in the generated `clinit`, so getting a quick win with few additional checks is a good starting point.
>
> Added a few unrelated minor refactors/improvements, guided by diagnostic runs of the now fixed microbenchmark.
Replacing Class.forName with ldc or even condy is an esoteric topic. We can dive into that later and pick up the obvious gains.
-------------
Marked as reviewed by liach (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/21090#pullrequestreview-2316431460
More information about the core-libs-dev
mailing list