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