On Jun 20, 2011, at 12:17 PM, Tom Rodriguez wrote:

> On Jun 18, 2011, at 5:15 AM, Rémi Forax wrote:
> 
>> On 06/18/2011 03:15 AM, Tom Rodriguez wrote:
>>> On Jun 17, 2011, at 5:00 PM, John Rose wrote:
>>> 
>>>> On Jun 17, 2011, at 10:21 AM, Tom Rodriguez wrote:
>>>> 
>>>>>> Sorry, I was thinking recording which branch of the GWT is taken and
>>>>>> storing them in the GWT.
>>>>>> Two GWTs should not share the same metadata.
>>>>> This is the major problem with GWT/selectAlternative.  Previously when 
>>>>> GWT was bytecodes we at least had a chance to get some profile 
>>>>> information on which way the branch was likely to go but with the 
>>>>> ricochet frame version we have no knowledge so each side of the if has 
>>>>> equal probability.  The were no guarantees that the GWT would always be 
>>>>> used as a fast/slow idiom but in practice it was so we used to get good 
>>>>> data.  We'll have to find someway to capture profiles for this if we can 
>>>>> to treat fast/slow in a more aggressive way.
>>>> selectAlternative has a branch profile.  As long as GWT is being used as 
>>>> expected (for fast/slow splits), selectAlternative will have a fast/slow 
>>>> profile, just like the original GWT invokers.
>>>> 
>>>> The PROB_FAIR in CallGenerator::for_method_handle_inline could be made 
>>>> "smarter", by feeding from the control inputs of the Phi; that would be a 
>>>> good start.
>>> Well duh on me.  When I wrote that my brain was thinking cmove instruction, 
>>> not a real If diamond with probability.  I don't think fixing this will 
>>> improve the inlining in the fast case but it should reduce useless inlining 
>>> in the slow path.  I've got part of this working.
>>> 
>>> tom
>> 
>> But all GWT share the same selectAlternative, so the probability
>> of the inputs of the Phi is the propability of all GWTs.
>> I think it's better to artificially mark the fallback as never been 
>> called instead of relying
>> on a global shared profile.


One way to do this on the cheap is to intrinsify selectAlternative in MHW, so 
that MHW-compiled GWT graphs automatically get fresh profilable copies of the 
if/then/else.  This doesn't scale to other kinds of MH graphs, of course, but 
GWT is arguably a fundamental building block that deserves special case to be 
rendered as if/then/else bytecodes.

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

Reply via email to