< prev index next >

hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp

Print this page




2024   Label dtrace_method_exit, dtrace_method_exit_done;
2025   {
2026     unsigned long offset;
2027     __ adrp(rscratch1, ExternalAddress((address)&DTraceMethodProbes), offset);
2028     __ ldrb(rscratch1, Address(rscratch1, offset));
2029     __ cbnzw(rscratch1, dtrace_method_exit);
2030     __ bind(dtrace_method_exit_done);
2031   }
2032 
2033   __ reset_last_Java_frame(false, true);
2034 
2035   // Unpack oop result
2036   if (ret_type == T_OBJECT || ret_type == T_ARRAY) {
2037       Label L;
2038       __ cbz(r0, L);
2039       __ ldr(r0, Address(r0, 0));
2040       __ bind(L);
2041       __ verify_oop(r0);
2042   }
2043 





2044   if (!is_critical_native) {
2045     // reset handle block
2046     __ ldr(r2, Address(rthread, JavaThread::active_handles_offset()));
2047     __ str(zr, Address(r2, JNIHandleBlock::top_offset_in_bytes()));
2048   }
2049 
2050   __ leave();
2051 
2052   if (!is_critical_native) {
2053     // Any exception pending?
2054     __ ldr(rscratch1, Address(rthread, in_bytes(Thread::pending_exception_offset())));
2055     __ cbnz(rscratch1, exception_pending);
2056   }
2057 
2058   // record exit from native wrapper code
2059   if (NotifySimulator) {
2060     __ notify(Assembler::method_reentry);
2061   }
2062 
2063   // We're done




2024   Label dtrace_method_exit, dtrace_method_exit_done;
2025   {
2026     unsigned long offset;
2027     __ adrp(rscratch1, ExternalAddress((address)&DTraceMethodProbes), offset);
2028     __ ldrb(rscratch1, Address(rscratch1, offset));
2029     __ cbnzw(rscratch1, dtrace_method_exit);
2030     __ bind(dtrace_method_exit_done);
2031   }
2032 
2033   __ reset_last_Java_frame(false, true);
2034 
2035   // Unpack oop result
2036   if (ret_type == T_OBJECT || ret_type == T_ARRAY) {
2037       Label L;
2038       __ cbz(r0, L);
2039       __ ldr(r0, Address(r0, 0));
2040       __ bind(L);
2041       __ verify_oop(r0);
2042   }
2043 
2044   if (CheckJNICalls) {
2045     // clear_pending_jni_exception_check
2046     __ str(zr, Address(rthread, JavaThread::pending_jni_exception_check_fn_offset());
2047   }
2048 
2049   if (!is_critical_native) {
2050     // reset handle block
2051     __ ldr(r2, Address(rthread, JavaThread::active_handles_offset()));
2052     __ str(zr, Address(r2, JNIHandleBlock::top_offset_in_bytes()));
2053   }
2054 
2055   __ leave();
2056 
2057   if (!is_critical_native) {
2058     // Any exception pending?
2059     __ ldr(rscratch1, Address(rthread, in_bytes(Thread::pending_exception_offset())));
2060     __ cbnz(rscratch1, exception_pending);
2061   }
2062 
2063   // record exit from native wrapper code
2064   if (NotifySimulator) {
2065     __ notify(Assembler::method_reentry);
2066   }
2067 
2068   // We're done


< prev index next >