And BTW, attempts at using invoke() or invokeExact() didn't work either… They
all behave strangely. What's the sanctioned way to pass an array explicitly as
a vararg argument?
On Jun 10, 2011, at 2:34 PM, Attila Szegedi wrote:
> I found a regression between Mac OS X MLVM build from April 4 and June 6
> (based on bsd-port jdk7-b145). Here's a minimal reproducing testcase:
>
> public class TestVarArgInvoke {
> public static void main(String[] args) throws Throwable {
> java.lang.invoke.MethodHandles.publicLookup().unreflect(
> TestVarArgInvoke.class.getMethod("x", int.class,
> int[].class)).invokeWithArguments(
> new TestVarArgInvoke(), 1, new int[] { 2 });
> }
>
> public void x(int a, int... b) {
> System.out.println(a);
> for(int x: b) {
> System.out.println(x);
> }
> }
> }
>
> main() is expected to successfully invoke the method x(int, int...) and have
> it print "1\n2\n" (and it does on April 4 MLVM), but it fails with this
> exception on June 6 MLVM:
>
> Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to
> java.lang.Number
> at
> sun.invoke.util.ValueConversions.primitiveConversion(ValueConversions.java:231)
> at
> sun.invoke.util.ValueConversions.unboxInteger(ValueConversions.java:76)
> at
> java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:571)
> at
> java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:568)
> at TestVarArgInvoke.main(TestVarArgInvoke.java:13)
>
> Attila.
_______________________________________________
mlvm-dev mailing list
[email protected]
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev