JDK-6860599 : nodes limit could be reached during Output phase
Type:Bug
Component:hotspot
Sub-Component:compiler
Affected Version:hs16
Priority:P4
Status:Closed
Resolution:Fixed
OS:solaris_10
CPU:sparc
Submitted:2009-07-14
Updated:2011-03-08
Resolved:2011-03-08
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.
One byte Nop nodes are used In debug mode for loops and calls padding in Output phase.
As result for big method the node limit could be reached. Relax nodes limit check for such case.
SUGGESTED FIX
Bailout compilation if nodes limit could be reached
during Output phase. Remove unneeded MachNop nodes creation
(after each block) used only to get its size.
24-07-2009
PUBLIC COMMENTS
Problem:
I got several CTW cases when without EA C2 "gracefully"
bailout compilation when nodes limit check failed during
macro nodes expansion. And with EA it passed macro nodes
expansion but crashed with ASSERT during Output phase.
One byte MachNop nodes are used in debug mode for loops
and calls alignment in Output phase. As result for a big
method the node limit could be reached.
Solution:
Bailout compilation if nodes limit could be reached
during Output phase. Remove unneeded MachNop nodes creation
(after each block) used only to get its size.
Collect additional information (inner loops and java calls
counts) during final_graph_reshaping.
Rename Final_Reshape_Counts fpu variable to frc since now
it contains more information.