Problem with collectArguments on primitive array type
Attila Szegedi
szegedia at gmail.com
Mon Aug 17 13:06:25 PDT 2009
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