< prev index next >

src/hotspot/share/opto/runtime.cpp

Print this page
rev 49674 : 8198285: More consistent Access API for arraycopy

*** 395,407 **** assert(oop(dims)->is_typeArray(), "not an array"); ResourceMark rm; jint len = dims->length(); assert(len > 0, "Dimensions array should contain data"); - jint *j_dims = typeArrayOop(dims)->int_at_addr(0); jint *c_dims = NEW_RESOURCE_ARRAY(jint, len); ! Copy::conjoint_jints_atomic(j_dims, c_dims, len); Handle holder(THREAD, elem_type->klass_holder()); // keep the klass alive oop obj = ArrayKlass::cast(elem_type)->multi_allocate(len, c_dims, THREAD); deoptimize_caller_frame(thread, HAS_PENDING_EXCEPTION); thread->set_vm_result(obj); --- 395,407 ---- assert(oop(dims)->is_typeArray(), "not an array"); ResourceMark rm; jint len = dims->length(); assert(len > 0, "Dimensions array should contain data"); jint *c_dims = NEW_RESOURCE_ARRAY(jint, len); ! HeapAccess<>::arraycopy<jint>(dims, typeArrayOopDesc::element_offset<jint>(0), NULL, ! NULL, 0, c_dims, len); Handle holder(THREAD, elem_type->klass_holder()); // keep the klass alive oop obj = ArrayKlass::cast(elem_type)->multi_allocate(len, c_dims, THREAD); deoptimize_caller_frame(thread, HAS_PENDING_EXCEPTION); thread->set_vm_result(obj);
< prev index next >