1.1 --- a/src/share/vm/opto/compile.cpp Mon Oct 21 17:34:27 2013 -0700 1.2 +++ b/src/share/vm/opto/compile.cpp Mon Oct 21 15:31:16 2013 +0200 1.3 @@ -3006,10 +3006,15 @@ 1.4 if (result != NULL) { 1.5 for (DUIterator_Fast jmax, j = result->fast_outs(jmax); j < jmax; j++) { 1.6 Node* out = result->fast_out(j); 1.7 - if (out->in(0) == NULL) { 1.8 - out->set_req(0, non_throwing); 1.9 - } else if (out->in(0) == ctrl) { 1.10 - out->set_req(0, non_throwing); 1.11 + // Phi nodes shouldn't be moved. They would only match below if they 1.12 + // had the same control as the MathExactNode. The only time that 1.13 + // would happen is if the Phi is also an input to the MathExact 1.14 + if (!out->is_Phi()) { 1.15 + if (out->in(0) == NULL) { 1.16 + out->set_req(0, non_throwing); 1.17 + } else if (out->in(0) == ctrl) { 1.18 + out->set_req(0, non_throwing); 1.19 + } 1.20 } 1.21 } 1.22 }