On Wed, May 25, 2011 at 5:12 PM, Tom Rodriguez <tom.rodrig...@oracle.com> wrote: > I've got the bimorphic method handle inline working. I was doing something > stupid at the beginning which is why it wasn't as easy as I expected to be > and then I encountered a stupid API which wasted a little more time. I was > able to leverage the existing invokedynamic call site cache code generation > and just generate a different guard. Ignoring the flag soup below, the first > is without invokedynamic, second is with and third is with bimorphic inline > for selectAlternative.
Here's a dumb question...couldn't the bimorphic logic have simply been generated the second way you indicated, rather than the (x ? a : b).whatever form? Great to hear this is in! I'll look for an MLVM patch and until then see if I can figure out why the "classic" GWT logic isn't as fast as it was a couple weeks ago. IF I'm feeling saucy I may try to pull MLVM + bsd-port from two weeks ago (or find a macosx port build from that timeframe) to compare assembly output. Perhaps illustrative for us all! > The changes are at http://javaweb.sfbay.sun.com/~never/webrev/bim. Maybe > John can put together an mlvm patch for it. I'm not quite sure how to do so. > > There are still some minor improvements that can be made. The test part ends > up looking like: > > if ((test ? Boolean.TRUE : Boolean.FALSE).value()) > > We need to treat more of those values as constants and split the loads up to > fold it away. I'm keen to have a look at the assembly resulting from the bimorphic inlining and see if there's any way to improve it further. My test could potentially be improved too. I'm also pondering ways I can go mostly guard-free for certain core JRuby types, possibly reducing the guard to an exact type check. There's definitely runway both on your end and my end. - Charlie _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev