[9] RFR (S): 8146478: Node limit exceeded with -XX:AllocateInstancePrefetchLines=1073741823

Zoltán Majó zoltan.majo at oracle.com
Tue Jan 26 16:43:15 UTC 2016


Hi,


please review the patch for 8146478.

https://bugs.openjdk.java.net/browse/JDK-8146478

Problem: Setting a high value for AllocateInstancePrefetchLines can 
trigger an assert in the C2 compiler The reasons is that the number of 
live nodes exceeds the maximum node limit. The same problem can happen 
if AllocateInstanceLines is given a high value.

Solution:
Limit the range for AllocateInstancePrefetchLines/AllocateInstanceLines 
to 8. I picked the value 8 because
- (1) the maximum possible value for theses flags is 4/2, so having a 
slightly higher value than 4/2 still allows for some experiments;
- (2) the node_check() in PhaseMacroExpand::expand_macro_nodes() assumes 
that each macro node expansion will generate <75 new nodes. The number 
of nodes generated by expand_allocate_array()/expand_allocate() for 8 
prefetched lines closely fits into that margin (experimentally verified).

In addition, I removed some code that is that is now unnecessary because 
of the range checks we have in place.


Webrev:
http://cr.openjdk.java.net/~zmajo/8146478/webrev.00/

Testing:
- JPRT: All JTREG hotspot tests, incl. TestOptionsWithRanges.java

Thank you and best regards,


Zoltan



More information about the hotspot-compiler-dev mailing list