8068314: "Java fields that are currently set during shared space dumping" comment is incorrect
CDS dump time should also initialize preallocated out_of_memory error messages. Reviewed-by: iklam, hseigel
This commit is contained in:
parent
52c73dd8a9
commit
92ad2630a1
@ -1064,44 +1064,40 @@ bool universe_post_init() {
|
||||
|
||||
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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user