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