//------------------------------Registers-------------------------------------- const RegMask &MachCallNode::in_RegMask(uint idx) const { // Values in the domain use the users calling convention, embodied in the // _in_rms array of RegMasks. if (idx < tf()->domain()->cnt()) { return _in_rms[idx]; } if (idx == mach_constant_base_node_input()) { return MachConstantBaseNode::static_out_RegMask(); } // Values outside the domain represent debug info return *Compile::current()->matcher()->idealreg2debugmask[in(idx)->ideal_reg()]; }
//------------------------------Registers-------------------------------------- const RegMask &MachCallJavaNode::in_RegMask(uint idx) const { // Values in the domain use the users calling convention, embodied in the // _in_rms array of RegMasks. if (idx < tf()->domain()->cnt()) { return _in_rms[idx]; } if (idx == mach_constant_base_node_input()) { return MachConstantBaseNode::static_out_RegMask(); } // Values outside the domain represent debug info Matcher* m = Compile::current()->matcher(); // If this call is a MethodHandle invoke we have to use a different // debugmask which does not include the register we use to save the // SP over MH invokes. RegMask** debugmask = _method_handle_invoke ? m->idealreg2mhdebugmask : m->idealreg2debugmask; return *debugmask[in(idx)->ideal_reg()]; }
virtual const RegMask &in_RegMask(uint idx) const { if (idx == mach_constant_base_node_input()) return MachConstantBaseNode::static_out_RegMask(); return MachNode::in_RegMask(idx); }