< prev index next >

src/share/vm/opto/machnode.cpp

Print this page




 635   // Values in the domain use the users calling convention, embodied in the
 636   // _in_rms array of RegMasks.
 637   if( idx < TypeFunc::Parms ) return _in_rms[idx];
 638 
 639   if (SafePointNode::needs_polling_address_input() &&
 640       idx == TypeFunc::Parms &&
 641       ideal_Opcode() == Op_SafePoint) {
 642     return MachNode::in_RegMask(idx);
 643   }
 644 
 645   // Values outside the domain represent debug info
 646   return *Compile::current()->matcher()->idealreg2spillmask[in(idx)->ideal_reg()];
 647 }
 648 
 649 
 650 //=============================================================================
 651 
 652 uint MachCallNode::cmp( const Node &n ) const
 653 { return _tf == ((MachCallNode&)n)._tf; }
 654 const Type *MachCallNode::bottom_type() const { return tf()->range(); }
 655 const Type *MachCallNode::Value(PhaseTransform *phase) const { return tf()->range(); }
 656 
 657 #ifndef PRODUCT
 658 void MachCallNode::dump_spec(outputStream *st) const {
 659   st->print("# ");
 660   if (tf() != NULL)  tf()->dump_on(st);
 661   if (_cnt != COUNT_UNKNOWN)  st->print(" C=%f",_cnt);
 662   if (jvms() != NULL)  jvms()->dump_spec(st);
 663 }
 664 #endif
 665 
 666 bool MachCallNode::return_value_is_used() const {
 667   if (tf()->range()->cnt() == TypeFunc::Parms) {
 668     // void return
 669     return false;
 670   }
 671 
 672   // find the projection corresponding to the return value
 673   for (DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++) {
 674     Node *use = fast_out(i);
 675     if (!use->is_Proj()) continue;




 635   // Values in the domain use the users calling convention, embodied in the
 636   // _in_rms array of RegMasks.
 637   if( idx < TypeFunc::Parms ) return _in_rms[idx];
 638 
 639   if (SafePointNode::needs_polling_address_input() &&
 640       idx == TypeFunc::Parms &&
 641       ideal_Opcode() == Op_SafePoint) {
 642     return MachNode::in_RegMask(idx);
 643   }
 644 
 645   // Values outside the domain represent debug info
 646   return *Compile::current()->matcher()->idealreg2spillmask[in(idx)->ideal_reg()];
 647 }
 648 
 649 
 650 //=============================================================================
 651 
 652 uint MachCallNode::cmp( const Node &n ) const
 653 { return _tf == ((MachCallNode&)n)._tf; }
 654 const Type *MachCallNode::bottom_type() const { return tf()->range(); }
 655 const Type* MachCallNode::Value(PhaseGVN* phase) const { return tf()->range(); }
 656 
 657 #ifndef PRODUCT
 658 void MachCallNode::dump_spec(outputStream *st) const {
 659   st->print("# ");
 660   if (tf() != NULL)  tf()->dump_on(st);
 661   if (_cnt != COUNT_UNKNOWN)  st->print(" C=%f",_cnt);
 662   if (jvms() != NULL)  jvms()->dump_spec(st);
 663 }
 664 #endif
 665 
 666 bool MachCallNode::return_value_is_used() const {
 667   if (tf()->range()->cnt() == TypeFunc::Parms) {
 668     // void return
 669     return false;
 670   }
 671 
 672   // find the projection corresponding to the return value
 673   for (DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++) {
 674     Node *use = fast_out(i);
 675     if (!use->is_Proj()) continue;


< prev index next >