619 }
620
621
622 //------------------------------Registers--------------------------------------
623 const RegMask &MachCallNode::in_RegMask( uint idx ) const {
624 // Values in the domain use the users calling convention, embodied in the
625 // _in_rms array of RegMasks.
626 if (idx < tf()->domain()->cnt()) return _in_rms[idx];
627 // Values outside the domain represent debug info
628 return *Compile::current()->matcher()->idealreg2debugmask[in(idx)->ideal_reg()];
629 }
630
631 //=============================================================================
632 uint MachCallJavaNode::size_of() const { return sizeof(*this); }
633 uint MachCallJavaNode::cmp( const Node &n ) const {
634 MachCallJavaNode &call = (MachCallJavaNode&)n;
635 return MachCallNode::cmp(call) && _method->equals(call._method);
636 }
637 #ifndef PRODUCT
638 void MachCallJavaNode::dump_spec(outputStream *st) const {
639 if( _method ) {
640 _method->print_short_name(st);
641 st->print(" ");
642 }
643 MachCallNode::dump_spec(st);
644 }
645 #endif
646
647 //=============================================================================
648 uint MachCallStaticJavaNode::size_of() const { return sizeof(*this); }
649 uint MachCallStaticJavaNode::cmp( const Node &n ) const {
650 MachCallStaticJavaNode &call = (MachCallStaticJavaNode&)n;
651 return MachCallJavaNode::cmp(call) && _name == call._name;
652 }
653
654 //----------------------------uncommon_trap_request----------------------------
655 // If this is an uncommon trap, return the request code, else zero.
656 int MachCallStaticJavaNode::uncommon_trap_request() const {
657 if (_name != NULL && !strcmp(_name, "uncommon_trap")) {
658 return CallStaticJavaNode::extract_uncommon_trap_request(this);
659 }
660 return 0;
661 }
662
663 #ifndef PRODUCT
664 // Helper for summarizing uncommon_trap arguments.
665 void MachCallStaticJavaNode::dump_trap_args(outputStream *st) const {
666 int trap_req = uncommon_trap_request();
|
619 }
620
621
622 //------------------------------Registers--------------------------------------
623 const RegMask &MachCallNode::in_RegMask( uint idx ) const {
624 // Values in the domain use the users calling convention, embodied in the
625 // _in_rms array of RegMasks.
626 if (idx < tf()->domain()->cnt()) return _in_rms[idx];
627 // Values outside the domain represent debug info
628 return *Compile::current()->matcher()->idealreg2debugmask[in(idx)->ideal_reg()];
629 }
630
631 //=============================================================================
632 uint MachCallJavaNode::size_of() const { return sizeof(*this); }
633 uint MachCallJavaNode::cmp( const Node &n ) const {
634 MachCallJavaNode &call = (MachCallJavaNode&)n;
635 return MachCallNode::cmp(call) && _method->equals(call._method);
636 }
637 #ifndef PRODUCT
638 void MachCallJavaNode::dump_spec(outputStream *st) const {
639 if (_method_handle_invoke)
640 st->print("MethodHandle ");
641 if (_method) {
642 _method->print_short_name(st);
643 st->print(" ");
644 }
645 MachCallNode::dump_spec(st);
646 }
647 #endif
648
649 //------------------------------Registers--------------------------------------
650 const RegMask &MachCallJavaNode::in_RegMask(uint idx) const {
651 // Values in the domain use the users calling convention, embodied in the
652 // _in_rms array of RegMasks.
653 if (idx < tf()->domain()->cnt()) return _in_rms[idx];
654 // Values outside the domain represent debug info
655 Matcher* m = Compile::current()->matcher();
656 RegMask** debugmask = _method_handle_invoke ? m->idealreg2mhdebugmask : m->idealreg2debugmask;
657 return *debugmask[in(idx)->ideal_reg()];
658 }
659
660 //=============================================================================
661 uint MachCallStaticJavaNode::size_of() const { return sizeof(*this); }
662 uint MachCallStaticJavaNode::cmp( const Node &n ) const {
663 MachCallStaticJavaNode &call = (MachCallStaticJavaNode&)n;
664 return MachCallJavaNode::cmp(call) && _name == call._name;
665 }
666
667 //----------------------------uncommon_trap_request----------------------------
668 // If this is an uncommon trap, return the request code, else zero.
669 int MachCallStaticJavaNode::uncommon_trap_request() const {
670 if (_name != NULL && !strcmp(_name, "uncommon_trap")) {
671 return CallStaticJavaNode::extract_uncommon_trap_request(this);
672 }
673 return 0;
674 }
675
676 #ifndef PRODUCT
677 // Helper for summarizing uncommon_trap arguments.
678 void MachCallStaticJavaNode::dump_trap_args(outputStream *st) const {
679 int trap_req = uncommon_trap_request();
|