RFR(S): 8203425: assert(is_Loop()) failed: invalid node class
nils.eliasson at oracle.com
Thu May 31 13:22:53 UTC 2018
Thank you Tobias!
On 2018-05-31 15:18, Tobias Hartmann wrote:
> Hi Nils,
> this looks reasonable to me.
> On 23.05.2018 14:14, Nils Eliasson wrote:
>> This is a follow up to JDK-8203215 that caused failures in testing.
>> JDK-8203215 added a call to igvn.optimize after beautify_loops to handle phi-nodes that have lost
>> their loop edge and now produce loop invariant data. In testing a failure came up - the
>> igvn.optimize call can sometimes eliminate a loop node when the phis are all invariant.
>> When fixing this I observed that a loop might be removed, and that another region that is a subset
>> of the first is selected as new loop, and then there might be new loop invariant phis (not observed).
>> This change introduces a fix point iteration for beautify_loops, until no more loop structure
>> changes has been made. This might sound expensive but In practice beautify-loops is called one
>> additional time at first insertion of loop-nodes. I have seen one case of cascading loop reductions
>> when beautify_loops is called three times. The upside is that we reach fix point for PhaseIdealLoop
>> faster since these changes would guarantee to trigger a major change in next iteration instead.
>> Nils Eliasson
More information about the hotspot-compiler-dev