< prev index next >
src/cpu/aarch64/vm/c1_Runtime1_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
*** 1227,1237 ****
ExternalAddress cardtable((address) ct->byte_map_base);
f.load_argument(0, card_addr);
__ lsr(card_addr, card_addr, CardTableModRefBS::card_shift);
unsigned long offset;
! __ adrp(rscratch1, cardtable, offset);
__ add(card_addr, card_addr, rscratch1);
__ ldrb(rscratch1, Address(card_addr, offset));
__ cmpw(rscratch1, (int)G1SATBCardTableModRefBS::g1_young_card_val());
__ br(Assembler::EQ, done);
--- 1227,1237 ----
ExternalAddress cardtable((address) ct->byte_map_base);
f.load_argument(0, card_addr);
__ lsr(card_addr, card_addr, CardTableModRefBS::card_shift);
unsigned long offset;
! __ far_adrp(rscratch1, cardtable, offset);
__ add(card_addr, card_addr, rscratch1);
__ ldrb(rscratch1, Address(card_addr, offset));
__ cmpw(rscratch1, (int)G1SATBCardTableModRefBS::g1_young_card_val());
__ br(Assembler::EQ, done);
< prev index next >