comparison src/share/vm/oops/arrayKlass.cpp @ 876:1413494da700

6850957: Honor -XX:OnOutOfMemoryError when array size exceeds VM limit Summary: call report_java_out_of_memory("Requested array size exceeds VM limit") Reviewed-by: tbell, dholmes, alanb, ysr Contributed-by: jeremymanson@google.com
author martin
date Mon, 29 Jun 2009 14:42:12 -0700
parents a61af66fc99e
children 89e0543e1737
comparison
equal deleted inserted replaced
875:6a93908f268f 876:1413494da700
138 objArrayOop arrayKlass::allocate_arrayArray(int n, int length, TRAPS) { 138 objArrayOop arrayKlass::allocate_arrayArray(int n, int length, TRAPS) {
139 if (length < 0) { 139 if (length < 0) {
140 THROW_0(vmSymbols::java_lang_NegativeArraySizeException()); 140 THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
141 } 141 }
142 if (length > arrayOopDesc::max_array_length(T_ARRAY)) { 142 if (length > arrayOopDesc::max_array_length(T_ARRAY)) {
143 report_java_out_of_memory("Requested array size exceeds VM limit");
143 THROW_OOP_0(Universe::out_of_memory_error_array_size()); 144 THROW_OOP_0(Universe::out_of_memory_error_array_size());
144 } 145 }
145 int size = objArrayOopDesc::object_size(length); 146 int size = objArrayOopDesc::object_size(length);
146 klassOop k = array_klass(n+dimension(), CHECK_0); 147 klassOop k = array_klass(n+dimension(), CHECK_0);
147 arrayKlassHandle ak (THREAD, k); 148 arrayKlassHandle ak (THREAD, k);