Problem with collectArguments on primitive array type

Attila Szegedi szegedia at gmail.com
Mon Aug 17 14:02:43 PDT 2009


Actually, this also fails for non-primitive arrays. Changing every  
"int" to "String" will give

java.dyn.WrongMethodTypeException: [Ljava.lang.Object; cannot be cast  
to [Ljava.lang.String;

So, it seems like the problem is even more generic...

(Alternatively, I'm doing something wrong...)

Attila.

On 2009.08.17., at 22:06, Attila Szegedi wrote:

> 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.



More information about the mlvm-dev mailing list