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>")); |