8247200: assert((unsigned)fpargs < 32)

Reviewed-by: aph, neliasso
This commit is contained in:
Patric Hedlin 2020-06-04 10:17:40 +02:00
parent a512099313
commit 3839c8656e

@ -1129,13 +1129,11 @@ class ComputeMoveOrder: public StackObj {
};
static void rt_call(MacroAssembler* masm, address dest, int gpargs, int fpargs, int type) {
static void rt_call(MacroAssembler* masm, address dest) {
CodeBlob *cb = CodeCache::find_blob(dest);
if (cb) {
__ far_call(RuntimeAddress(dest));
} else {
assert((unsigned)gpargs < 256, "eek!");
assert((unsigned)fpargs < 32, "eek!");
__ lea(rscratch1, RuntimeAddress(dest));
__ blr(rscratch1);
__ maybe_isb();
@ -1803,33 +1801,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
__ lea(rscratch2, Address(rthread, JavaThread::thread_state_offset()));
__ stlrw(rscratch1, rscratch2);
{
int return_type = 0;
switch (ret_type) {
case T_VOID: break;
return_type = 0; break;
case T_CHAR:
case T_BYTE:
case T_SHORT:
case T_INT:
case T_BOOLEAN:
case T_LONG:
return_type = 1; break;
case T_ARRAY:
case T_OBJECT:
return_type = 1; break;
case T_FLOAT:
return_type = 2; break;
case T_DOUBLE:
return_type = 3; break;
default:
ShouldNotReachHere();
}
rt_call(masm, native_func,
int_args + 2, // AArch64 passes up to 8 args in int registers
float_args, // and up to 8 float args
return_type);
}
rt_call(masm, native_func);
__ bind(native_return);
@ -2039,7 +2011,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
__ ldr(r19, Address(rthread, in_bytes(Thread::pending_exception_offset())));
__ str(zr, Address(rthread, in_bytes(Thread::pending_exception_offset())));
rt_call(masm, CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_unlocking_C), 3, 0, 1);
rt_call(masm, CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_unlocking_C));
#ifdef ASSERT
{
@ -2066,7 +2038,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
__ bind(reguard);
save_native_result(masm, ret_type, stack_slots);
rt_call(masm, CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages), 0, 0, 0);
rt_call(masm, CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages));
restore_native_result(masm, ret_type, stack_slots);
// and continue
__ b(reguard_done);