I seem to have stumbled onto a problem with some handles and >10 or
>11 arguments.

For this code:

        System.out.println(target.type());
        System.out.println(breakJump.type());
        target = MethodHandles.catchException(target,
JumpException.BreakJump.class, breakJump);

This pair of method types works:

(org.jruby.runtime.callsite.CacheEntry,org.jruby.runtime.ThreadContext,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,java.lang.String,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.Block)org.jruby.runtime.builtin.IRubyObject
(org.jruby.exceptions.JumpException$BreakJump,org.jruby.runtime.callsite.CacheEntry,org.jruby.runtime.ThreadContext,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,java.lang.String,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.Block)org.jruby.runtime.builtin.IRubyObject

But this pair produces an error:

(org.jruby.runtime.callsite.CacheEntry,org.jruby.runtime.ThreadContext,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,java.lang.String,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.Block)org.jruby.runtime.builtin.IRubyObject
(org.jruby.exceptions.JumpException$BreakJump,org.jruby.runtime.callsite.CacheEntry,org.jruby.runtime.ThreadContext,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,java.lang.String,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.builtin.IRubyObject,org.jruby.runtime.Block)org.jruby.runtime.builtin.IRubyObject

Here's the error:

Caused by: java.lang.IllegalArgumentException: no restarg in
(java.lang.Object)java.lang.Object
        at 
sun.dyn.MethodHandleImpl.newIllegalArgumentException(MethodHandleImpl.java:841)
        at sun.dyn.MethodHandleImpl.spreadArguments(MethodHandleImpl.java:484)
        at 
sun.dyn.MethodHandleImpl.makeGuardWithCatch(MethodHandleImpl.java:806)
        at java.dyn.MethodHandles.catchException(MethodHandles.java:1397)
        at 
org.jruby.runtime.invokedynamic.InvokeDynamicSupport.<clinit>(InvokeDynamicSupport.java:742)
        ... 10 more

Looks like a bug...I have not had a chance to dig into it.

- Charlie
_______________________________________________
mlvm-dev mailing list
[email protected]
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to