src/hotspot/share/opto/runtime.cpp
changeset 50389 7e8c0409a747
parent 50180 ffa644980dff
child 50860 480a96a43b62
equal deleted inserted replaced
50388:55fac6146d31 50389:7e8c0409a747
   391   assert(oop(dims)->is_typeArray(), "not an array");
   391   assert(oop(dims)->is_typeArray(), "not an array");
   392 
   392 
   393   ResourceMark rm;
   393   ResourceMark rm;
   394   jint len = dims->length();
   394   jint len = dims->length();
   395   assert(len > 0, "Dimensions array should contain data");
   395   assert(len > 0, "Dimensions array should contain data");
   396   jint *j_dims = typeArrayOop(dims)->int_at_addr(0);
       
   397   jint *c_dims = NEW_RESOURCE_ARRAY(jint, len);
   396   jint *c_dims = NEW_RESOURCE_ARRAY(jint, len);
   398   Copy::conjoint_jints_atomic(j_dims, c_dims, len);
   397   ArrayAccess<>::arraycopy_to_native<>(dims, typeArrayOopDesc::element_offset<jint>(0),
       
   398                                        c_dims, len);
   399 
   399 
   400   Handle holder(THREAD, elem_type->klass_holder()); // keep the klass alive
   400   Handle holder(THREAD, elem_type->klass_holder()); // keep the klass alive
   401   oop obj = ArrayKlass::cast(elem_type)->multi_allocate(len, c_dims, THREAD);
   401   oop obj = ArrayKlass::cast(elem_type)->multi_allocate(len, c_dims, THREAD);
   402   deoptimize_caller_frame(thread, HAS_PENDING_EXCEPTION);
   402   deoptimize_caller_frame(thread, HAS_PENDING_EXCEPTION);
   403   thread->set_vm_result(obj);
   403   thread->set_vm_result(obj);