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. ------------- Commit messages: - Merge branch 'master' into proxy_codeClass_ProxyPerf - Minor improvements - Refactor - Tune warmup and measurement time for ProxyGeneratorBench - rename and improve Proxy micros - Fix ProxyPerf microbenchmark and micro-optimize codeClassForName Changes: https://git.openjdk.org/jdk/pull/21090/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21090&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8340456 Stats: 327 lines in 4 files changed: 146 ins; 166 del; 15 mod Patch: https://git.openjdk.org/jdk/pull/21090.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/21090/head:pull/21090 PR: https://git.openjdk.org/jdk/pull/21090