Lost perf between 8u40 and 9 hs-comp

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Tue Mar 3 16:23:55 UTC 2015


John,

> So let's make hindsight work for us:  Is there a way (either with or without the split you suggest) to more firmly couple the update to the query?  Separating into two operations might be the cleanest way to go, but I think it's safer to keep both halves together, as long as the slow path can do the right stuff.
>
> Suggestion:  Instead of have the intrinsic expand to nothing, have it expand to an uncommon trap (on the slow path), with the uncommon trap doing the profile update operation (as currently coded).
Right now, VM doesn't care about profiling logic at all. The intrinsic 
is used only to inject profile data and all profiling happens in Java 
code. Once MHI.profileBoolean is intrinsified (profile is injected), no 
profiling actions are performed.

The only way I see is to inject count bump on pruned branch before 
issuing uncommon trap. Alike profile_taken_branch in Parse::do_if, but 
it should not update MDO, but user-specified int[2]).

It looks irregular and spreads profiling logic between VM & Java code. 
But it allows to keep single entry point between VM & Java 
(MHI.profileBoolean).

I'll prototype it to see how does it look like on the code level.

Best regards,
Vladimir Ivanov


More information about the mlvm-dev mailing list