< 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 >