JDK-6385692 : type profiled inlining should allow method holders to be a superclass
Type:Bug
Component:hotspot
Sub-Component:compiler
Affected Version:5.0u8,6
Priority:P3
Status:Resolved
Resolution:Fixed
OS:solaris_9
CPU:sparc
Submitted:2006-02-14
Updated:2010-04-02
Resolved:2006-03-31
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
This cutout in the inlining code is keeping us from taking advantage of the type profile information in cases where we could.
if (receiver_method->holder() != ik) {
receiver_method = NULL;
}
It should be removed.
Comments
SUGGESTED FIX
plus this delta http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20060315120121.never.vtable/workspace/webrevs/webrev-2006.03.15/index.html
SUGGESTED FIX
*** /tmp/geta26306 Tue Feb 14 15:13:50 2006
--- doCall.cpp Tue Feb 14 15:13:49 2006
***************
*** 140,148 ****
if (receiver_method != NULL && receiver_method->is_abstract()) {
receiver_method = NULL; // shouldn't happen, but better safe than sorry
}
- if (receiver_method != NULL && receiver_method->holder() != ik) {
- receiver_method = NULL;
- }
}
if (receiver_method != NULL) {
// The single majority receiver sufficiently outweighs the minority.
--- 140,145 ----
14-02-2006
EVALUATION
This really a leftover from some incorrect logic which was using find_method to find the receiver method and find_method only looks in the current class. The fix is simply to remove the cutout.