--- old/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp 2018-05-14 16:13:11.128168518 -0400 +++ new/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp 2018-05-14 16:13:10.838190900 -0400 @@ -56,6 +56,15 @@ } 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(); } } @@ -84,6 +93,18 @@ } 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(); } }