1.1 --- a/src/share/vm/opto/multnode.cpp Thu Sep 26 12:07:53 2013 -0700 1.2 +++ b/src/share/vm/opto/multnode.cpp Fri Sep 27 08:39:19 2013 +0200 1.3 @@ -25,6 +25,7 @@ 1.4 #include "precompiled.hpp" 1.5 #include "opto/callnode.hpp" 1.6 #include "opto/matcher.hpp" 1.7 +#include "opto/mathexactnode.hpp" 1.8 #include "opto/multnode.hpp" 1.9 #include "opto/opcodes.hpp" 1.10 #include "opto/phaseX.hpp" 1.11 @@ -46,15 +47,21 @@ 1.12 assert(Opcode() != Op_If || outcnt() == 2, "bad if #1"); 1.13 for( DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++ ) { 1.14 Node *p = fast_out(i); 1.15 - if( !p->is_Proj() ) { 1.16 + if (p->is_Proj()) { 1.17 + ProjNode *proj = p->as_Proj(); 1.18 + if (proj->_con == which_proj) { 1.19 + assert(Opcode() != Op_If || proj->Opcode() == (which_proj?Op_IfTrue:Op_IfFalse), "bad if #2"); 1.20 + return proj; 1.21 + } 1.22 + } else if (p->is_FlagsProj()) { 1.23 + FlagsProjNode *proj = p->as_FlagsProj(); 1.24 + if (proj->_con == which_proj) { 1.25 + return proj; 1.26 + } 1.27 + } else { 1.28 assert(p == this && this->is_Start(), "else must be proj"); 1.29 continue; 1.30 } 1.31 - ProjNode *proj = p->as_Proj(); 1.32 - if( proj->_con == which_proj ) { 1.33 - assert(Opcode() != Op_If || proj->Opcode() == (which_proj?Op_IfTrue:Op_IfFalse), "bad if #2"); 1.34 - return proj; 1.35 - } 1.36 } 1.37 return NULL; 1.38 }