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) { |