More on: Small static method marked not entrant, inlining reversed?

Rémi Forax forax at
Thu Sep 23 01:49:06 PDT 2010

Le 23/09/2010 04:06, John Rose a écrit :
> On Sep 22, 2010, at 1:24 PM, Tom Rodriguez wrote:
>> So looking at the hierarchy is of little use for most of those interface types.
> CHA starts with the scope type at a use point and tries to prove that there is only one method in the scope.
> Profiling starts with the set of concrete precise types at a use point and tries to prove that there is only one method.
> CHA starts with scope types (often abstract) and searches downward.  A downward search from an interface fails (always?): this should be fixed.
> Profiling starts with concrete types and currently fails if there is upward movement required.  This should be fixed.
> You guys are right that a more complex profiling mechanism would probably capture what's needed.
> Basically, if the profile overflows, it could summarize with approximate information.
> More subtly, we could also profile the target method(s) instead of the receiver class(es).  The guard for that would require a vtable probe.

I don't think you need to profile target method(s), you can compute them 
from profile types or
from an approximate profile type (if you implement profile overflow) or 
even from the declared receiver type.

You don't need to move upward, it can be simpler to gather all possible 
method implementations
and If there is only one, you're done. If there is more than one, you 
can use the vtable probe
or if the callsite is also megamorphic in term of method 
implementations, emit a vtable call.

> -- John


More information about the hotspot-compiler-dev mailing list