RFR: 8294969: Convert jdk.jdeps javap to use the Classfile API [v11]

Vicente Romero vromero at openjdk.org
Wed Sep 6 20:00:51 UTC 2023


On Thu, 20 Jul 2023 09:11:20 GMT, Adam Sotona <asotona at openjdk.org> wrote:

>> javap uses proprietary com.sun.tools.classfile library to parse class files.
>> 
>> This patch converts javap to use Classfile API.
>> 
>> Please review.
>> 
>> Thanks,
>> 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 227 commits:
> 
>  - Merge branch 'master' into JDK-8294969-javap
>  - Merge branch 'master' into JDK-8294969-javap
>  - fixed code printing and ConstantPoolException reporting indoex
>  - added DydnamicConstantPoolEntry::bootstrapMethodIndex
>    fix of javap ConstantWriter to print DynamicConstantPoolEntry without accessing BSM attribute
>  - extended ClassReader about specific entry-reading methods to avoid class cast and throw ConstantPoolException instead
>  - throwing ConstantPoolException for invalid BSM entry index
>  - Merge branch 'master' into JDK-8294969-javap
>  - fixed JavapTask
>  - Merge branch 'master' into JDK-8294969-javap
>  - Merge branch 'master' into JDK-8294969-javap
>    
>    # Conflicts:
>    #	src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantPoolException.java
>  - ... and 217 more: https://git.openjdk.org/jdk/compare/37c756a7...4960751b

src/jdk.jdeps/share/classes/com/sun/tools/javap/TypeAnnotationWriter.java line 134:

> 132:     private ClassWriter classWriter;
> 133:     private Map<Integer, List<Note>> pcMap;
> 134:     private CodeAttribute lr;

nit: name `lr` doesn't relate much to the type of the field

test/langtools/tools/javap/8260403/T8260403.java line 42:

> 40:                 new String[]{"-c", System.getProperty("test.classes") + "/InvalidSignature.class"},
> 41:                 new PrintWriter(sw));
> 42:         System.out.println(sw);

is this for debug purpose only?

test/langtools/tools/javap/malformed/MalformedTest.java line 2:

> 1: /*
> 2:  * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.

isn't this test testing the same as: `test/langtools/tools/javap/8260403/T8260403.java`?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/11411#discussion_r1317756417
PR Review Comment: https://git.openjdk.org/jdk/pull/11411#discussion_r1317759719
PR Review Comment: https://git.openjdk.org/jdk/pull/11411#discussion_r1317761623


More information about the compiler-dev mailing list