< prev index next >
src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp
Print this page
rev 50376 : [mq]: JDK-8203172.patch
@@ -54,10 +54,19 @@
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,10 +91,22 @@
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::try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
< prev index next >