I've pretty much achieved everything I was trying to do last night: <a href="http://gist.github.com/113717">http://gist.github.com/113717</a><div><br></div><div>I guess the next question is: how can I avoid needing to know the target return value in invoke:</div>
<div><br></div><div><div> String invoke(DynamicTester tester, String extra) {</div><div> return target.<String>invoke(tester, name, extra);</div><div> }</div><div><br></div><div>Ideally, I'd like to be able to do something like:</div>
<div><br></div><div><div> Object invoke(DynamicTester tester, Object... objects) {</div><div> return target.invoke(tester, name, objects);</div><div> }</div><div><br></div><div>Where the original method could be methodNotFound(name, String... name) or whatever.</div>
<div><br></div><div>Again, I'm relatively new to all this, so I'm pretty sure what I want to do is either a big no-no or a no-brainer.</div><div><br></div><div>-- Yehuda </div></div><br><div class="gmail_quote">On Mon, May 18, 2009 at 5:54 PM, John Rose <span dir="ltr"><<a href="mailto:John.Rose@sun.com">John.Rose@sun.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Excellent, thanks. Will try it ASAP (when not working on my J1 slides<br>
which are due today).<br>
<br>
-- John (on my iPhone)<br>
<br>
On May 18, 2009, at 4:29 PM, Charles Oliver Nutter <<a href="mailto:charles.nutter@sun.com">charles.nutter@sun.com</a><br>
<div><div></div><div class="h5"> > wrote:<br>
<br>
> Here you go! The details of getting it to run under mlvm are up to<br>
> you,<br>
> but jruby accepts options like -J-XX:+EnableInvokeDynamic, etc.<br>
><br>
> git clone git://<a href="http://kenai.com/jruby~main" target="_blank">kenai.com/jruby~main</a> jruby<br>
> cd jruby<br>
> git co -b invokedynamic origin/invokedynamic<br>
> ant clean jar (with MLVM as JAVA_HOME)<br>
> bin/jruby <important flags here> -e "code here"<br>
> -or-<br>
> bin/jruby <important flags here> script.rb<br>
><br>
> Where important flags are:<br>
><br>
> --server (-server flag to JVM, if you want it)<br>
> -J-XX:+Enable{InvokeDynamic,MethodHandles}<br>
> -J-Djruby.compile.invokedynamic=true<br>
><br>
> Not a whole lot of logging/debugging in place at the moment, but if<br>
> you<br>
> also pass --bytecode to JRuby it will dump out the bytecode for the<br>
> target script rather than run it. If it's wiring up right you'll see<br>
> INVOKEDYNAMIC in there.<br>
><br>
> - Charlie<br>
><br>
> John Rose wrote:<br>
>> My first use of git was a couple days ago, to pull jruby from kenai.<br>
>> So I'm a git noob. (Too bad about ruby & mercurial.)<br>
>><br>
>> That said, can I have a recipe (script) for pulling, building your<br>
>> hacked version of jruby, and then for running your test case(s)?<br>
>> (From NetBeans, if possible, so I can dive into the JRuby code and<br>
>> start debugging?)<br>
>><br>
>> Thanks; this is getting interesting!<br>
>><br>
>> -- John<br>
>><br>
>> On May 18, 2009, at 4:01 PM, Charles Oliver Nutter wrote:<br>
>><br>
>>> I'm also seeing crashes for several scenarios. Like this loop works:<br>
>>><br>
>>> a = 1; while a < 1_000_000; a += 1; end<br>
>>><br>
>>> But these two crash the JVM:<br>
>>><br>
>>> a = 1.0; while a < 1_000_000.0; foo(a); a += 1.0; end<br>
>>> def foo(a); end; a = 1; while a < 1_000_000; foo(a); a += 1; end<br>
>>><br>
>>> A simple fib bench also crashed. I've attached a dump from the "foo"<br>
>>> case above, and I can provide a jruby dist to reproduce if you like.<br>
>>><br>
>>> It tends to stymie further experimentation :) (no pressure, I know<br>
>>> this stuff has just recently started to JIT).<br>
>><br>
>> _______________________________________________<br>
>> mlvm-dev mailing list<br>
>> <a href="mailto:mlvm-dev@openjdk.java.net">mlvm-dev@openjdk.java.net</a><br>
>> <a href="http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev" target="_blank">http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev</a><br>
><br>
> _______________________________________________<br>
> mlvm-dev mailing list<br>
> <a href="mailto:mlvm-dev@openjdk.java.net">mlvm-dev@openjdk.java.net</a><br>
> <a href="http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev" target="_blank">http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev</a><br>
_______________________________________________<br>
mlvm-dev mailing list<br>
<a href="mailto:mlvm-dev@openjdk.java.net">mlvm-dev@openjdk.java.net</a><br>
<a href="http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev" target="_blank">http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Yehuda Katz<br>Developer | Engine Yard<br>(ph) 718.877.1325<br>
</div>