< prev index next >

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

Print this page
rev 15320 : 8163370: Reduce number of classes loaded by common usage of java.lang.invoke
Reviewed-by: igerasim, psandoz


 498     /*non-public*/ static Object checkCast(Object mh, Object obj) {
 499         return ((DirectMethodHandle) mh).checkCast(obj);
 500     }
 501 
 502     Object checkCast(Object obj) {
 503         return member.getReturnType().cast(obj);
 504     }
 505 
 506     // Caching machinery for field accessors:
 507     private static final byte
 508             AF_GETFIELD        = 0,
 509             AF_PUTFIELD        = 1,
 510             AF_GETSTATIC       = 2,
 511             AF_PUTSTATIC       = 3,
 512             AF_GETSTATIC_INIT  = 4,
 513             AF_PUTSTATIC_INIT  = 5,
 514             AF_LIMIT           = 6;
 515     // Enumerate the different field kinds using Wrapper,
 516     // with an extra case added for checked references.
 517     private static final int
 518             FT_LAST_WRAPPER    = Wrapper.values().length-1,
 519             FT_UNCHECKED_REF   = Wrapper.OBJECT.ordinal(),
 520             FT_CHECKED_REF     = FT_LAST_WRAPPER+1,
 521             FT_LIMIT           = FT_LAST_WRAPPER+2;
 522     private static int afIndex(byte formOp, boolean isVolatile, int ftypeKind) {
 523         return ((formOp * FT_LIMIT * 2)
 524                 + (isVolatile ? FT_LIMIT : 0)
 525                 + ftypeKind);
 526     }
 527     @Stable
 528     private static final LambdaForm[] ACCESSOR_FORMS
 529             = new LambdaForm[afIndex(AF_LIMIT, false, 0)];
 530     private static int ftypeKind(Class<?> ftype) {
 531         if (ftype.isPrimitive())
 532             return Wrapper.forPrimitiveType(ftype).ordinal();
 533         else if (VerifyType.isNullReferenceConversion(Object.class, ftype))
 534             return FT_UNCHECKED_REF;
 535         else
 536             return FT_CHECKED_REF;
 537     }
 538 




 498     /*non-public*/ static Object checkCast(Object mh, Object obj) {
 499         return ((DirectMethodHandle) mh).checkCast(obj);
 500     }
 501 
 502     Object checkCast(Object obj) {
 503         return member.getReturnType().cast(obj);
 504     }
 505 
 506     // Caching machinery for field accessors:
 507     private static final byte
 508             AF_GETFIELD        = 0,
 509             AF_PUTFIELD        = 1,
 510             AF_GETSTATIC       = 2,
 511             AF_PUTSTATIC       = 3,
 512             AF_GETSTATIC_INIT  = 4,
 513             AF_PUTSTATIC_INIT  = 5,
 514             AF_LIMIT           = 6;
 515     // Enumerate the different field kinds using Wrapper,
 516     // with an extra case added for checked references.
 517     private static final int
 518             FT_LAST_WRAPPER    = Wrapper.COUNT-1,
 519             FT_UNCHECKED_REF   = Wrapper.OBJECT.ordinal(),
 520             FT_CHECKED_REF     = FT_LAST_WRAPPER+1,
 521             FT_LIMIT           = FT_LAST_WRAPPER+2;
 522     private static int afIndex(byte formOp, boolean isVolatile, int ftypeKind) {
 523         return ((formOp * FT_LIMIT * 2)
 524                 + (isVolatile ? FT_LIMIT : 0)
 525                 + ftypeKind);
 526     }
 527     @Stable
 528     private static final LambdaForm[] ACCESSOR_FORMS
 529             = new LambdaForm[afIndex(AF_LIMIT, false, 0)];
 530     private static int ftypeKind(Class<?> ftype) {
 531         if (ftype.isPrimitive())
 532             return Wrapper.forPrimitiveType(ftype).ordinal();
 533         else if (VerifyType.isNullReferenceConversion(Object.class, ftype))
 534             return FT_UNCHECKED_REF;
 535         else
 536             return FT_CHECKED_REF;
 537     }
 538 


< prev index next >