src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
Print this page
*** 739,757 ****
__ load_klass(rscratch1, receiver);
__ ldr(tmp, Address(holder, CompiledICHolder::holder_klass_offset()));
__ cmp(rscratch1, tmp);
__ ldr(rmethod, Address(holder, CompiledICHolder::holder_method_offset()));
__ br(Assembler::EQ, ok);
! __ b(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
__ bind(ok);
// Method might have been compiled since the call site was patched to
// interpreted; if that is the case treat it as a miss so we can get
// the call site corrected.
__ ldr(rscratch1, Address(rmethod, in_bytes(Method::code_offset())));
__ cbz(rscratch1, skip_fixup);
! __ b(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
__ block_comment("} c2i_unverified_entry");
}
address c2i_entry = __ pc();
--- 739,757 ----
__ load_klass(rscratch1, receiver);
__ ldr(tmp, Address(holder, CompiledICHolder::holder_klass_offset()));
__ cmp(rscratch1, tmp);
__ ldr(rmethod, Address(holder, CompiledICHolder::holder_method_offset()));
__ br(Assembler::EQ, ok);
! __ far_jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
__ bind(ok);
// Method might have been compiled since the call site was patched to
// interpreted; if that is the case treat it as a miss so we can get
// the call site corrected.
__ ldr(rscratch1, Address(rmethod, in_bytes(Method::code_offset())));
__ cbz(rscratch1, skip_fixup);
! __ far_jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
__ block_comment("} c2i_unverified_entry");
}
address c2i_entry = __ pc();
*** 1166,1176 ****
static void rt_call(MacroAssembler* masm, address dest, int gpargs, int fpargs, int type) {
CodeBlob *cb = CodeCache::find_blob(dest);
if (cb) {
! __ bl(RuntimeAddress(dest));
} else {
assert((unsigned)gpargs < 256, "eek!");
assert((unsigned)fpargs < 32, "eek!");
__ lea(rscratch1, RuntimeAddress(dest));
__ mov(rscratch2, (gpargs << 6) | (fpargs << 2) | type);
--- 1166,1176 ----
static void rt_call(MacroAssembler* masm, address dest, int gpargs, int fpargs, int type) {
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));
__ mov(rscratch2, (gpargs << 6) | (fpargs << 2) | type);
*** 1537,1547 ****
assert_different_registers(ic_reg, receiver, rscratch1);
__ verify_oop(receiver);
__ cmp_klass(receiver, ic_reg, rscratch1);
__ br(Assembler::EQ, hit);
! __ b(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
// Verified entry point must be aligned
__ align(8);
__ bind(hit);
--- 1537,1547 ----
assert_different_registers(ic_reg, receiver, rscratch1);
__ verify_oop(receiver);
__ cmp_klass(receiver, ic_reg, rscratch1);
__ br(Assembler::EQ, hit);
! __ far_jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
// Verified entry point must be aligned
__ align(8);
__ bind(hit);
*** 2097,2107 ****
if (!is_critical_native) {
// forward the exception
__ bind(exception_pending);
// and forward the exception
! __ b(RuntimeAddress(StubRoutines::forward_exception_entry()));
}
// Slow path locking & unlocking
if (method->is_synchronized()) {
--- 2097,2107 ----
if (!is_critical_native) {
// forward the exception
__ bind(exception_pending);
// and forward the exception
! __ far_jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
}
// Slow path locking & unlocking
if (method->is_synchronized()) {
*** 2833,2843 ****
// Exception pending
RegisterSaver::restore_live_registers(masm);
! __ b(RuntimeAddress(StubRoutines::forward_exception_entry()));
// No exception case
__ bind(noException);
// Normal exit, restore registers and exit.
--- 2833,2843 ----
// Exception pending
RegisterSaver::restore_live_registers(masm);
! __ far_jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
// No exception case
__ bind(noException);
// Normal exit, restore registers and exit.
*** 2929,2939 ****
// exception pending => remove activation and forward to exception handler
__ str(zr, Address(rthread, JavaThread::vm_result_offset()));
__ ldr(r0, Address(rthread, Thread::pending_exception_offset()));
! __ b(RuntimeAddress(StubRoutines::forward_exception_entry()));
// -------------
// make sure all code is generated
masm->flush();
--- 2929,2939 ----
// exception pending => remove activation and forward to exception handler
__ str(zr, Address(rthread, JavaThread::vm_result_offset()));
__ ldr(r0, Address(rthread, Thread::pending_exception_offset()));
! __ far_jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
// -------------
// make sure all code is generated
masm->flush();