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
}