Bug in MethodHandles.convertArguments

Rémi Forax forax at univ-mlv.fr
Mon May 10 12:11:43 PDT 2010


For me it's a new bug.
I have checked with jdk7 latest binaries
I will check with the mlvm repository sources when I will be at my 
office with a fast connection.

public class ConvertBug {
   public static Object foo(Object o1, Object o2) {
     return null;
   }

   public static void main(String[] args) {
     MethodHandle mh = 
MethodHandles.lookup().findStatic(ConvertBug.class, "foo",
         MethodType.methodType( Object.class, Object.class, Object.class));
     mh = MethodHandles.convertArguments(mh,
         MethodType.methodType(Object.class, int.class, Object.class));
     System.out.println("print mh "+mh);
   }
}

Exception in thread "main" java.lang.IllegalArgumentException: 
mismatched parameter count
     at sun.dyn.MemberName.newIllegalArgumentException(MemberName.java:409)
     at sun.dyn.MethodHandleImpl.convertArguments(MethodHandleImpl.java:654)
     at sun.dyn.ToGeneric.<init>(ToGeneric.java:102)
     at sun.dyn.ToGeneric.of(ToGeneric.java:257)
     at sun.dyn.ToGeneric.make(ToGeneric.java:249)
     at sun.dyn.MethodHandleImpl.convertArguments(MethodHandleImpl.java:671)
     at java.dyn.MethodHandles.convertArguments(MethodHandles.java:811)
     at ConvertBug.main(ConvertBug.java:15)


and I don't see any workaround :(

Rémi


More information about the mlvm-dev mailing list