1 /* |
1 /* |
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
187 objArrayOop ObjArrayKlass::allocate(int length, TRAPS) { |
187 objArrayOop ObjArrayKlass::allocate(int length, TRAPS) { |
188 if (length >= 0) { |
188 if (length >= 0) { |
189 if (length <= arrayOopDesc::max_array_length(T_OBJECT)) { |
189 if (length <= arrayOopDesc::max_array_length(T_OBJECT)) { |
190 int size = objArrayOopDesc::object_size(length); |
190 int size = objArrayOopDesc::object_size(length); |
191 KlassHandle h_k(THREAD, this); |
191 KlassHandle h_k(THREAD, this); |
192 return (objArrayOop)CollectedHeap::array_allocate(h_k, size, length, CHECK_NULL); |
192 return (objArrayOop)CollectedHeap::array_allocate(h_k, size, length, THREAD); |
193 } else { |
193 } else { |
194 report_java_out_of_memory("Requested array size exceeds VM limit"); |
194 report_java_out_of_memory("Requested array size exceeds VM limit"); |
195 JvmtiExport::post_array_size_exhausted(); |
195 JvmtiExport::post_array_size_exhausted(); |
196 THROW_OOP_0(Universe::out_of_memory_error_array_size()); |
196 THROW_OOP_0(Universe::out_of_memory_error_array_size()); |
197 } |
197 } |
360 |
360 |
361 ObjArrayKlass *ak = ObjArrayKlass::cast(higher_dimension()); |
361 ObjArrayKlass *ak = ObjArrayKlass::cast(higher_dimension()); |
362 if (or_null) { |
362 if (or_null) { |
363 return ak->array_klass_or_null(n); |
363 return ak->array_klass_or_null(n); |
364 } |
364 } |
365 return ak->array_klass(n, CHECK_NULL); |
365 return ak->array_klass(n, THREAD); |
366 } |
366 } |
367 |
367 |
368 Klass* ObjArrayKlass::array_klass_impl(bool or_null, TRAPS) { |
368 Klass* ObjArrayKlass::array_klass_impl(bool or_null, TRAPS) { |
369 return array_klass_impl(or_null, dimension() + 1, CHECK_NULL); |
369 return array_klass_impl(or_null, dimension() + 1, THREAD); |
370 } |
370 } |
371 |
371 |
372 bool ObjArrayKlass::can_be_primary_super_slow() const { |
372 bool ObjArrayKlass::can_be_primary_super_slow() const { |
373 if (!bottom_klass()->can_be_primary_super()) |
373 if (!bottom_klass()->can_be_primary_super()) |
374 // array of interfaces |
374 // array of interfaces |