< prev index next >

src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp

Print this page
rev 13551 : imported patch gcinterface-aarch64-5.patch

*** 2053,2085 **** __ reset_last_Java_frame(false); // Unbox oop result, e.g. JNIHandles::resolve result. if (ret_type == T_OBJECT || ret_type == T_ARRAY) { ! Label done, not_weak; ! __ cbz(r0, done); // Use NULL as-is. ! STATIC_ASSERT(JNIHandles::weak_tag_mask == 1u); ! __ tbz(r0, 0, not_weak); // Test for jweak tag. ! // Resolve jweak. ! __ ldr(r0, Address(r0, -JNIHandles::weak_tag_value)); ! __ verify_oop(r0); ! #if INCLUDE_ALL_GCS ! if (UseG1GC) { ! __ g1_write_barrier_pre(noreg /* obj */, ! r0 /* pre_val */, ! rthread /* thread */, ! rscratch2 /* tmp */, ! true /* tosca_live */, ! true /* expand_call */); ! } ! #endif // INCLUDE_ALL_GCS ! __ b(done); ! __ bind(not_weak); ! // Resolve (untagged) jobject. ! __ ldr(r0, Address(r0, 0)); ! __ verify_oop(r0); ! __ bind(done); } if (CheckJNICalls) { // clear_pending_jni_exception_check __ str(zr, Address(rthread, JavaThread::pending_jni_exception_check_fn_offset())); --- 2053,2063 ---- __ reset_last_Java_frame(false); // Unbox oop result, e.g. JNIHandles::resolve result. if (ret_type == T_OBJECT || ret_type == T_ARRAY) { ! __ resolve_jobject(r0, rthread, rscratch2); } if (CheckJNICalls) { // clear_pending_jni_exception_check __ str(zr, Address(rthread, JavaThread::pending_jni_exception_check_fn_offset()));
< prev index next >