< 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 >