8256986: [PPC64] C2 crashes when accessing nonexisting jvms of CallLeafDirectNode

Reviewed-by: clanger
This commit is contained in:
Martin Doerr 2020-11-27 15:43:52 +00:00
parent 644271e7a4
commit d51e2ab219

View File

@ -1115,11 +1115,17 @@ int MachCallDynamicJavaNode::ret_addr_offset() {
}
int MachCallRuntimeNode::ret_addr_offset() {
if (rule() == CallRuntimeDirect_rule) {
// CallRuntimeDirectNode uses call_c.
#if defined(ABI_ELFv2)
return 28;
return 28;
#else
return 40;
return 40;
#endif
}
assert(rule() == CallLeafDirect_rule, "unexpected node with rule %u", rule());
// CallLeafDirectNode uses bl.
return 4;
}
int MachCallNativeNode::ret_addr_offset() {
@ -3578,6 +3584,7 @@ encode %{
call->_tf = _tf;
call->_entry_point = _entry_point;
call->_cnt = _cnt;
call->_guaranteed_safepoint = true;
call->_oop_map = _oop_map;
call->_jvms = _jvms;
call->_jvmadj = _jvmadj;
@ -3778,6 +3785,7 @@ encode %{
call->_tf = _tf;
call->_entry_point = _entry_point;
call->_cnt = _cnt;
call->_guaranteed_safepoint = false;
call->_oop_map = _oop_map;
guarantee(!_jvms, "You must clone the jvms and adapt the offsets by fix_jvms().");
call->_jvms = NULL;
@ -3785,7 +3793,6 @@ encode %{
call->_in_rms = _in_rms;
call->_nesting = _nesting;
// New call needs all inputs of old call.
// Req...
for (uint i = 0; i < req(); ++i) {