jdk/src/java.base/share/classes/java/lang/invoke/VarHandle.java
changeset 38368 c8eb5d6812c5
parent 38367 21801e8e9344
parent 38328 40435a469d25
child 39472 6df82f4c63ac
child 39312 4bb639021aad
equal deleted inserted replaced
38367:21801e8e9344 38368:c8eb5d6812c5
  1473     @ForceInline
  1473     @ForceInline
  1474     final MethodHandle getMethodHandle(int mode) {
  1474     final MethodHandle getMethodHandle(int mode) {
  1475         TypesAndInvokers tis = getTypesAndInvokers();
  1475         TypesAndInvokers tis = getTypesAndInvokers();
  1476         MethodHandle mh = tis.methodHandle_table[mode];
  1476         MethodHandle mh = tis.methodHandle_table[mode];
  1477         if (mh == null) {
  1477         if (mh == null) {
  1478             mh = tis.methodHandle_table[mode] = getMethodHandleUncached(tis, mode);
  1478             mh = tis.methodHandle_table[mode] = getMethodHandleUncached(mode);
  1479         }
  1479         }
  1480         return mh;
  1480         return mh;
  1481     }
  1481     }
  1482     private final MethodHandle getMethodHandleUncached(TypesAndInvokers tis, int mode) {
  1482     private final MethodHandle getMethodHandleUncached(int mode) {
  1483         MethodType mt = accessModeType(AccessMode.values()[mode]).
  1483         MethodType mt = accessModeType(AccessMode.values()[mode]).
  1484                 insertParameterTypes(0, VarHandle.class);
  1484                 insertParameterTypes(0, VarHandle.class);
  1485         MemberName mn = vform.getMemberName(mode);
  1485         MemberName mn = vform.getMemberName(mode);
  1486         DirectMethodHandle dmh = DirectMethodHandle.make(mn);
  1486         DirectMethodHandle dmh = DirectMethodHandle.make(mn);
  1487         // Such a method handle must not be publically exposed directly
  1487         // Such a method handle must not be publically exposed directly