8068314: "Java fields that are currently set during shared space dumping" comment is incorrect
Summary: CDS dump time should also initialize preallocated out_of_memory error messages.
Reviewed-by: iklam, hseigel
--- a/src/hotspot/share/memory/universe.cpp Thu Sep 21 14:32:05 2017 +0200
+++ b/src/hotspot/share/memory/universe.cpp Wed Sep 27 17:55:20 2017 -0400
@@ -1064,44 +1064,40 @@
Universe::_vm_exception = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
- if (!DumpSharedSpaces) {
- // These are the only Java fields that are currently set during shared space dumping.
- // We prefer to not handle this generally, so we always reinitialize these detail messages.
- Handle msg = java_lang_String::create_from_str("Java heap space", CHECK_false);
- java_lang_Throwable::set_message(Universe::_out_of_memory_error_java_heap, msg());
+ Handle msg = java_lang_String::create_from_str("Java heap space", CHECK_false);
+ java_lang_Throwable::set_message(Universe::_out_of_memory_error_java_heap, msg());
+
+ msg = java_lang_String::create_from_str("Metaspace", CHECK_false);
+ java_lang_Throwable::set_message(Universe::_out_of_memory_error_metaspace, msg());
+ msg = java_lang_String::create_from_str("Compressed class space", CHECK_false);
+ java_lang_Throwable::set_message(Universe::_out_of_memory_error_class_metaspace, msg());
- msg = java_lang_String::create_from_str("Metaspace", CHECK_false);
- java_lang_Throwable::set_message(Universe::_out_of_memory_error_metaspace, msg());
- msg = java_lang_String::create_from_str("Compressed class space", CHECK_false);
- java_lang_Throwable::set_message(Universe::_out_of_memory_error_class_metaspace, msg());
+ msg = java_lang_String::create_from_str("Requested array size exceeds VM limit", CHECK_false);
+ java_lang_Throwable::set_message(Universe::_out_of_memory_error_array_size, msg());
- msg = java_lang_String::create_from_str("Requested array size exceeds VM limit", CHECK_false);
- java_lang_Throwable::set_message(Universe::_out_of_memory_error_array_size, msg());
+ msg = java_lang_String::create_from_str("GC overhead limit exceeded", CHECK_false);
+ java_lang_Throwable::set_message(Universe::_out_of_memory_error_gc_overhead_limit, msg());
- msg = java_lang_String::create_from_str("GC overhead limit exceeded", CHECK_false);
- java_lang_Throwable::set_message(Universe::_out_of_memory_error_gc_overhead_limit, msg());
+ msg = java_lang_String::create_from_str("Java heap space: failed reallocation of scalar replaced objects", CHECK_false);
+ java_lang_Throwable::set_message(Universe::_out_of_memory_error_realloc_objects, msg());
- msg = java_lang_String::create_from_str("Java heap space: failed reallocation of scalar replaced objects", CHECK_false);
- java_lang_Throwable::set_message(Universe::_out_of_memory_error_realloc_objects, msg());
+ msg = java_lang_String::create_from_str("/ by zero", CHECK_false);
+ java_lang_Throwable::set_message(Universe::_arithmetic_exception_instance, msg());
- msg = java_lang_String::create_from_str("/ by zero", CHECK_false);
- java_lang_Throwable::set_message(Universe::_arithmetic_exception_instance, msg());
-
- // Setup the array of errors that have preallocated backtrace
- k = Universe::_out_of_memory_error_java_heap->klass();
- assert(k->name() == vmSymbols::java_lang_OutOfMemoryError(), "should be out of memory error");
- ik = InstanceKlass::cast(k);
+ // Setup the array of errors that have preallocated backtrace
+ k = Universe::_out_of_memory_error_java_heap->klass();
+ assert(k->name() == vmSymbols::java_lang_OutOfMemoryError(), "should be out of memory error");
+ ik = InstanceKlass::cast(k);
- int len = (StackTraceInThrowable) ? (int)PreallocatedOutOfMemoryErrorCount : 0;
- Universe::_preallocated_out_of_memory_error_array = oopFactory::new_objArray(ik, len, CHECK_false);
- for (int i=0; i<len; i++) {
- oop err = ik->allocate_instance(CHECK_false);
- Handle err_h = Handle(THREAD, err);
- java_lang_Throwable::allocate_backtrace(err_h, CHECK_false);
- Universe::preallocated_out_of_memory_errors()->obj_at_put(i, err_h());
- }
- Universe::_preallocated_out_of_memory_error_avail_count = (jint)len;
+ int len = (StackTraceInThrowable) ? (int)PreallocatedOutOfMemoryErrorCount : 0;
+ Universe::_preallocated_out_of_memory_error_array = oopFactory::new_objArray(ik, len, CHECK_false);
+ for (int i=0; i<len; i++) {
+ oop err = ik->allocate_instance(CHECK_false);
+ Handle err_h = Handle(THREAD, err);
+ java_lang_Throwable::allocate_backtrace(err_h, CHECK_false);
+ Universe::preallocated_out_of_memory_errors()->obj_at_put(i, err_h());
}
+ Universe::_preallocated_out_of_memory_error_avail_count = (jint)len;
Universe::initialize_known_methods(CHECK_false);