8252725: Refactor jlink GenerateJLIClassesPlugin code

Cleanup code for jlink classes generation, move parsing file work to java.lang.invoke and add a new API in interface JavaLangInvokeAccess to generate holder classes, remove old APIs. The new API is used both by JLI and CDS.

Reviewed-by: mchung, sundar
This commit is contained in:
Yumin Qi 2020-09-04 09:47:18 -07:00
parent 9b5a9b6189
commit 8f36580594
6 changed files with 370 additions and 431 deletions

View file

@ -46,6 +46,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.stream.Stream;
import static java.lang.invoke.GenerateJLIClassesHelper.traceLambdaForm;
import static java.lang.invoke.LambdaForm.BasicType;
import static java.lang.invoke.LambdaForm.BasicType.*;
import static java.lang.invoke.LambdaForm.*;
@ -696,10 +697,7 @@ class InvokerBytecodeGenerator {
private static MemberName resolveFrom(String name, MethodType type, Class<?> holder) {
MemberName member = new MemberName(holder, name, type, REF_invokeStatic);
MemberName resolvedMember = MemberName.getFactory().resolveOrNull(REF_invokeStatic, member, holder, LM_TRUSTED);
if (TRACE_RESOLVE) {
System.out.println("[LF_RESOLVE] " + holder.getName() + " " + name + " " +
shortenSignature(basicTypeSignature(type)) + (resolvedMember != null ? " (success)" : " (fail)") );
}
traceLambdaForm(name, type, holder, resolvedMember);
return resolvedMember;
}