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