comparison src/share/vm/memory/universe.cpp @ 20705:d3f3f7677537

6898462: The escape analysis with G1 cause crash assertion src/share/vm/runtime/vframeArray.cpp:94 Summary: OOM during reallocation of scalar replaced objects in deoptimization causes crashes Reviewed-by: kvn, jrose
author roland
date Tue, 25 Nov 2014 17:33:59 +0100
parents b840813adfcc
children 7848fc12602b
comparison
equal deleted inserted replaced
20704:8c08b28b7eee 20705:d3f3f7677537
117 oop Universe::_out_of_memory_error_java_heap = NULL; 117 oop Universe::_out_of_memory_error_java_heap = NULL;
118 oop Universe::_out_of_memory_error_metaspace = NULL; 118 oop Universe::_out_of_memory_error_metaspace = NULL;
119 oop Universe::_out_of_memory_error_class_metaspace = NULL; 119 oop Universe::_out_of_memory_error_class_metaspace = NULL;
120 oop Universe::_out_of_memory_error_array_size = NULL; 120 oop Universe::_out_of_memory_error_array_size = NULL;
121 oop Universe::_out_of_memory_error_gc_overhead_limit = NULL; 121 oop Universe::_out_of_memory_error_gc_overhead_limit = NULL;
122 oop Universe::_out_of_memory_error_realloc_objects = NULL;
122 objArrayOop Universe::_preallocated_out_of_memory_error_array = NULL; 123 objArrayOop Universe::_preallocated_out_of_memory_error_array = NULL;
123 volatile jint Universe::_preallocated_out_of_memory_error_avail_count = 0; 124 volatile jint Universe::_preallocated_out_of_memory_error_avail_count = 0;
124 bool Universe::_verify_in_progress = false; 125 bool Universe::_verify_in_progress = false;
125 oop Universe::_null_ptr_exception_instance = NULL; 126 oop Universe::_null_ptr_exception_instance = NULL;
126 oop Universe::_arithmetic_exception_instance = NULL; 127 oop Universe::_arithmetic_exception_instance = NULL;
188 f->do_oop((oop*)&_out_of_memory_error_java_heap); 189 f->do_oop((oop*)&_out_of_memory_error_java_heap);
189 f->do_oop((oop*)&_out_of_memory_error_metaspace); 190 f->do_oop((oop*)&_out_of_memory_error_metaspace);
190 f->do_oop((oop*)&_out_of_memory_error_class_metaspace); 191 f->do_oop((oop*)&_out_of_memory_error_class_metaspace);
191 f->do_oop((oop*)&_out_of_memory_error_array_size); 192 f->do_oop((oop*)&_out_of_memory_error_array_size);
192 f->do_oop((oop*)&_out_of_memory_error_gc_overhead_limit); 193 f->do_oop((oop*)&_out_of_memory_error_gc_overhead_limit);
194 f->do_oop((oop*)&_out_of_memory_error_realloc_objects);
193 f->do_oop((oop*)&_preallocated_out_of_memory_error_array); 195 f->do_oop((oop*)&_preallocated_out_of_memory_error_array);
194 f->do_oop((oop*)&_null_ptr_exception_instance); 196 f->do_oop((oop*)&_null_ptr_exception_instance);
195 f->do_oop((oop*)&_arithmetic_exception_instance); 197 f->do_oop((oop*)&_arithmetic_exception_instance);
196 f->do_oop((oop*)&_virtual_machine_error_instance); 198 f->do_oop((oop*)&_virtual_machine_error_instance);
197 f->do_oop((oop*)&_main_thread_group); 199 f->do_oop((oop*)&_main_thread_group);
572 // to allocate the backtrace. 574 // to allocate the backtrace.
573 return ((throwable() != Universe::_out_of_memory_error_java_heap) && 575 return ((throwable() != Universe::_out_of_memory_error_java_heap) &&
574 (throwable() != Universe::_out_of_memory_error_metaspace) && 576 (throwable() != Universe::_out_of_memory_error_metaspace) &&
575 (throwable() != Universe::_out_of_memory_error_class_metaspace) && 577 (throwable() != Universe::_out_of_memory_error_class_metaspace) &&
576 (throwable() != Universe::_out_of_memory_error_array_size) && 578 (throwable() != Universe::_out_of_memory_error_array_size) &&
577 (throwable() != Universe::_out_of_memory_error_gc_overhead_limit)); 579 (throwable() != Universe::_out_of_memory_error_gc_overhead_limit) &&
580 (throwable() != Universe::_out_of_memory_error_realloc_objects));
578 } 581 }
579 582
580 583
581 oop Universe::gen_out_of_memory_error(oop default_err) { 584 oop Universe::gen_out_of_memory_error(oop default_err) {
582 // generate an out of memory error: 585 // generate an out of memory error:
1042 Universe::_out_of_memory_error_metaspace = k_h->allocate_instance(CHECK_false); 1045 Universe::_out_of_memory_error_metaspace = k_h->allocate_instance(CHECK_false);
1043 Universe::_out_of_memory_error_class_metaspace = k_h->allocate_instance(CHECK_false); 1046 Universe::_out_of_memory_error_class_metaspace = k_h->allocate_instance(CHECK_false);
1044 Universe::_out_of_memory_error_array_size = k_h->allocate_instance(CHECK_false); 1047 Universe::_out_of_memory_error_array_size = k_h->allocate_instance(CHECK_false);
1045 Universe::_out_of_memory_error_gc_overhead_limit = 1048 Universe::_out_of_memory_error_gc_overhead_limit =
1046 k_h->allocate_instance(CHECK_false); 1049 k_h->allocate_instance(CHECK_false);
1050 Universe::_out_of_memory_error_realloc_objects = k_h->allocate_instance(CHECK_false);
1047 1051
1048 // Setup preallocated NullPointerException 1052 // Setup preallocated NullPointerException
1049 // (this is currently used for a cheap & dirty solution in compiler exception handling) 1053 // (this is currently used for a cheap & dirty solution in compiler exception handling)
1050 k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_NullPointerException(), true, CHECK_false); 1054 k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_NullPointerException(), true, CHECK_false);
1051 Universe::_null_ptr_exception_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false); 1055 Universe::_null_ptr_exception_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
1081 java_lang_Throwable::set_message(Universe::_out_of_memory_error_array_size, msg()); 1085 java_lang_Throwable::set_message(Universe::_out_of_memory_error_array_size, msg());
1082 1086
1083 msg = java_lang_String::create_from_str("GC overhead limit exceeded", CHECK_false); 1087 msg = java_lang_String::create_from_str("GC overhead limit exceeded", CHECK_false);
1084 java_lang_Throwable::set_message(Universe::_out_of_memory_error_gc_overhead_limit, msg()); 1088 java_lang_Throwable::set_message(Universe::_out_of_memory_error_gc_overhead_limit, msg());
1085 1089
1090 msg = java_lang_String::create_from_str("Java heap space: failed reallocation of scalar replaced objects", CHECK_false);
1091 java_lang_Throwable::set_message(Universe::_out_of_memory_error_realloc_objects, msg());
1092
1086 msg = java_lang_String::create_from_str("/ by zero", CHECK_false); 1093 msg = java_lang_String::create_from_str("/ by zero", CHECK_false);
1087 java_lang_Throwable::set_message(Universe::_arithmetic_exception_instance, msg()); 1094 java_lang_Throwable::set_message(Universe::_arithmetic_exception_instance, msg());
1088 1095
1089 // Setup the array of errors that have preallocated backtrace 1096 // Setup the array of errors that have preallocated backtrace
1090 k = Universe::_out_of_memory_error_java_heap->klass(); 1097 k = Universe::_out_of_memory_error_java_heap->klass();