< prev index next >

src/share/vm/utilities/copy.cpp

Print this page

        

*** 69,79 **** static void conjoint_swap_if_needed(const void* src, void* dst, size_t byte_count, size_t elem_size) { assert(src != NULL, "address must not be NULL"); assert(dst != NULL, "address must not be NULL"); assert(elem_size == 2 || elem_size == 4 || elem_size == 8, "incorrect element size: " SIZE_FORMAT, elem_size); ! assert(is_size_aligned(byte_count, elem_size), "byte_count " SIZE_FORMAT " must be multiple of element size " SIZE_FORMAT, byte_count, elem_size); address src_end = (address)src + byte_count; if (dst <= src || dst >= src_end) { --- 69,79 ---- static void conjoint_swap_if_needed(const void* src, void* dst, size_t byte_count, size_t elem_size) { assert(src != NULL, "address must not be NULL"); assert(dst != NULL, "address must not be NULL"); assert(elem_size == 2 || elem_size == 4 || elem_size == 8, "incorrect element size: " SIZE_FORMAT, elem_size); ! assert(is_aligned(byte_count, elem_size), "byte_count " SIZE_FORMAT " must be multiple of element size " SIZE_FORMAT, byte_count, elem_size); address src_end = (address)src + byte_count; if (dst <= src || dst >= src_end) {
*** 187,204 **** * @param dst address of destination * @param byte_count number of bytes to copy */ template <typename T, CopyDirection direction, bool swap> static void do_conjoint_swap(const void* src, void* dst, size_t byte_count) { ! if (is_ptr_aligned(src, sizeof(T))) { ! if (is_ptr_aligned(dst, sizeof(T))) { do_conjoint_swap<T,direction,swap,true,true>(src, dst, byte_count); } else { do_conjoint_swap<T,direction,swap,true,false>(src, dst, byte_count); } } else { ! if (is_ptr_aligned(dst, sizeof(T))) { do_conjoint_swap<T,direction,swap,false,true>(src, dst, byte_count); } else { do_conjoint_swap<T,direction,swap,false,false>(src, dst, byte_count); } } --- 187,204 ---- * @param dst address of destination * @param byte_count number of bytes to copy */ template <typename T, CopyDirection direction, bool swap> static void do_conjoint_swap(const void* src, void* dst, size_t byte_count) { ! if (is_aligned(src, sizeof(T))) { ! if (is_aligned(dst, sizeof(T))) { do_conjoint_swap<T,direction,swap,true,true>(src, dst, byte_count); } else { do_conjoint_swap<T,direction,swap,true,false>(src, dst, byte_count); } } else { ! if (is_aligned(dst, sizeof(T))) { do_conjoint_swap<T,direction,swap,false,true>(src, dst, byte_count); } else { do_conjoint_swap<T,direction,swap,false,false>(src, dst, byte_count); } }
< prev index next >