--- 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);
+ }
}