src/hotspot/share/oops/objArrayKlass.cpp
changeset 52033 d6aa9ea2405d
parent 51349 343f580476d6
child 52619 5b4242996d8c
equal deleted inserted replaced
52032:2f7a2e7c3221 52033:d6aa9ea2405d
   168   assert(obj->is_objArray(), "must be object array");
   168   assert(obj->is_objArray(), "must be object array");
   169   return objArrayOop(obj)->object_size();
   169   return objArrayOop(obj)->object_size();
   170 }
   170 }
   171 
   171 
   172 objArrayOop ObjArrayKlass::allocate(int length, TRAPS) {
   172 objArrayOop ObjArrayKlass::allocate(int length, TRAPS) {
   173   if (length >= 0) {
   173   check_array_allocation_length(length, arrayOopDesc::max_array_length(T_OBJECT), CHECK_0);
   174     if (length <= arrayOopDesc::max_array_length(T_OBJECT)) {
   174   int size = objArrayOopDesc::object_size(length);
   175       int size = objArrayOopDesc::object_size(length);
   175   return (objArrayOop)Universe::heap()->array_allocate(this, size, length,
   176       return (objArrayOop)Universe::heap()->array_allocate(this, size, length,
   176                                                        /* do_zero */ true, THREAD);
   177                                                            /* do_zero */ true, THREAD);
       
   178     } else {
       
   179       report_java_out_of_memory("Requested array size exceeds VM limit");
       
   180       JvmtiExport::post_array_size_exhausted();
       
   181       THROW_OOP_0(Universe::out_of_memory_error_array_size());
       
   182     }
       
   183   } else {
       
   184     THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), err_msg("%d", length));
       
   185   }
       
   186 }
   177 }
   187 
   178 
   188 static int multi_alloc_counter = 0;
   179 static int multi_alloc_counter = 0;
   189 
   180 
   190 oop ObjArrayKlass::multi_allocate(int rank, jint* sizes, TRAPS) {
   181 oop ObjArrayKlass::multi_allocate(int rank, jint* sizes, TRAPS) {