JDK-6362260 : policy_maximally_unroll ignores the current compilation size and can blow out the node counts.
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 1.4.2_12,5.0u6
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2005-12-13
  • Updated: 2010-12-08
  • Resolved: 2006-02-22
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 JDK 6
1.4.2_13Fixed 6 b73Fixed
Description
policy_maximally_unroll ignores the current compilation size and can blow out the node counts. The following suggested fix added the cutout from policy_peel into it.



==== //java/main-dev/java/hotspot/src/share/vm/opto/loopTransform.cpp#15 - /home/cliffc/HotSpot/cliffc-main/hotspot/src/share/vm/opto/loopTransform.cpp ====
@@ -216,7 +216,8 @@
   uint unroll_limit = (uint)LoopUnrollLimit * 4;
   assert( (intx)unroll_limit == LoopUnrollLimit * 4, "LoopUnrollLimit must fit in 32bits");
   if( trip_count <= unroll_limit && body_size <= unroll_limit &&
-      (body_size * trip_count <= unroll_limit) ) {
+      (body_size * trip_count <= unroll_limit) &&
+      body_size*body_size+phase->C->unique() < 65000 ) {
     return trip_count;    // maximally unroll
   }

Comments
SUGGESTED FIX /net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20060213110717.nips.bug6362260/ Webrev: http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20060213110717.nips.bug6362260/workspace/webrevs/webrev-2006.02.13/index.html
13-02-2006

EVALUATION See description.
10-02-2006