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
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to