Mercurial > hg > truffle
diff src/share/vm/opto/loopopts.cpp @ 4779:c8d8e124380c
7064302: JDK7 build 147 crashed after testing my java 6-compiled web app
Summary: Don't split CMove node if it's control edge is different from split region.
Reviewed-by: never
author | kvn |
---|---|
date | Thu, 12 Jan 2012 12:28:59 -0800 |
parents | 670a74b863fc |
children | 5e990493719e |
line wrap: on
line diff
--- a/src/share/vm/opto/loopopts.cpp Tue Jan 10 18:05:38 2012 -0800 +++ b/src/share/vm/opto/loopopts.cpp Thu Jan 12 12:28:59 2012 -0800 @@ -819,6 +819,8 @@ if( iff->is_If() ) { // Classic split-if? if( iff->in(0) != n_ctrl ) return; // Compare must be in same blk as if } else if (iff->is_CMove()) { // Trying to split-up a CMOVE + // Can't split CMove with different control edge. + if (iff->in(0) != NULL && iff->in(0) != n_ctrl ) return; if( get_ctrl(iff->in(2)) == n_ctrl || get_ctrl(iff->in(3)) == n_ctrl ) return; // Inputs not yet split-up @@ -937,7 +939,7 @@ } bool did_break = (i < imax); // Did we break out of the previous loop? if (!did_break && n->outcnt() > 1) { // All uses in outer loops! - Node *late_load_ctrl; + Node *late_load_ctrl = NULL; if (n->is_Load()) { // If n is a load, get and save the result from get_late_ctrl(), // to be later used in calculating the control for n's clones.