Skip to content
This repository was archived by the owner on Aug 27, 2022. It is now read-only.
/ lanai Public archive

Commit d51e2ab

Browse files
committedNov 27, 2020
8256986: [PPC64] C2 crashes when accessing nonexisting jvms of CallLeafDirectNode
Reviewed-by: clanger
1 parent 644271e commit d51e2ab

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed
 

‎src/hotspot/cpu/ppc/ppc.ad

+10-3
Original file line numberDiff line numberDiff line change
@@ -1115,11 +1115,17 @@ int MachCallDynamicJavaNode::ret_addr_offset() {
11151115
}
11161116

11171117
int MachCallRuntimeNode::ret_addr_offset() {
1118+
if (rule() == CallRuntimeDirect_rule) {
1119+
// CallRuntimeDirectNode uses call_c.
11181120
#if defined(ABI_ELFv2)
1119-
return 28;
1121+
return 28;
11201122
#else
1121-
return 40;
1123+
return 40;
11221124
#endif
1125+
}
1126+
assert(rule() == CallLeafDirect_rule, "unexpected node with rule %u", rule());
1127+
// CallLeafDirectNode uses bl.
1128+
return 4;
11231129
}
11241130

11251131
int MachCallNativeNode::ret_addr_offset() {
@@ -3578,6 +3584,7 @@ encode %{
35783584
call->_tf = _tf;
35793585
call->_entry_point = _entry_point;
35803586
call->_cnt = _cnt;
3587+
call->_guaranteed_safepoint = true;
35813588
call->_oop_map = _oop_map;
35823589
call->_jvms = _jvms;
35833590
call->_jvmadj = _jvmadj;
@@ -3778,14 +3785,14 @@ encode %{
37783785
call->_tf = _tf;
37793786
call->_entry_point = _entry_point;
37803787
call->_cnt = _cnt;
3788+
call->_guaranteed_safepoint = false;
37813789
call->_oop_map = _oop_map;
37823790
guarantee(!_jvms, "You must clone the jvms and adapt the offsets by fix_jvms().");
37833791
call->_jvms = NULL;
37843792
call->_jvmadj = _jvmadj;
37853793
call->_in_rms = _in_rms;
37863794
call->_nesting = _nesting;
37873795

3788-
37893796
// New call needs all inputs of old call.
37903797
// Req...
37913798
for (uint i = 0; i < req(); ++i) {

0 commit comments

Comments
 (0)
This repository has been archived.