RFR: 8307818: Convert Indify tool to Classfile API [v13]
Chen Liang
liach at openjdk.org
Sat Jun 22 13:37:21 UTC 2024
On Sat, 22 Jun 2024 09:39:46 GMT, Oussama Louati <duke at openjdk.org> wrote:
>> An indify tool in j.l.i tests (also in vmTestBase) convert some source-code private static methods with MT_ MH_, and INDY_ prefixes into MethodHandle, MethodType, and CallSite constants.
>> It currently uses ad-hoc code to process class files and intends to migrate to ASM; but since we have the Classfile API, we can migrate to Classfile API instead.
>
> Oussama Louati has updated the pull request incrementally with six additional commits since the last revision:
>
> - Update test/jdk/java/lang/invoke/indify/Indify.java
>
> Co-authored-by: ExE Boss <3889017+ExE-Boss at users.noreply.github.com>
> - Update test/jdk/java/lang/invoke/indify/Indify.java
>
> Co-authored-by: ExE Boss <3889017+ExE-Boss at users.noreply.github.com>
> - Update test/jdk/java/lang/invoke/indify/Indify.java
>
> Co-authored-by: ExE Boss <3889017+ExE-Boss at users.noreply.github.com>
> - Update test/jdk/java/lang/invoke/indify/Indify.java
>
> Co-authored-by: ExE Boss <3889017+ExE-Boss at users.noreply.github.com>
> - Update test/jdk/java/lang/invoke/indify/Indify.java
>
> Co-authored-by: ExE Boss <3889017+ExE-Boss at users.noreply.github.com>
> - fix: work done
test/jdk/java/lang/invoke/indify/Indify.java line 378:
> 376:
> 377: void writeNewClassFile(ClassModel newClassModel, Boolean changed, File sourceFile) throws IOException {
> 378: byte[] new_bytes = transformToBytes(newClassModel);
`newBytes`
test/jdk/java/lang/invoke/indify/Indify.java line 379:
> 377: void writeNewClassFile(ClassModel newClassModel, Boolean changed, File sourceFile) throws IOException {
> 378: byte[] new_bytes = transformToBytes(newClassModel);
> 379: if(changed || all){
If you are using idea, select this whole method body and run ctrl+alt+L to format the code. A few improper formatting.
test/jdk/java/lang/invoke/indify/Indify.java line 478:
> 476: Logic logic = new Logic(model);
> 477: Boolean changed = logic.transform();
> 478: if (verbose && changed) System.err.println("(no change)");
Suggestion:
if (verbose && !changed) System.err.println("(no change)");
test/jdk/java/lang/invoke/indify/Indify.java line 480:
> 478: if (verbose && changed) System.err.println("(no change)");
> 479: logic.reportPatternMethods(!verbose, keepgoing);
> 480: byte[] new_Bytes = transformToBytes(logic.classModel);
`newBytes`
test/jdk/java/lang/invoke/indify/Indify.java line 501:
> 499: if (!findPatternMethods()) return false;
> 500:
> 501: Stack<PoolEntry> pendingIndy = new Stack<>(); // stack to hold the pending invokedynamic constant to replace the invokeExact
Please use `Deque` and `ArrayDeque` instead.
test/jdk/java/lang/invoke/indify/Indify.java line 536:
> 534: pendingIndy.push(newConstant);
> 535: if (!quiet) {
> 536: System.err.println(":::Transforming the Method Class for: " + ((InvokeInstruction) e).method().name() +
Suggestion:
System.err.println(":::Transforming the Method Class for: " + invokeInstruction.method().name() +
test/jdk/java/lang/invoke/indify/Indify.java line 545:
> 543: } else {
> 544: if (!quiet) {
> 545: System.err.println(":::Transforming the Method Call of: " + ((InvokeInstruction) e).method().name() +
Suggestion:
System.err.println(":::Transforming the Method Call of: " + invokeInstruction.method().name() +
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1649697535
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1649697624
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1649697501
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1649697679
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1649698078
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1649699193
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1649699115
More information about the core-libs-dev
mailing list