< prev index next >

src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp

Print this page
rev 50098 : 8202714: Create a MacroAssembler::access_load/store_at wrapper for AArch64
rev 50099 : imported patch JDK-8203157.patch
rev 50100 : 8203172: Primitive heap access for interpreter BarrierSetAssembler/aarch64

*** 54,63 **** --- 54,72 ---- assert(on_root, "why else?"); __ ldr(dst, src); } break; } + case T_BOOLEAN: __ load_unsigned_byte (dst, src); break; + case T_BYTE: __ load_signed_byte (dst, src); break; + case T_CHAR: __ load_unsigned_short(dst, src); break; + case T_SHORT: __ load_signed_short (dst, src); break; + case T_INT: __ ldrw (dst, src); break; + case T_LONG: __ ldr (dst, src); break; + case T_ADDRESS: __ ldr (dst, src); break; + case T_FLOAT: __ ldrs (v0, src); break; + case T_DOUBLE: __ ldrd (v0, src); break; default: Unimplemented(); } } void BarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
*** 82,91 **** --- 91,112 ---- assert(on_root, "why else?"); __ str(val, dst); } break; } + case T_BOOLEAN: + __ andw(val, val, 0x1); // boolean is true if LSB is 1 + __ strb(val, dst); + break; + case T_BYTE: __ strb(val, dst); break; + case T_CHAR: __ strh(val, dst); break; + case T_SHORT: __ strh(val, dst); break; + case T_INT: __ strw(val, dst); break; + case T_LONG: __ str (val, dst); break; + case T_ADDRESS: __ str (val, dst); break; + case T_FLOAT: __ strs(v0, dst); break; + case T_DOUBLE: __ strd(v0, dst); break; default: Unimplemented(); } } void BarrierSetAssembler::obj_equals(MacroAssembler* masm, DecoratorSet decorators,
< prev index next >