Hi folks,

I have this program that doesn't work with mlvm build from August 4:

---------------------
import java.dyn.MethodHandle;
import java.dyn.MethodHandles;
import java.dyn.MethodType;

public class TestCollectArguments
{
     public static void main(String[] args) throws Throwable
     {
         MethodHandle xv = MethodHandles.publicLookup().findVirtual(
                 TestCollectArguments.class, "xv",  
MethodType.make(int.class,
                         int.class, int[].class));
         // This works - exact invocation
         System.out.println(MethodHandles.invoke(xv, new  
TestCollectArguments(),
                 1, new int[] { 2, 3 }));
         MethodHandle collecting = MethodHandles.collectArguments(xv,
                 MethodType.make(int.class, Object.class, int.class,  
int.class,
                         int.class));
         // This fails - collecting arguments
         System.out.println(MethodHandles.invoke(collecting,
                 new TestCollectArguments(), 1, 2, 3));
     }

     public int xv(int y, int... z)
     {
         for (int zz : z)
         {
             y += zz;
         }
         return y;
     }
}
---------------------

It throws:

Exception in thread "main" java.dyn.WrongMethodTypeException:  
[Ljava.lang.Object; cannot be cast to [I
        at sun.dyn.FromGeneric$A3.invoke_I3(FromGeneric.java:543)
        at sun.dyn.FilterGeneric$F4.invoke_C2(FilterGeneric.java:631)
        at sun.dyn.ToGeneric$A4.target(ToGeneric.java:746)
        at sun.dyn.ToGeneric$A4.targetA4(ToGeneric.java:750)
        at sun.dyn.ToGeneric$A4.invoke_I(ToGeneric.java:766)
        at sun.dyn.FromGeneric$A5.invoke_I5(FromGeneric.java:567)
        at java.dyn.MethodHandles.invoke(MethodHandles.java:638)
        at TestCollectArguments.main(TestCollectArguments.java:21)

Seems it has troubles collecting arguments for an int[] vararg.

Attila.

_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to