Mercurial > hg > truffle
comparison src/share/vm/opto/multnode.cpp @ 12323:c9ccd7b85f20
8024924: Intrinsify java.lang.Math.addExact
Reviewed-by: kvn, twisti
author | rbackman |
---|---|
date | Fri, 27 Sep 2013 08:39:19 +0200 |
parents | 6f3fd5150b67 |
children | 3213ba4d3dff |
comparison
equal
deleted
inserted
replaced
12322:72b7e96c1922 | 12323:c9ccd7b85f20 |
---|---|
23 */ | 23 */ |
24 | 24 |
25 #include "precompiled.hpp" | 25 #include "precompiled.hpp" |
26 #include "opto/callnode.hpp" | 26 #include "opto/callnode.hpp" |
27 #include "opto/matcher.hpp" | 27 #include "opto/matcher.hpp" |
28 #include "opto/mathexactnode.hpp" | |
28 #include "opto/multnode.hpp" | 29 #include "opto/multnode.hpp" |
29 #include "opto/opcodes.hpp" | 30 #include "opto/opcodes.hpp" |
30 #include "opto/phaseX.hpp" | 31 #include "opto/phaseX.hpp" |
31 #include "opto/regmask.hpp" | 32 #include "opto/regmask.hpp" |
32 #include "opto/type.hpp" | 33 #include "opto/type.hpp" |
44 ProjNode* MultiNode::proj_out(uint which_proj) const { | 45 ProjNode* MultiNode::proj_out(uint which_proj) const { |
45 assert(Opcode() != Op_If || which_proj == (uint)true || which_proj == (uint)false, "must be 1 or 0"); | 46 assert(Opcode() != Op_If || which_proj == (uint)true || which_proj == (uint)false, "must be 1 or 0"); |
46 assert(Opcode() != Op_If || outcnt() == 2, "bad if #1"); | 47 assert(Opcode() != Op_If || outcnt() == 2, "bad if #1"); |
47 for( DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++ ) { | 48 for( DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++ ) { |
48 Node *p = fast_out(i); | 49 Node *p = fast_out(i); |
49 if( !p->is_Proj() ) { | 50 if (p->is_Proj()) { |
51 ProjNode *proj = p->as_Proj(); | |
52 if (proj->_con == which_proj) { | |
53 assert(Opcode() != Op_If || proj->Opcode() == (which_proj?Op_IfTrue:Op_IfFalse), "bad if #2"); | |
54 return proj; | |
55 } | |
56 } else if (p->is_FlagsProj()) { | |
57 FlagsProjNode *proj = p->as_FlagsProj(); | |
58 if (proj->_con == which_proj) { | |
59 return proj; | |
60 } | |
61 } else { | |
50 assert(p == this && this->is_Start(), "else must be proj"); | 62 assert(p == this && this->is_Start(), "else must be proj"); |
51 continue; | 63 continue; |
52 } | |
53 ProjNode *proj = p->as_Proj(); | |
54 if( proj->_con == which_proj ) { | |
55 assert(Opcode() != Op_If || proj->Opcode() == (which_proj?Op_IfTrue:Op_IfFalse), "bad if #2"); | |
56 return proj; | |
57 } | 64 } |
58 } | 65 } |
59 return NULL; | 66 return NULL; |
60 } | 67 } |
61 | 68 |