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
Rémi
--
You received this message because you are subscribed to the Google Groups "JVM
Languages" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/jvm-languages?hl=en.