< prev index next >
src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp
Print this page
rev 10997 : 8154957: AArch64: Better byte behavior
Summary: The fix for 8132051 is needed for AArch64.
Reviewed-by: roland
@@ -329,11 +329,11 @@
if (use_length && needs_range_check) {
length.set_instruction(x->length());
length.load_item();
}
- if (needs_store_check) {
+ if (needs_store_check || x->check_boolean()) {
value.load_item();
} else {
value.load_for_store(x->elt_type());
}
@@ -378,11 +378,12 @@
true /* do_load */, false /* patch */, NULL);
__ move(value.result(), array_addr, null_check_info);
// Seems to be a precise
post_barrier(LIR_OprFact::address(array_addr), value.result());
} else {
- __ move(value.result(), array_addr, null_check_info);
+ LIR_Opr result = maybe_mask_boolean(x, array.result(), value.result(), null_check_info);
+ __ move(result, array_addr, null_check_info);
}
}
void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
assert(x->is_pinned(),"");
< prev index next >