JDK-6519527 : PartialSubtypeCheckNode without a control edge could get scheduled too high (5.0)
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 5.0u12
  • Priority: P1
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic,solaris_10
  • CPU: generic,sparc
  • Submitted: 2007-01-31
  • Updated: 2010-05-09
  • Resolved: 2007-03-17
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.

To download the current JDK release, click here.
Other
5.0u12 b02Fixed
Related Reports
Duplicate :  
Relates :  
Description
The fix to bug 6461827 exposes a pre-existing defect in graphKit.
Removing an inappropriate #ifdef fixes the defect.  See bug 6461827,
and suggested fix for this bug, and bug 6518907.

It appears that only 6461827 can expose this bug.  It is already fixed in the 1.7 line.

I am filing this bug to track integration of the fix on 1.5u12.

See https://jetsvr.sfbay.sun.com:8443/BugApproval/ViewDetail.jsp?index=763 .

Comments
EVALUATION as it says
31-01-2007

SUGGESTED FIX --- /export/jrose/ws/tiger-6461827/webrevs/6461827c/src/share/vm/opto/graphKit.cpp- Mon Jan 29 13:15:14 2007 +++ graphKit.cpp Fri Jan 26 23:26:21 2007 @@ -1865,17 +1865,13 @@ r_ok_subtype->add_req( _gvn.transform( new (1) IfTrueNode ( iff3 ) ) ); set_control( _gvn.transform( new (1) IfFalseNode( iff3 ) ) ); // Now do a linear scan of the secondary super-klass array. Again, no real // performance impact (too rare) but it's gotta be done. -#ifdef IA64 Node *psc = new (3) PartialSubtypeCheckNode( subklass, superklass ); - psc->set_req(0, control()); + psc->set_req(0, control()); // only call it when we must Node *idx = _gvn.transform( psc ); -#else - Node *idx = _gvn.transform( new (3) PartialSubtypeCheckNode( subklass, superklass ) ); -#endif Node *cmp4 = _gvn.transform( new (3) CmpINode( idx, _gvn.intcon(0) ) ); Node *bol4 = _gvn.transform( new (2) BoolNode( cmp4, BoolTest::ne ) ); IfNode *iff4 = create_and_xform_if( control(), bol4, PROB_FAIR, COUNT_UNKNOWN ); r_not_subtype->add_req( _gvn.transform( new (1) IfTrueNode ( iff4 ) ) ); *** (#4 of 4): 2007-01-29 15:19:15 PST ###@###.###
31-01-2007