< prev index next >

src/hotspot/share/oops/valueArrayKlass.cpp

Print this page

        

*** 246,261 **** swap(src, src_end); dst = dst + (length << log2_element_size()); do { src -= elem_incr; dst -= elem_incr; ! s_elem_vklass->value_store(src, dst, element_byte_size(), true, false); } while (src > src_end); } else { address src_end = src + (length << log2_element_size()); while (src < src_end) { ! s_elem_vklass->value_store(src, dst, element_byte_size(), true, false); src += elem_incr; dst += elem_incr; } } } else { --- 246,261 ---- swap(src, src_end); dst = dst + (length << log2_element_size()); do { src -= elem_incr; dst -= elem_incr; ! HeapAccess<>::value_copy(src, dst, s_elem_vklass); } while (src > src_end); } else { address src_end = src + (length << log2_element_size()); while (src < src_end) { ! HeapAccess<>::value_copy(src, dst, s_elem_vklass); src += elem_incr; dst += elem_incr; } } } else {
*** 269,281 **** // Need to allocate each new src elem payload -> dst oop objArrayHandle dh(THREAD, (objArrayOop)d); valueArrayHandle sh(THREAD, sa); int dst_end = dst_pos + length; while (dst_pos < dst_end) { ! oop o = s_elem_vklass->allocate_instance(CHECK); ! s_elem_vklass->value_store(sh->value_at_addr(src_pos, layout_helper()), ! s_elem_vklass->data_for_oop(o), true, true); dh->obj_at_put(dst_pos, o); dst_pos++; src_pos++; } } --- 269,279 ---- // Need to allocate each new src elem payload -> dst oop objArrayHandle dh(THREAD, (objArrayOop)d); valueArrayHandle sh(THREAD, sa); int dst_end = dst_pos + length; while (dst_pos < dst_end) { ! oop o = valueArrayOopDesc::value_copy_from_index(sh, src_pos, CHECK); dh->obj_at_put(dst_pos, o); dst_pos++; src_pos++; } }
*** 296,306 **** } // Check exact type per element if (se->klass() != d_elem_klass) { THROW(vmSymbols::java_lang_ArrayStoreException()); } ! d_elem_vklass->value_store(d_elem_vklass->data_for_oop(se), dst, true, false); dst += delem_incr; src_pos++; } } } --- 294,304 ---- } // Check exact type per element if (se->klass() != d_elem_klass) { THROW(vmSymbols::java_lang_ArrayStoreException()); } ! d_elem_vklass->value_copy_oop_to_payload(se, dst); dst += delem_incr; src_pos++; } } }
< prev index next >