< prev index next >

src/share/vm/opto/multnode.cpp

Print this page

        

*** 42,59 **** Node *MultiNode::match( const ProjNode *proj, const Matcher *m ) { return proj->clone(); } //------------------------------proj_out--------------------------------------- // Get a named projection ProjNode* MultiNode::proj_out(uint which_proj) const { ! assert((Opcode() != Op_If && Opcode() != Op_RangeCheck) || which_proj == (uint)true || which_proj == (uint)false, "must be 1 or 0"); ! assert((Opcode() != Op_If && Opcode() != Op_RangeCheck) || outcnt() == 2, "bad if #1"); for( DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++ ) { Node *p = fast_out(i); if (p->is_Proj()) { ProjNode *proj = p->as_Proj(); if (proj->_con == which_proj) { ! assert((Opcode() != Op_If && Opcode() != Op_RangeCheck) || proj->Opcode() == (which_proj ? Op_IfTrue : Op_IfFalse), "bad if #2"); return proj; } } else { assert(p == this && this->is_Start(), "else must be proj"); continue; --- 42,59 ---- Node *MultiNode::match( const ProjNode *proj, const Matcher *m ) { return proj->clone(); } //------------------------------proj_out--------------------------------------- // Get a named projection ProjNode* MultiNode::proj_out(uint which_proj) const { ! assert((Opcode() != Opcodes::Op_If && Opcode() != Opcodes::Op_RangeCheck) || which_proj == (uint)true || which_proj == (uint)false, "must be 1 or 0"); ! assert((Opcode() != Opcodes::Op_If && Opcode() != Opcodes::Op_RangeCheck) || outcnt() == 2, "bad if #1"); for( DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++ ) { Node *p = fast_out(i); if (p->is_Proj()) { ProjNode *proj = p->as_Proj(); if (proj->_con == which_proj) { ! assert((Opcode() != Opcodes::Op_If && Opcode() != Opcodes::Op_RangeCheck) || proj->Opcode() == (which_proj ? Opcodes::Op_IfTrue : Opcodes::Op_IfFalse), "bad if #2"); return proj; } } else { assert(p == this && this->is_Start(), "else must be proj"); continue;
*** 157,167 **** const RegMask &ProjNode::out_RegMask() const { return RegMask::Empty; } //------------------------------ideal_reg-------------------------------------- ! uint ProjNode::ideal_reg() const { return bottom_type()->ideal_reg(); } //-------------------------------is_uncommon_trap_proj---------------------------- // Return uncommon trap call node if proj is for "proj->[region->..]call_uct" --- 157,167 ---- const RegMask &ProjNode::out_RegMask() const { return RegMask::Empty; } //------------------------------ideal_reg-------------------------------------- ! Opcodes ProjNode::ideal_reg() const { return bottom_type()->ideal_reg(); } //-------------------------------is_uncommon_trap_proj---------------------------- // Return uncommon trap call node if proj is for "proj->[region->..]call_uct"
*** 182,192 **** return call; } } return NULL; // don't do further after call } ! if (out->Opcode() != Op_Region) return NULL; } return NULL; } --- 182,192 ---- return call; } } return NULL; // don't do further after call } ! if (out->Opcode() != Opcodes::Op_Region) return NULL; } return NULL; }
*** 204,215 **** if (in0->outcnt() < 2) return NULL; IfNode* iff = in0->as_If(); // we need "If(Conv2B(Opaque1(...)))" pattern for reason_predicate if (reason != Deoptimization::Reason_none) { ! if (iff->in(1)->Opcode() != Op_Conv2B || ! iff->in(1)->in(1)->Opcode() != Op_Opaque1) { return NULL; } } ProjNode* other_proj = iff->proj_out(1-_con); --- 204,215 ---- if (in0->outcnt() < 2) return NULL; IfNode* iff = in0->as_If(); // we need "If(Conv2B(Opaque1(...)))" pattern for reason_predicate if (reason != Deoptimization::Reason_none) { ! if (iff->in(1)->Opcode() != Opcodes::Op_Conv2B || ! iff->in(1)->in(1)->Opcode() != Opcodes::Op_Opaque1) { return NULL; } } ProjNode* other_proj = iff->proj_out(1-_con);
< prev index next >