1059 return CallNode::cmp(call) && !strcmp(_name,call._name); 1060 } 1061 #ifndef PRODUCT 1062 void CallRuntimeNode::dump_spec(outputStream *st) const { 1063 st->print("# "); 1064 st->print("%s", _name); 1065 CallNode::dump_spec(st); 1066 } 1067 #endif 1068 1069 //------------------------------calling_convention----------------------------- 1070 void CallRuntimeNode::calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const { 1071 Matcher::c_calling_convention( sig_bt, parm_regs, argcnt ); 1072 } 1073 1074 //============================================================================= 1075 //------------------------------calling_convention----------------------------- 1076 1077 1078 //============================================================================= 1079 #ifndef PRODUCT 1080 void CallLeafNode::dump_spec(outputStream *st) const { 1081 st->print("# "); 1082 st->print("%s", _name); 1083 CallNode::dump_spec(st); 1084 } 1085 #endif 1086 1087 //============================================================================= 1088 1089 void SafePointNode::set_local(JVMState* jvms, uint idx, Node *c) { 1090 assert(verify_jvms(jvms), "jvms must match"); 1091 int loc = jvms->locoff() + idx; 1092 if (in(loc)->is_top() && idx > 0 && !c->is_top() ) { 1093 // If current local idx is top then local idx - 1 could 1094 // be a long/double that needs to be killed since top could 1095 // represent the 2nd half ofthe long/double. 1096 uint ideal = in(loc -1)->ideal_reg(); 1097 if (ideal == Op_RegD || ideal == Op_RegL) { 1098 // set other (low index) half to top 1099 set_req(loc - 1, in(loc)); 1100 } 1101 } 1102 set_req(loc, c); | 1059 return CallNode::cmp(call) && !strcmp(_name,call._name); 1060 } 1061 #ifndef PRODUCT 1062 void CallRuntimeNode::dump_spec(outputStream *st) const { 1063 st->print("# "); 1064 st->print("%s", _name); 1065 CallNode::dump_spec(st); 1066 } 1067 #endif 1068 1069 //------------------------------calling_convention----------------------------- 1070 void CallRuntimeNode::calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const { 1071 Matcher::c_calling_convention( sig_bt, parm_regs, argcnt ); 1072 } 1073 1074 //============================================================================= 1075 //------------------------------calling_convention----------------------------- 1076 1077 1078 //============================================================================= 1079 uint CallLeafNode::size_of() const { return sizeof(*this); } 1080 uint CallLeafNode::cmp(const Node &n) const { 1081 CallLeafNode &call = (CallLeafNode&)n; 1082 return CallRuntimeNode::cmp(call) && _preserves_fp_registers == call._preserves_fp_registers; 1083 } 1084 1085 #ifndef PRODUCT 1086 void CallLeafNode::dump_spec(outputStream *st) const { 1087 st->print("# "); 1088 st->print("%s", _name); 1089 if (_preserves_fp_registers) { 1090 st->print("preserves_fp_registers"); 1091 } 1092 CallNode::dump_spec(st); 1093 } 1094 #endif 1095 1096 //============================================================================= 1097 1098 void SafePointNode::set_local(JVMState* jvms, uint idx, Node *c) { 1099 assert(verify_jvms(jvms), "jvms must match"); 1100 int loc = jvms->locoff() + idx; 1101 if (in(loc)->is_top() && idx > 0 && !c->is_top() ) { 1102 // If current local idx is top then local idx - 1 could 1103 // be a long/double that needs to be killed since top could 1104 // represent the 2nd half ofthe long/double. 1105 uint ideal = in(loc -1)->ideal_reg(); 1106 if (ideal == Op_RegD || ideal == Op_RegL) { 1107 // set other (low index) half to top 1108 set_req(loc - 1, in(loc)); 1109 } 1110 } 1111 set_req(loc, c); |