Request for reviews (S): 7064302: JDK7 build 147 crashed after testing my java 6-compiled web app
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Jan 12 10:35:27 PST 2012
http://cr.openjdk.java.net/~kvn/7064302/webrev
7064302: JDK7 build 147 crashed after testing my java 6-compiled web app
Very rare case when CMoveP control edge is CountedLoop back control. During loop
iteration splitting CMoveP clone is placed on entry path of post-loop. Later
when pre-loop is created clone_loop() code pulls Bool and Cmp nodes through Phi
down to CMoveP clone. Note that Phi's region is above CMoveP clone's control
which is fallthrough path of post-loop's zero-trip guard.
Split through Phi optimization tries to reverse this merged subgraph and
incorrectly splits this CMoveP node. As result 2 clones of CMoveP were placed at
the same place as original node. It creates bad graph.
The fix itself is very small: don't split CMove node if it's control edge is
different from split region. Large part of changes is additional debug output in
build_loop_late_post() where bad graph is detected. It helped me investigate
this problem.
I also added missing initialization of local variable.
I was not able to construct regression test but customer verified the fix.
Thanks,
Vladimir
More information about the hotspot-compiler-dev
mailing list