I&#39;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.&lt;String&gt;invoke(tester, name, extra);</div><div>    }</div><div><br></div><div>Ideally, I&#39;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&#39;m relatively new to all this, so I&#39;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">&lt;<a href="mailto:John.Rose@sun.com">John.Rose@sun.com</a>&gt;</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 &lt;<a href="mailto:charles.nutter@sun.com">charles.nutter@sun.com</a><br>
<div><div></div><div class="h5"> &gt; wrote:<br>
<br>
&gt; Here you go! The details of getting it to run under mlvm are up to<br>
&gt; you,<br>
&gt; but jruby accepts options like -J-XX:+EnableInvokeDynamic, etc.<br>
&gt;<br>
&gt; git clone git://<a href="http://kenai.com/jruby~main" target="_blank">kenai.com/jruby~main</a> jruby<br>
&gt; cd jruby<br>
&gt; git co -b invokedynamic origin/invokedynamic<br>
&gt; ant clean jar (with MLVM as JAVA_HOME)<br>
&gt; bin/jruby &lt;important flags here&gt; -e &quot;code here&quot;<br>
&gt;   -or-<br>
&gt; bin/jruby &lt;important flags here&gt; script.rb<br>
&gt;<br>
&gt; Where important flags are:<br>
&gt;<br>
&gt; --server (-server flag to JVM, if you want it)<br>
&gt; -J-XX:+Enable{InvokeDynamic,MethodHandles}<br>
&gt; -J-Djruby.compile.invokedynamic=true<br>
&gt;<br>
&gt; Not a whole lot of logging/debugging in place at the moment, but if<br>
&gt; you<br>
&gt; also pass --bytecode to JRuby it will dump out the bytecode for the<br>
&gt; target script rather than run it. If it&#39;s wiring up right you&#39;ll see<br>
&gt; INVOKEDYNAMIC in there.<br>
&gt;<br>
&gt; - Charlie<br>
&gt;<br>
&gt; John Rose wrote:<br>
&gt;&gt; My first use of git was a couple days ago, to pull jruby from kenai.<br>
&gt;&gt; So I&#39;m a git noob.  (Too bad about ruby &amp; mercurial.)<br>
&gt;&gt;<br>
&gt;&gt; That said, can I have a recipe (script) for pulling, building your<br>
&gt;&gt; hacked version of jruby, and then for running your test case(s)?<br>
&gt;&gt; (From NetBeans, if possible, so I can dive into the JRuby code and<br>
&gt;&gt; start debugging?)<br>
&gt;&gt;<br>
&gt;&gt; Thanks; this is getting interesting!<br>
&gt;&gt;<br>
&gt;&gt; -- John<br>
&gt;&gt;<br>
&gt;&gt; On May 18, 2009, at 4:01 PM, Charles Oliver Nutter wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; I&#39;m also seeing crashes for several scenarios. Like this loop works:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; a = 1; while a &lt; 1_000_000; a += 1; end<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; But these two crash the JVM:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; a = 1.0; while a &lt; 1_000_000.0; foo(a); a += 1.0; end<br>
&gt;&gt;&gt; def foo(a); end; a = 1; while a &lt; 1_000_000; foo(a); a += 1; end<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; A simple fib bench also crashed. I&#39;ve attached a dump from the &quot;foo&quot;<br>
&gt;&gt;&gt; case above, and I can provide a jruby dist to reproduce if you like.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; It tends to stymie further experimentation :) (no pressure, I know<br>
&gt;&gt;&gt; this stuff has just recently started to JIT).<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; mlvm-dev mailing list<br>
&gt;&gt; <a href="mailto:mlvm-dev@openjdk.java.net">mlvm-dev@openjdk.java.net</a><br>
&gt;&gt; <a href="http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev" target="_blank">http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; mlvm-dev mailing list<br>
&gt; <a href="mailto:mlvm-dev@openjdk.java.net">mlvm-dev@openjdk.java.net</a><br>
&gt; <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>