On Jun 21, 2011, at 3:28 AM, John Rose wrote:
> 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.


I'm not sure I understand how that would help.  When MHW compiles a MH chain we 
are compiling with C2 and we don't do profiling with C2 generated code, AFAIK.  
Or did you mean something else?

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

Reply via email to