< prev index next >

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

Print this page
rev 49208 : 8199471: Enable generation of callSiteForms at link time
Reviewed-by: psandoz


 632 
 633     private static MemberName lookupPregenerated(LambdaForm form, MethodType invokerType) {
 634         if (form.customized != null) {
 635             // No pre-generated version for customized LF
 636             return null;
 637         }
 638         String name = form.kind.methodName;
 639         switch (form.kind) {
 640             case BOUND_REINVOKER: {
 641                 name = name + "_" + BoundMethodHandle.speciesDataFor(form).key();
 642                 return resolveFrom(name, invokerType, DelegatingMethodHandle.Holder.class);
 643             }
 644             case DELEGATE:                  return resolveFrom(name, invokerType, DelegatingMethodHandle.Holder.class);
 645             case ZERO:                      // fall-through
 646             case IDENTITY: {
 647                 name = name + "_" + form.returnType().basicTypeChar();
 648                 return resolveFrom(name, invokerType, LambdaForm.Holder.class);
 649             }
 650             case EXACT_INVOKER:             // fall-through
 651             case EXACT_LINKER:              // fall-through


 652             case GENERIC_INVOKER:           // fall-through
 653             case GENERIC_LINKER:            return resolveFrom(name, invokerType.basicType(), Invokers.Holder.class);
 654             case GET_OBJECT:                // fall-through
 655             case GET_BOOLEAN:               // fall-through
 656             case GET_BYTE:                  // fall-through
 657             case GET_CHAR:                  // fall-through
 658             case GET_SHORT:                 // fall-through
 659             case GET_INT:                   // fall-through
 660             case GET_LONG:                  // fall-through
 661             case GET_FLOAT:                 // fall-through
 662             case GET_DOUBLE:                // fall-through
 663             case PUT_OBJECT:                // fall-through
 664             case PUT_BOOLEAN:               // fall-through
 665             case PUT_BYTE:                  // fall-through
 666             case PUT_CHAR:                  // fall-through
 667             case PUT_SHORT:                 // fall-through
 668             case PUT_INT:                   // fall-through
 669             case PUT_LONG:                  // fall-through
 670             case PUT_FLOAT:                 // fall-through
 671             case PUT_DOUBLE:                // fall-through




 632 
 633     private static MemberName lookupPregenerated(LambdaForm form, MethodType invokerType) {
 634         if (form.customized != null) {
 635             // No pre-generated version for customized LF
 636             return null;
 637         }
 638         String name = form.kind.methodName;
 639         switch (form.kind) {
 640             case BOUND_REINVOKER: {
 641                 name = name + "_" + BoundMethodHandle.speciesDataFor(form).key();
 642                 return resolveFrom(name, invokerType, DelegatingMethodHandle.Holder.class);
 643             }
 644             case DELEGATE:                  return resolveFrom(name, invokerType, DelegatingMethodHandle.Holder.class);
 645             case ZERO:                      // fall-through
 646             case IDENTITY: {
 647                 name = name + "_" + form.returnType().basicTypeChar();
 648                 return resolveFrom(name, invokerType, LambdaForm.Holder.class);
 649             }
 650             case EXACT_INVOKER:             // fall-through
 651             case EXACT_LINKER:              // fall-through
 652             case LINK_TO_CALL_SITE:         // fall-through
 653             case LINK_TO_TARGET_METHOD:     // fall-through
 654             case GENERIC_INVOKER:           // fall-through
 655             case GENERIC_LINKER:            return resolveFrom(name, invokerType.basicType(), Invokers.Holder.class);
 656             case GET_OBJECT:                // fall-through
 657             case GET_BOOLEAN:               // fall-through
 658             case GET_BYTE:                  // fall-through
 659             case GET_CHAR:                  // fall-through
 660             case GET_SHORT:                 // fall-through
 661             case GET_INT:                   // fall-through
 662             case GET_LONG:                  // fall-through
 663             case GET_FLOAT:                 // fall-through
 664             case GET_DOUBLE:                // fall-through
 665             case PUT_OBJECT:                // fall-through
 666             case PUT_BOOLEAN:               // fall-through
 667             case PUT_BYTE:                  // fall-through
 668             case PUT_CHAR:                  // fall-through
 669             case PUT_SHORT:                 // fall-through
 670             case PUT_INT:                   // fall-through
 671             case PUT_LONG:                  // fall-through
 672             case PUT_FLOAT:                 // fall-through
 673             case PUT_DOUBLE:                // fall-through


< prev index next >