Mercurial > hg > truffle
diff src/share/vm/classfile/javaClasses.cpp @ 10155:f258c5828eb8
8011773: Some tests on Interned String crashed JVM with OOM
Summary: Instead of terminating the VM, throw OutOfMemoryError exceptions.
Reviewed-by: coleenp, dholmes
author | hseigel |
---|---|
date | Mon, 29 Apr 2013 16:13:57 -0400 |
parents | 6337ca4dcad8 |
children | 6bd680e9ea35 7ee0d5c53c78 |
line wrap: on
line diff
--- a/src/share/vm/classfile/javaClasses.cpp Fri Apr 26 08:40:24 2013 -0700 +++ b/src/share/vm/classfile/javaClasses.cpp Mon Apr 29 16:13:57 2013 -0400 @@ -315,14 +315,18 @@ return string; } -jchar* java_lang_String::as_unicode_string(oop java_string, int& length) { +jchar* java_lang_String::as_unicode_string(oop java_string, int& length, TRAPS) { typeArrayOop value = java_lang_String::value(java_string); int offset = java_lang_String::offset(java_string); length = java_lang_String::length(java_string); - jchar* result = NEW_RESOURCE_ARRAY(jchar, length); - for (int index = 0; index < length; index++) { - result[index] = value->char_at(index + offset); + jchar* result = NEW_RESOURCE_ARRAY_RETURN_NULL(jchar, length); + if (result != NULL) { + for (int index = 0; index < length; index++) { + result[index] = value->char_at(index + offset); + } + } else { + THROW_MSG_0(vmSymbols::java_lang_OutOfMemoryError(), "could not allocate Unicode string"); } return result; }