< prev index next >

src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java

Print this page




 677         mv.visitInsn(opcode);
 678     }
 679 
 680     private String getInternalName(Class<?> c) {
 681         if (c == Object.class)             return OBJ;
 682         else if (c == Object[].class)      return OBJARY;
 683         else if (c == Class.class)         return CLS;
 684         else if (c == MethodHandle.class)  return MH;
 685         assert(VerifyAccess.isTypeVisible(c, Object.class)) : c.getName();
 686 
 687         if (c == lastClass) {
 688             return lastInternalName;
 689         }
 690         lastClass = c;
 691         return lastInternalName = c.getName().replace('.', '/');
 692     }
 693 
 694     private static MemberName resolveFrom(String name, MethodType type, Class<?> holder) {
 695         MemberName member = new MemberName(holder, name, type, REF_invokeStatic);
 696         MemberName resolvedMember = MemberName.getFactory().resolveOrNull(REF_invokeStatic, member, holder);



 697         if (TRACE_RESOLVE) {
 698             System.out.println("[LF_RESOLVE] " + holder.getName() + " " + name + " " +
 699                     shortenSignature(basicTypeSignature(type)) + (resolvedMember != null ? " (success)" : " (fail)") );



 700         }
 701         return resolvedMember;
 702     }
 703 
 704     private static MemberName lookupPregenerated(LambdaForm form, MethodType invokerType) {
 705         if (form.customized != null) {
 706             // No pre-generated version for customized LF
 707             return null;
 708         }
 709         String name = form.kind.methodName;
 710         switch (form.kind) {
 711             case BOUND_REINVOKER: {
 712                 name = name + "_" + BoundMethodHandle.speciesDataFor(form).key();
 713                 return resolveFrom(name, invokerType, DelegatingMethodHandle.Holder.class);
 714             }
 715             case DELEGATE:                  return resolveFrom(name, invokerType, DelegatingMethodHandle.Holder.class);
 716             case ZERO:                      // fall-through
 717             case IDENTITY: {
 718                 name = name + "_" + form.returnType().basicTypeChar();
 719                 return resolveFrom(name, invokerType, LambdaForm.Holder.class);




 677         mv.visitInsn(opcode);
 678     }
 679 
 680     private String getInternalName(Class<?> c) {
 681         if (c == Object.class)             return OBJ;
 682         else if (c == Object[].class)      return OBJARY;
 683         else if (c == Class.class)         return CLS;
 684         else if (c == MethodHandle.class)  return MH;
 685         assert(VerifyAccess.isTypeVisible(c, Object.class)) : c.getName();
 686 
 687         if (c == lastClass) {
 688             return lastInternalName;
 689         }
 690         lastClass = c;
 691         return lastInternalName = c.getName().replace('.', '/');
 692     }
 693 
 694     private static MemberName resolveFrom(String name, MethodType type, Class<?> holder) {
 695         MemberName member = new MemberName(holder, name, type, REF_invokeStatic);
 696         MemberName resolvedMember = MemberName.getFactory().resolveOrNull(REF_invokeStatic, member, holder);
 697         if (TRACE_RESOLVE || CDS_TRACE_RESOLVE) {
 698             String outLine = "[LF_RESOLVE] " + holder.getName() + " " + name + " " +
 699                     shortenSignature(basicTypeSignature(type)) + (resolvedMember != null ? " (success)" : " (fail)");
 700             if (TRACE_RESOLVE) {
 701                 System.out.println(outLine);
 702             }
 703             if (CDS_TRACE_RESOLVE) {
 704                 InvokerBytecodeGeneratorHelper.cdsTraceResolve(outLine);
 705             }
 706         }
 707         return resolvedMember;
 708     }
 709 
 710     private static MemberName lookupPregenerated(LambdaForm form, MethodType invokerType) {
 711         if (form.customized != null) {
 712             // No pre-generated version for customized LF
 713             return null;
 714         }
 715         String name = form.kind.methodName;
 716         switch (form.kind) {
 717             case BOUND_REINVOKER: {
 718                 name = name + "_" + BoundMethodHandle.speciesDataFor(form).key();
 719                 return resolveFrom(name, invokerType, DelegatingMethodHandle.Holder.class);
 720             }
 721             case DELEGATE:                  return resolveFrom(name, invokerType, DelegatingMethodHandle.Holder.class);
 722             case ZERO:                      // fall-through
 723             case IDENTITY: {
 724                 name = name + "_" + form.returnType().basicTypeChar();
 725                 return resolveFrom(name, invokerType, LambdaForm.Holder.class);


< prev index next >