On Wed, 22 Mar 2023 17:37:07 GMT, Adam Sotona <asot...@openjdk.org> wrote:
>> java.base java.lang.reflect.ProxyGenerator uses ASM to generate proxy >> classes and this patch converts it to use Classfile API. >> >> Please review. >> >> Thank you, >> Adam > > Adam Sotona has updated the pull request with a new target base due to a > merge or a rebase. The pull request now contains 201 commits: > > - Merge branch 'master' into JDK-8294961 > > # Conflicts: > # src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java > - ClassEntry caching ClassDesc to improve performance > - MethodTypeDesc performance improvements > - improved method descriptor construction > - Apply suggestions from code review > > Co-authored-by: liach <7806504+li...@users.noreply.github.com> > - Merge branch 'master' into JDK-8294961-proxy > - Merge branch 'master' into JDK-8294961-proxy > - Merge branch 'JDK-8294982' into JDK-8294961 > - removed obsolete javadoc from implementation classes > - minor fix in CodeBuilder and added test cases to LDCTest > - ... and 191 more: https://git.openjdk.org/jdk/compare/a2d8f634...2787185c src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java line 77: > 75: private static final MethodTypeDesc > 76: MTD_boolean = MethodTypeDesc.of(CD_boolean), > 77: MTD_void = MethodTypeDesc.of(CD_void), Suggestion: Already in `ConstantDescs` src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java line 91: > 89: > 90: private static final String NAME_CTOR = "<init>"; > 91: private static final String NAME_CLINIT = "<clinit>"; Can be replaced with `ConstantDescs.INIT_NAME` and `CLASS_INIT_NAME` src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java line 727: > 725: private void codeWrapArgument(CodeBuilder cob, Class<?> type, > int slot) { > 726: if (type.isPrimitive()) { > 727: > cob.loadInstruction(TypeKind.fromDescriptor(type.descriptorString()).asLoadable(), > slot); Suggestion: cob.loadInstruction(TypeKind.from(type).asLoadable(), slot); src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java line 746: > 744: cob.typeCheckInstruction(Opcode.CHECKCAST, > prim.wrapperClass) > 745: .invokevirtual(prim.wrapperClass, > prim.unwrapMethodName, prim.unwrapMethodType) > 746: > .returnInstruction(TypeKind.fromDescriptor(type.descriptorString()).asLoadable()); Suggestion: .returnInstruction(TypeKind.from(type).asLoadable()); ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/10991#discussion_r1145201367 PR Review Comment: https://git.openjdk.org/jdk/pull/10991#discussion_r1145201895 PR Review Comment: https://git.openjdk.org/jdk/pull/10991#discussion_r1145206384 PR Review Comment: https://git.openjdk.org/jdk/pull/10991#discussion_r1145264294