On Aug 15, 2011, at 3:19 PM, Charles Oliver Nutter wrote:

> 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?

These two mostly.  

> * 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.

Exactly.

tom

> 
>>> 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

_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to