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

Reply via email to