[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