On Mon, Aug 15, 2011 at 1:01 PM, Tom Rodriguez <tom.rodrig...@oracle.com> wrote: > > On Aug 12, 2011, at 4:15 PM, Charles Oliver Nutter wrote: >> Well, let me play devil's advocate here: why not just discount MH >> chains completely? > > It really only to deal with pathologically long chains. Most method handle > chains are pretty simple and should generally just be inlined. However I > could build a chain that included a very large number of calls embedded in it > and blindly inlining that could cause the compile to grow too large. Chains > of method handle chains make it worse. Whatever limit we would pick would be > fairly high so that no normal usage would never be cut off.
I'm not a compiler guy, so I don't know what "too large" means when it comes to the compile. Is it: * Too complex graph so compilation runs too long? * Too big native code so something blows up or crashes? * Too big native code so it doesn't fit in cache and runs much slower? As long as the limit is suitably high, I think everyone will be happy. I can't see any JRuby use involving more than a few dozen adapters for the most complex cases, mostly argument juggling and converting. >> This probably needs to happen for client mode at the very least. We >> probably can't get client to inline invokedynamic, but if it at least >> dispatches to a compiled MH chain it would be a lot better than what >> it does now (which I think is just execute the chain of handles >> as-is...usually very slow). > > Client will start to do more inlining in 7u2 but it will still be limited > because of the lack of profiling. Being able to compile them separately > would make the whole system more stable performance wise. I don't know that > we can do that for 7u2 though. Doing it correctly may require more machinery > than we have time to build for 7u2. My contingency plan is to only turn on invokedynamic when I can see we're running on Hotspot C2, and use the old mechanisms when running under C1. That is an acceptable trade-off until client mode handles invokedynamic/MHs better than it does now. - Charlie _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev