src/hotspot/share/oops/instanceKlass.cpp
changeset 52033 d6aa9ea2405d
parent 51962 628909466216
child 52096 7a1e2d7ac55a
equal deleted inserted replaced
52032:2f7a2e7c3221 52033:d6aa9ea2405d
  1199   }
  1199   }
  1200   return false;
  1200   return false;
  1201 }
  1201 }
  1202 
  1202 
  1203 objArrayOop InstanceKlass::allocate_objArray(int n, int length, TRAPS) {
  1203 objArrayOop InstanceKlass::allocate_objArray(int n, int length, TRAPS) {
  1204   if (length < 0)  {
  1204   check_array_allocation_length(length, arrayOopDesc::max_array_length(T_OBJECT), CHECK_NULL);
  1205     THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), err_msg("%d", length));
       
  1206   }
       
  1207   if (length > arrayOopDesc::max_array_length(T_OBJECT)) {
       
  1208     report_java_out_of_memory("Requested array size exceeds VM limit");
       
  1209     JvmtiExport::post_array_size_exhausted();
       
  1210     THROW_OOP_0(Universe::out_of_memory_error_array_size());
       
  1211   }
       
  1212   int size = objArrayOopDesc::object_size(length);
  1205   int size = objArrayOopDesc::object_size(length);
  1213   Klass* ak = array_klass(n, CHECK_NULL);
  1206   Klass* ak = array_klass(n, CHECK_NULL);
  1214   objArrayOop o = (objArrayOop)Universe::heap()->array_allocate(ak, size, length,
  1207   objArrayOop o = (objArrayOop)Universe::heap()->array_allocate(ak, size, length,
  1215                                                                 /* do_zero */ true, CHECK_NULL);
  1208                                                                 /* do_zero */ true, CHECK_NULL);
  1216   return o;
  1209   return o;