6850957: Honor -XX:OnOutOfMemoryError when array size exceeds VM limit

Mon, 29 Jun 2009 14:42:12 -0700

author
martin
date
Mon, 29 Jun 2009 14:42:12 -0700
changeset 1311
1413494da700
parent 1310
6a93908f268f
child 1312
8c79517a9300

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

src/share/vm/oops/arrayKlass.cpp file | annotate | diff | comparison | revisions
src/share/vm/oops/instanceKlass.cpp file | annotate | diff | comparison | revisions
src/share/vm/oops/objArrayKlass.cpp file | annotate | diff | comparison | revisions
src/share/vm/oops/typeArrayKlass.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/oops/arrayKlass.cpp	Fri Jul 10 11:10:00 2009 -0700
     1.2 +++ b/src/share/vm/oops/arrayKlass.cpp	Mon Jun 29 14:42:12 2009 -0700
     1.3 @@ -140,6 +140,7 @@
     1.4      THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
     1.5    }
     1.6    if (length > arrayOopDesc::max_array_length(T_ARRAY)) {
     1.7 +    report_java_out_of_memory("Requested array size exceeds VM limit");
     1.8      THROW_OOP_0(Universe::out_of_memory_error_array_size());
     1.9    }
    1.10    int size = objArrayOopDesc::object_size(length);
     2.1 --- a/src/share/vm/oops/instanceKlass.cpp	Fri Jul 10 11:10:00 2009 -0700
     2.2 +++ b/src/share/vm/oops/instanceKlass.cpp	Mon Jun 29 14:42:12 2009 -0700
     2.3 @@ -508,6 +508,7 @@
     2.4  objArrayOop instanceKlass::allocate_objArray(int n, int length, TRAPS) {
     2.5    if (length < 0) THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
     2.6    if (length > arrayOopDesc::max_array_length(T_OBJECT)) {
     2.7 +    report_java_out_of_memory("Requested array size exceeds VM limit");
     2.8      THROW_OOP_0(Universe::out_of_memory_error_array_size());
     2.9    }
    2.10    int size = objArrayOopDesc::object_size(length);
     3.1 --- a/src/share/vm/oops/objArrayKlass.cpp	Fri Jul 10 11:10:00 2009 -0700
     3.2 +++ b/src/share/vm/oops/objArrayKlass.cpp	Mon Jun 29 14:42:12 2009 -0700
     3.3 @@ -39,6 +39,7 @@
     3.4        assert(a->is_parsable(), "Can't publish unless parsable");
     3.5        return a;
     3.6      } else {
     3.7 +      report_java_out_of_memory("Requested array size exceeds VM limit");
     3.8        THROW_OOP_0(Universe::out_of_memory_error_array_size());
     3.9      }
    3.10    } else {
     4.1 --- a/src/share/vm/oops/typeArrayKlass.cpp	Fri Jul 10 11:10:00 2009 -0700
     4.2 +++ b/src/share/vm/oops/typeArrayKlass.cpp	Mon Jun 29 14:42:12 2009 -0700
     4.3 @@ -80,6 +80,7 @@
     4.4        assert(t->is_parsable(), "Don't publish unless parsable");
     4.5        return t;
     4.6      } else {
     4.7 +      report_java_out_of_memory("Requested array size exceeds VM limit");
     4.8        THROW_OOP_0(Universe::out_of_memory_error_array_size());
     4.9      }
    4.10    } else {

mercurial