< prev index next >

src/cpu/aarch64/vm/macroAssembler_aarch64.cpp

Print this page

        

*** 2874,2889 **** // The calculation for byte_map_base is as follows: // byte_map_base = _byte_map - (uintptr_t(low_bound) >> card_shift); // So this essentially converts an address to a displacement and // it will never need to be relocated. - - // FIXME: It's not likely that disp will fit into an offset so we - // don't bother to check, but it could save an instruction. intptr_t disp = (intptr_t) ct->byte_map_base; mov(rscratch1, disp); ! strb(zr, Address(obj, rscratch1)); } void MacroAssembler::load_klass(Register dst, Register src) { if (UseCompressedClassPointers) { ldrw(dst, Address(src, oopDesc::klass_offset_in_bytes())); --- 2874,2888 ---- // The calculation for byte_map_base is as follows: // byte_map_base = _byte_map - (uintptr_t(low_bound) >> card_shift); // So this essentially converts an address to a displacement and // it will never need to be relocated. intptr_t disp = (intptr_t) ct->byte_map_base; mov(rscratch1, disp); ! add(rscratch1, rscratch1, obj); ! mov(obj, zr); ! stlrb(obj, rscratch1); } void MacroAssembler::load_klass(Register dst, Register src) { if (UseCompressedClassPointers) { ldrw(dst, Address(src, oopDesc::klass_offset_in_bytes()));
< prev index next >