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;
|