< prev index next >

src/share/vm/opto/multnode.cpp

Print this page




 130       st->print("[%d]", o->_idx);
 131     }
 132   }
 133   st->print("#%d", _con);
 134 }
 135 #endif
 136 
 137 //----------------------------check_con----------------------------------------
 138 void ProjNode::check_con() const {
 139   Node* n = in(0);
 140   if (n == NULL)       return;  // should be assert, but NodeHash makes bogons
 141   if (n->is_Mach())    return;  // mach. projs. are not type-safe
 142   if (n->is_Start())   return;  // alas, starts can have mach. projs. also
 143   if (_con == SCMemProjNode::SCMEMPROJCON ) return;
 144   const Type* t = n->bottom_type();
 145   if (t == Type::TOP)  return;  // multi is dead
 146   assert(_con < t->is_tuple()->cnt(), "ProjNode::_con must be in range");
 147 }
 148 
 149 //------------------------------Value------------------------------------------
 150 const Type *ProjNode::Value( PhaseTransform *phase ) const {
 151   if (in(0) == NULL) return Type::TOP;
 152   return proj_type(phase->type(in(0)));
 153 }
 154 
 155 //------------------------------out_RegMask------------------------------------
 156 // Pass the buck uphill
 157 const RegMask &ProjNode::out_RegMask() const {
 158   return RegMask::Empty;
 159 }
 160 
 161 //------------------------------ideal_reg--------------------------------------
 162 uint ProjNode::ideal_reg() const {
 163   return bottom_type()->ideal_reg();
 164 }
 165 
 166 //-------------------------------is_uncommon_trap_proj----------------------------
 167 // Return uncommon trap call node if proj is for "proj->[region->..]call_uct"
 168 // NULL otherwise
 169 CallStaticJavaNode* ProjNode::is_uncommon_trap_proj(Deoptimization::DeoptReason reason) {
 170   int path_limit = 10;




 130       st->print("[%d]", o->_idx);
 131     }
 132   }
 133   st->print("#%d", _con);
 134 }
 135 #endif
 136 
 137 //----------------------------check_con----------------------------------------
 138 void ProjNode::check_con() const {
 139   Node* n = in(0);
 140   if (n == NULL)       return;  // should be assert, but NodeHash makes bogons
 141   if (n->is_Mach())    return;  // mach. projs. are not type-safe
 142   if (n->is_Start())   return;  // alas, starts can have mach. projs. also
 143   if (_con == SCMemProjNode::SCMEMPROJCON ) return;
 144   const Type* t = n->bottom_type();
 145   if (t == Type::TOP)  return;  // multi is dead
 146   assert(_con < t->is_tuple()->cnt(), "ProjNode::_con must be in range");
 147 }
 148 
 149 //------------------------------Value------------------------------------------
 150 const Type* ProjNode::Value(PhaseGVN* phase) const {
 151   if (in(0) == NULL) return Type::TOP;
 152   return proj_type(phase->type(in(0)));
 153 }
 154 
 155 //------------------------------out_RegMask------------------------------------
 156 // Pass the buck uphill
 157 const RegMask &ProjNode::out_RegMask() const {
 158   return RegMask::Empty;
 159 }
 160 
 161 //------------------------------ideal_reg--------------------------------------
 162 uint ProjNode::ideal_reg() const {
 163   return bottom_type()->ideal_reg();
 164 }
 165 
 166 //-------------------------------is_uncommon_trap_proj----------------------------
 167 // Return uncommon trap call node if proj is for "proj->[region->..]call_uct"
 168 // NULL otherwise
 169 CallStaticJavaNode* ProjNode::is_uncommon_trap_proj(Deoptimization::DeoptReason reason) {
 170   int path_limit = 10;


< prev index next >