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.

Also, the fallback will be called a few times (usually at least once) 
before the target
of a callsite becomes stable so a global profile will be artificially 
polluted
by the initialization phases of all GWTs.

Another way to solve the problem is to generate the code twice as the 
tiered compilation does.
The first generation will include MDOs that will be used by the second 
generation.

Rémi

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

Reply via email to