On 2010.03.25., at 3:17, Charles Oliver Nutter wrote: > For Attila: I had to remove a spreadArguments handle you used for > re-binding the method...not sure why. Here's the diff: > > Index: src/org/dynalang/dynalink/support/DynamicLinkerImpl.java > =================================================================== > --- src/org/dynalang/dynalink/support/DynamicLinkerImpl.java (revision 232) > +++ src/org/dynalang/dynalink/support/DynamicLinkerImpl.java (working copy) > @@ -115,8 +115,6 @@ > final MethodType genericType = invocation.type().generic(); > final MethodHandle genericizedInvocation = > MethodHandles.convertArguments(invocation, genericType); > - final MethodHandle spreadInvocation = MethodHandles.spreadArguments( > - genericizedInvocation, SPREAD_GENERIC_INVOCATION); > - return MethodHandles.invoke(spreadInvocation, arguments); > + return MethodHandles.invoke(genericizedInvocation, arguments); > } > } > > I committed a built version with this hack...no tests, etc yet for > Duby's "dynamic" type, but that will come soon.
That's odd. "arguments" is Object[]; spreadArguments is required to unpack these arguments and pass them on to the invoked method. The dynalang-invoke's own test suites fail quite massively when I make the change, and work without the change (well, sans a bunch of TestSimpleDynamicMethod#testVarArgs...() tests which fail due to a MLVM bug, but that's in unrelated code for vararg method handling). I do only have my last august's version of MLVM though; I might need to re-run the tests with a new MLVM, although, honestly, I'd be surprised if that changed anything since to me, the logic seems okay. Attila. -- home: http://www.szegedi.org twitter: http://twitter.com/szegedi weblog: http://constc.blogspot.com _______________________________________________ mlvm-dev mailing list [email protected] http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
