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();