JDK-7004535 : Clone loop predicate during loop unswitch
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs20
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: x86
  • Submitted: 2010-12-03
  • Updated: 2011-09-22
  • Resolved: 2011-04-24
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.
JDK 7 Other
7Fixed hs21Fixed
Related Reports
Relates :  
Relates :  
There could be more optimization opportunities if loop predicate is cloned to each branch during loop unswitch.

PUBLIC COMMENTS Currently loop predicates generated during parsing could be separated from loops when loops are cloned. As result such predicates are removed. There could be more optimization opportunities if loop predicates are also cloned in such situations. Loop predicate code become big so I moved it into new file loopPredicate.cpp. I separated the cloning code for IdealLoop and IterGVN. The generated Ideal code is the same but registration of new Ideal nodes is different enough to have separate methods, I think. I welcome any suggestions to improve this code. Keep loop predicates after CCP and perform optimizations with them until no more loop optimizations could be done. After that switch them off and do more loop optimizations. VectorNode missed size_of() method as result it was cloned incorrectly. Added TraceLoopOpts outputs I missed in previous changes.

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/08eb13460b3a