< prev index next >
src/hotspot/cpu/x86/stubGenerator_x86_64.cpp
Print this page
rev 54706 : 8223244: Fix usage of ARRAYCOPY_DISJOINT decorator
*** 2147,2157 ****
array_overlap_test(nooverlap_target, Address::times_8);
setup_arg_regs_using_thread(); // from => rdi, to => rsi, count => rdx
// r9 is used to save r15_thread
// 'from', 'to' and 'qword_count' are now valid
! DecoratorSet decorators = IN_HEAP | IS_ARRAY | ARRAYCOPY_DISJOINT;
if (dest_uninitialized) {
decorators |= IS_DEST_UNINITIALIZED;
}
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
--- 2147,2157 ----
array_overlap_test(nooverlap_target, Address::times_8);
setup_arg_regs_using_thread(); // from => rdi, to => rsi, count => rdx
// r9 is used to save r15_thread
// 'from', 'to' and 'qword_count' are now valid
! DecoratorSet decorators = IN_HEAP | IS_ARRAY;
if (dest_uninitialized) {
decorators |= IS_DEST_UNINITIALIZED;
}
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
*** 2341,2351 ****
Address end_to_addr(to, length, TIMES_OOP, 0);
// Loop-variant addresses. They assume post-incremented count < 0.
Address from_element_addr(end_from, count, TIMES_OOP, 0);
Address to_element_addr(end_to, count, TIMES_OOP, 0);
! DecoratorSet decorators = IN_HEAP | IS_ARRAY | ARRAYCOPY_CHECKCAST;
if (dest_uninitialized) {
decorators |= IS_DEST_UNINITIALIZED;
}
BasicType type = T_OBJECT;
--- 2341,2353 ----
Address end_to_addr(to, length, TIMES_OOP, 0);
// Loop-variant addresses. They assume post-incremented count < 0.
Address from_element_addr(end_from, count, TIMES_OOP, 0);
Address to_element_addr(end_to, count, TIMES_OOP, 0);
! // Note: checkcast arraycopy is always disjoint. If it were not, then we wouldn't
! // need to checkcast.
! DecoratorSet decorators = IN_HEAP | IS_ARRAY | ARRAYCOPY_CHECKCAST | ARRAYCOPY_DISJOINT;
if (dest_uninitialized) {
decorators |= IS_DEST_UNINITIALIZED;
}
BasicType type = T_OBJECT;
< prev index next >