< 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,339 **** if (use_length && needs_range_check) { length.set_instruction(x->length()); length.load_item(); } ! if (needs_store_check) { value.load_item(); } else { value.load_for_store(x->elt_type()); } --- 329,339 ---- if (use_length && needs_range_check) { length.set_instruction(x->length()); length.load_item(); } ! if (needs_store_check || x->check_boolean()) { value.load_item(); } else { value.load_for_store(x->elt_type()); }
*** 378,388 **** 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); } } void LIRGenerator::do_MonitorEnter(MonitorEnter* x) { assert(x->is_pinned(),""); --- 378,389 ---- 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 { ! 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 >