jdk/src/share/classes/sun/dyn/MethodHandleImpl.java
changeset 7554 8a0ad9757002
parent 7052 963a5baf2ba3
child 7555 a279ebc3b25c
--- a/jdk/src/share/classes/sun/dyn/MethodHandleImpl.java	Tue Sep 14 01:42:03 2010 -0700
+++ b/jdk/src/share/classes/sun/dyn/MethodHandleImpl.java	Sat Oct 30 21:02:30 2010 -0700
@@ -560,7 +560,9 @@
     MethodHandle bindReceiver(Access token,
                               MethodHandle target, Object receiver) {
         Access.check(token);
-        if (target instanceof AdapterMethodHandle) {
+        if (target instanceof AdapterMethodHandle &&
+            ((AdapterMethodHandle)target).conversionOp() == MethodHandleNatives.Constants.OP_RETYPE_ONLY
+            ) {
             Object info = MethodHandleNatives.getTargetInfo(target);
             if (info instanceof DirectMethodHandle) {
                 DirectMethodHandle dmh = (DirectMethodHandle) info;
@@ -1257,4 +1259,9 @@
         Access.check(token);
         return MethodHandleNatives.getBootstrap(callerClass);
     }
+
+    public static MethodHandle withTypeHandler(Access token, MethodHandle target, MethodHandle typeHandler) {
+        Access.check(token);
+        return AdapterMethodHandle.makeTypeHandler(token, target, typeHandler);
+    }
 }