# HG changeset patch # User martin # Date 1246311732 25200 # Node ID 1413494da700f3b350524408e633ffadefde237a # Parent 6a93908f268f90ea3268d714ff13fe88536d2bfb 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 diff -r 6a93908f268f -r 1413494da700 src/share/vm/oops/arrayKlass.cpp --- a/src/share/vm/oops/arrayKlass.cpp Fri Jul 10 11:10:00 2009 -0700 +++ b/src/share/vm/oops/arrayKlass.cpp Mon Jun 29 14:42:12 2009 -0700 @@ -140,6 +140,7 @@ THROW_0(vmSymbols::java_lang_NegativeArraySizeException()); } if (length > arrayOopDesc::max_array_length(T_ARRAY)) { + report_java_out_of_memory("Requested array size exceeds VM limit"); THROW_OOP_0(Universe::out_of_memory_error_array_size()); } int size = objArrayOopDesc::object_size(length); diff -r 6a93908f268f -r 1413494da700 src/share/vm/oops/instanceKlass.cpp --- a/src/share/vm/oops/instanceKlass.cpp Fri Jul 10 11:10:00 2009 -0700 +++ b/src/share/vm/oops/instanceKlass.cpp Mon Jun 29 14:42:12 2009 -0700 @@ -508,6 +508,7 @@ objArrayOop instanceKlass::allocate_objArray(int n, int length, TRAPS) { if (length < 0) THROW_0(vmSymbols::java_lang_NegativeArraySizeException()); if (length > arrayOopDesc::max_array_length(T_OBJECT)) { + report_java_out_of_memory("Requested array size exceeds VM limit"); THROW_OOP_0(Universe::out_of_memory_error_array_size()); } int size = objArrayOopDesc::object_size(length); diff -r 6a93908f268f -r 1413494da700 src/share/vm/oops/objArrayKlass.cpp --- a/src/share/vm/oops/objArrayKlass.cpp Fri Jul 10 11:10:00 2009 -0700 +++ b/src/share/vm/oops/objArrayKlass.cpp Mon Jun 29 14:42:12 2009 -0700 @@ -39,6 +39,7 @@ assert(a->is_parsable(), "Can't publish unless parsable"); return a; } else { + report_java_out_of_memory("Requested array size exceeds VM limit"); THROW_OOP_0(Universe::out_of_memory_error_array_size()); } } else { diff -r 6a93908f268f -r 1413494da700 src/share/vm/oops/typeArrayKlass.cpp --- a/src/share/vm/oops/typeArrayKlass.cpp Fri Jul 10 11:10:00 2009 -0700 +++ b/src/share/vm/oops/typeArrayKlass.cpp Mon Jun 29 14:42:12 2009 -0700 @@ -80,6 +80,7 @@ assert(t->is_parsable(), "Don't publish unless parsable"); return t; } else { + report_java_out_of_memory("Requested array size exceeds VM limit"); THROW_OOP_0(Universe::out_of_memory_error_array_size()); } } else {