Mercurial > hg > graal-compiler
comparison src/share/vm/opto/machnode.cpp @ 14434:318d0622a6d7
8028580: PPC64 (part 114/120): Support for Call nodes with constants.
Summary: extends MachCall nodes so that they can issue constants to the constant table
Reviewed-by: kvn
author | goetz |
---|---|
date | Wed, 20 Nov 2013 11:08:09 -0800 |
parents | 1410ad6b05f1 |
children | 15120a36272d |
comparison
equal
deleted
inserted
replaced
14433:018b357638aa | 14434:318d0622a6d7 |
---|---|
646 return false; | 646 return false; |
647 } | 647 } |
648 | 648 |
649 | 649 |
650 //------------------------------Registers-------------------------------------- | 650 //------------------------------Registers-------------------------------------- |
651 const RegMask &MachCallNode::in_RegMask( uint idx ) const { | 651 const RegMask &MachCallNode::in_RegMask(uint idx) const { |
652 // Values in the domain use the users calling convention, embodied in the | 652 // Values in the domain use the users calling convention, embodied in the |
653 // _in_rms array of RegMasks. | 653 // _in_rms array of RegMasks. |
654 if (idx < tf()->domain()->cnt()) return _in_rms[idx]; | 654 if (idx < tf()->domain()->cnt()) { |
655 return _in_rms[idx]; | |
656 } | |
657 if (idx == mach_constant_base_node_input()) { | |
658 return MachConstantBaseNode::static_out_RegMask(); | |
659 } | |
655 // Values outside the domain represent debug info | 660 // Values outside the domain represent debug info |
656 return *Compile::current()->matcher()->idealreg2debugmask[in(idx)->ideal_reg()]; | 661 return *Compile::current()->matcher()->idealreg2debugmask[in(idx)->ideal_reg()]; |
657 } | 662 } |
658 | 663 |
659 //============================================================================= | 664 //============================================================================= |
676 | 681 |
677 //------------------------------Registers-------------------------------------- | 682 //------------------------------Registers-------------------------------------- |
678 const RegMask &MachCallJavaNode::in_RegMask(uint idx) const { | 683 const RegMask &MachCallJavaNode::in_RegMask(uint idx) const { |
679 // Values in the domain use the users calling convention, embodied in the | 684 // Values in the domain use the users calling convention, embodied in the |
680 // _in_rms array of RegMasks. | 685 // _in_rms array of RegMasks. |
681 if (idx < tf()->domain()->cnt()) return _in_rms[idx]; | 686 if (idx < tf()->domain()->cnt()) { |
687 return _in_rms[idx]; | |
688 } | |
689 if (idx == mach_constant_base_node_input()) { | |
690 return MachConstantBaseNode::static_out_RegMask(); | |
691 } | |
682 // Values outside the domain represent debug info | 692 // Values outside the domain represent debug info |
683 Matcher* m = Compile::current()->matcher(); | 693 Matcher* m = Compile::current()->matcher(); |
684 // If this call is a MethodHandle invoke we have to use a different | 694 // If this call is a MethodHandle invoke we have to use a different |
685 // debugmask which does not include the register we use to save the | 695 // debugmask which does not include the register we use to save the |
686 // SP over MH invokes. | 696 // SP over MH invokes. |