--- a/jdk/src/share/classes/java/lang/invoke/MethodHandles.java Mon Aug 12 19:57:21 2013 +0400
+++ b/jdk/src/share/classes/java/lang/invoke/MethodHandles.java Mon Aug 12 13:47:21 2013 -0700
@@ -1289,6 +1289,10 @@
: resolveOrFail(refKind, defc, name, (Class<?>) type);
return getDirectField(refKind, defc, field);
} else if (MethodHandleNatives.refKindIsMethod(refKind)) {
+ if (defc == MethodHandle.class && refKind == REF_invokeVirtual) {
+ MethodHandle mh = findVirtualForMH(name, (MethodType) type);
+ if (mh != null) return mh;
+ }
MemberName method = (resolved != null) ? resolved
: resolveOrFail(refKind, defc, name, (MethodType) type);
return getDirectMethod(refKind, defc, method, lookupClass);