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