JDK-8046698 : assert(false) failed: only Initialize or AddP expected macro.cpp:943
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.
# Internal Error (/space/rw140007/jdk9-repo/hotspot/src/share/vm/opto/macro.cpp:943), pid=25199, tid=17
# assert(false) failed: only Initialize or AddP expected
when running CTW
ILW=Assert - bad consitency, very low, unconfirmed - turn of f loop unswitching =(M/H)LH=(P2/P4)=P3
The answer to my question: only exception path from Allocate stays in the loop. Fall-through path (which is connected to Initialize node) is the exit from the loop. That is why Initialize node is outside the loop.
Initialization node should stay together with Allocate. How it was separated?
bugs happen when:
1- try block keeps Allocate node in loop while Initialization is outside the loop
2- loop unswitching clones Allocate and add Phi to merge the result of Allocate nodes as input to the Initialization
CallNode::result_cast() return NULL because it doesn't expect a Phi, the allocation elimination code then assumes there's no use for the allocation when there's still one.
Could be related to 8042786 because it is passed with -XX:-EliminateAutoBox