< prev index next >

src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp

Print this page
rev 9227 : 8143067: aarch64: guarantee failure in javac
Summary: Fix adrp going out of range during code relocation
Reviewed-by: duke

*** 1750,1760 **** __ set_last_Java_frame(sp, noreg, (address)the_pc, rscratch1); Label dtrace_method_entry, dtrace_method_entry_done; { unsigned long offset; ! __ adrp(rscratch1, ExternalAddress((address)&DTraceMethodProbes), offset); __ ldrb(rscratch1, Address(rscratch1, offset)); __ cbnzw(rscratch1, dtrace_method_entry); __ bind(dtrace_method_entry_done); } --- 1750,1760 ---- __ set_last_Java_frame(sp, noreg, (address)the_pc, rscratch1); Label dtrace_method_entry, dtrace_method_entry_done; { unsigned long offset; ! __ far_adrp(rscratch1, ExternalAddress((address)&DTraceMethodProbes), offset); __ ldrb(rscratch1, Address(rscratch1, offset)); __ cbnzw(rscratch1, dtrace_method_entry); __ bind(dtrace_method_entry_done); }
*** 1927,1937 **** // check for safepoint operation in progress and/or pending suspend requests Label safepoint_in_progress, safepoint_in_progress_done; { assert(SafepointSynchronize::_not_synchronized == 0, "fix this code"); unsigned long offset; ! __ adrp(rscratch1, ExternalAddress((address)SafepointSynchronize::address_of_state()), offset); __ ldrw(rscratch1, Address(rscratch1, offset)); __ cbnzw(rscratch1, safepoint_in_progress); __ ldrw(rscratch1, Address(rthread, JavaThread::suspend_flags_offset())); --- 1927,1937 ---- // check for safepoint operation in progress and/or pending suspend requests Label safepoint_in_progress, safepoint_in_progress_done; { assert(SafepointSynchronize::_not_synchronized == 0, "fix this code"); unsigned long offset; ! __ far_adrp(rscratch1, ExternalAddress((address)SafepointSynchronize::address_of_state()), offset); __ ldrw(rscratch1, Address(rscratch1, offset)); __ cbnzw(rscratch1, safepoint_in_progress); __ ldrw(rscratch1, Address(rthread, JavaThread::suspend_flags_offset()));
*** 2000,2010 **** } Label dtrace_method_exit, dtrace_method_exit_done; { unsigned long offset; ! __ adrp(rscratch1, ExternalAddress((address)&DTraceMethodProbes), offset); __ ldrb(rscratch1, Address(rscratch1, offset)); __ cbnzw(rscratch1, dtrace_method_exit); __ bind(dtrace_method_exit_done); } --- 2000,2010 ---- } Label dtrace_method_exit, dtrace_method_exit_done; { unsigned long offset; ! __ far_adrp(rscratch1, ExternalAddress((address)&DTraceMethodProbes), offset); __ ldrb(rscratch1, Address(rscratch1, offset)); __ cbnzw(rscratch1, dtrace_method_exit); __ bind(dtrace_method_exit_done); }
< prev index next >