jdk/src/share/classes/java/lang/invoke/MethodHandles.java
changeset 20841 2b188911d712
parent 20831 96cf18811858
child 20851 9f284cf7836b
equal deleted inserted replaced
20840:9ef02837256d 20841:2b188911d712
  1287             if (MethodHandleNatives.refKindIsField(refKind)) {
  1287             if (MethodHandleNatives.refKindIsField(refKind)) {
  1288                 MemberName field = (resolved != null) ? resolved
  1288                 MemberName field = (resolved != null) ? resolved
  1289                         : resolveOrFail(refKind, defc, name, (Class<?>) type);
  1289                         : resolveOrFail(refKind, defc, name, (Class<?>) type);
  1290                 return getDirectField(refKind, defc, field);
  1290                 return getDirectField(refKind, defc, field);
  1291             } else if (MethodHandleNatives.refKindIsMethod(refKind)) {
  1291             } else if (MethodHandleNatives.refKindIsMethod(refKind)) {
       
  1292                 if (defc == MethodHandle.class && refKind == REF_invokeVirtual) {
       
  1293                     MethodHandle mh = findVirtualForMH(name, (MethodType) type);
       
  1294                     if (mh != null)  return mh;
       
  1295                 }
  1292                 MemberName method = (resolved != null) ? resolved
  1296                 MemberName method = (resolved != null) ? resolved
  1293                         : resolveOrFail(refKind, defc, name, (MethodType) type);
  1297                         : resolveOrFail(refKind, defc, name, (MethodType) type);
  1294                 return getDirectMethod(refKind, defc, method, lookupClass);
  1298                 return getDirectMethod(refKind, defc, method, lookupClass);
  1295             } else if (refKind == REF_newInvokeSpecial) {
  1299             } else if (refKind == REF_newInvokeSpecial) {
  1296                 assert(name == null || name.equals("<init>"));
  1300                 assert(name == null || name.equals("<init>"));