< prev index next >
src/hotspot/share/opto/runtime.cpp
Print this page
rev 50331 : 8198285: More consistent Access API for arraycopy
rev 50332 : [mq]: JDK-8203232-2.patch
rev 50333 : [mq]: JDK-8198285-3.patch
*** 391,403 ****
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);
--- 391,403 ----
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);
! ArrayAccess<>::arraycopy_to_native<>(dims, typeArrayOopDesc::element_offset<jint>(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 >