Re: RFR: 8307818: Convert Indify tool to Classfile API [v11]

2024-06-19 Thread ExE Boss
On Wed, 19 Jun 2024 12:04:27 GMT, Oussama Louati  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 one additional 
> commit since the last revision:
> 
>   fix: fix comments

Formatting nits:

More formatting nits:

test/jdk/java/lang/invoke/indify/Indify.java line 656:

> 654: for(PoolEntry entry : classModel.constantPool()){
> 655: char mark = 0;
> 656: if(poolMarks[entry.index()] != 0) continue;

Suggestion:

boolean initializeMarks() {
boolean anyMarkChanged = false;
for (PoolEntry entry : classModel.constantPool()) {
char mark = 0;
if (poolMarks[entry.index()] != 0) continue;

test/jdk/java/lang/invoke/indify/Indify.java line 674:

> 672: if(poolMarks[memberRefEntry.owner().index()] != 0){
> 673: mark = poolMarks[memberRefEntry.owner().index()];
> 674: }

Suggestion:

if (entry instanceof Utf8Entry utf8Entry) {
mark = nameMark(utf8Entry.stringValue());
}
if (entry instanceof ClassEntry classEntry) {
mark = nameMark(classEntry.asInternalName());
}
if (entry instanceof StringEntry stringEntry) {
mark = nameMark(stringEntry.stringValue());
}
if (entry instanceof NameAndTypeEntry nameAndTypeEntry) {
mark = nameAndTypeMark(nameAndTypeEntry.name(), 
nameAndTypeEntry.type());
}
if (entry instanceof MemberRefEntry memberRefEntry) {
poolMarks[memberRefEntry.owner().index()] = 
nameMark(memberRefEntry.owner().asInternalName());
if(poolMarks[memberRefEntry.owner().index()] != 0){
mark = poolMarks[memberRefEntry.owner().index()];
}

test/jdk/java/lang/invoke/indify/Indify.java line 678:

> 676: 
> if(memberRefEntry.owner().equals(classModel.thisClass())){
> 677: mark = 
> nameMark(memberRefEntry.name().stringValue());
> 678: }

Suggestion:

else {
if 
(memberRefEntry.owner().equals(classModel.thisClass())) {
mark = 
nameMark(memberRefEntry.name().stringValue());
}

test/jdk/java/lang/invoke/indify/Indify.java line 686:

> 684: return anyMarkChanged;
> 685: }
> 686: char nameAndTypeMark(Utf8Entry name, Utf8Entry type){

Suggestion:

}

char nameAndTypeMark(Utf8Entry name, Utf8Entry type){

test/jdk/java/lang/invoke/indify/Indify.java line 691:

> 689: String descriptor = type.stringValue();
> 690: String requiredType;
> 691: switch (mark){

Suggestion:

switch (mark) {

test/jdk/java/lang/invoke/indify/Indify.java line 696:

> 694: default:  return 0;
> 695: }
> 696: if(matchType(descriptor, requiredType)) return mark;

Suggestion:

if (matchType(descriptor, requiredType)) return mark;

-

PR Review: https://git.openjdk.org/jdk/pull/18841#pullrequestreview-2129054394
PR Review: https://git.openjdk.org/jdk/pull/18841#pullrequestreview-2129056939
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1646696601
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1646697107
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1646697252
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1646698327
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1646698374
PR Review Comment: https://git.openjdk.org/jdk/pull/18841#discussion_r1646698432


Re: RFR: 8307818: Convert Indify tool to Classfile API [v11]

2024-06-19 Thread Oussama Louati
> 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 one additional 
commit since the last revision:

  fix: fix comments

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/18841/files
  - new: https://git.openjdk.org/jdk/pull/18841/files/0cac912d..f869cce8

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=18841&range=10
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=18841&range=09-10

  Stats: 6 lines in 1 file changed: 0 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jdk/pull/18841.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/18841/head:pull/18841

PR: https://git.openjdk.org/jdk/pull/18841