src/share/vm/opto/multnode.cpp

changeset 5791
c9ccd7b85f20
parent 5110
6f3fd5150b67
child 5981
3213ba4d3dff
     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  }

mercurial