src/share/vm/memory/universe.cpp

Print this page




 104 oop Universe::_long_mirror                            = NULL;
 105 oop Universe::_short_mirror                           = NULL;
 106 oop Universe::_void_mirror                            = NULL;
 107 oop Universe::_mirrors[T_VOID+1]                      = { NULL /*, NULL...*/ };
 108 oop Universe::_main_thread_group                      = NULL;
 109 oop Universe::_system_thread_group                    = NULL;
 110 objArrayOop Universe::_the_empty_class_klass_array    = NULL;
 111 Array<Klass*>* Universe::_the_array_interfaces_array = NULL;
 112 oop Universe::_the_null_string                        = NULL;
 113 oop Universe::_the_min_jint_string                   = NULL;
 114 LatestMethodCache* Universe::_finalizer_register_cache = NULL;
 115 LatestMethodCache* Universe::_loader_addClass_cache    = NULL;
 116 LatestMethodCache* Universe::_pd_implies_cache         = NULL;
 117 LatestMethodCache* Universe::_throw_illegal_access_error_cache = NULL;
 118 oop Universe::_out_of_memory_error_java_heap          = NULL;
 119 oop Universe::_out_of_memory_error_metaspace          = NULL;
 120 oop Universe::_out_of_memory_error_class_metaspace    = NULL;
 121 oop Universe::_out_of_memory_error_array_size         = NULL;
 122 oop Universe::_out_of_memory_error_gc_overhead_limit  = NULL;
 123 oop Universe::_out_of_memory_error_realloc_objects    = NULL;

 124 objArrayOop Universe::_preallocated_out_of_memory_error_array = NULL;
 125 volatile jint Universe::_preallocated_out_of_memory_error_avail_count = 0;
 126 bool Universe::_verify_in_progress                    = false;
 127 oop Universe::_null_ptr_exception_instance            = NULL;
 128 oop Universe::_arithmetic_exception_instance          = NULL;
 129 oop Universe::_virtual_machine_error_instance         = NULL;
 130 oop Universe::_vm_exception                           = NULL;
 131 oop Universe::_allocation_context_notification_obj    = NULL;
 132 
 133 Array<int>* Universe::_the_empty_int_array            = NULL;
 134 Array<u2>* Universe::_the_empty_short_array           = NULL;
 135 Array<Klass*>* Universe::_the_empty_klass_array     = NULL;
 136 Array<Method*>* Universe::_the_empty_method_array   = NULL;
 137 
 138 // These variables are guarded by FullGCALot_lock.
 139 debug_only(objArrayOop Universe::_fullgc_alot_dummy_array = NULL;)
 140 debug_only(int Universe::_fullgc_alot_dummy_next      = 0;)
 141 
 142 // Heap
 143 int             Universe::_verify_count = 0;


 179   f->do_oop((oop*) &_bool_mirror);
 180   f->do_oop((oop*) &_char_mirror);
 181   f->do_oop((oop*) &_long_mirror);
 182   f->do_oop((oop*) &_short_mirror);
 183   f->do_oop((oop*) &_void_mirror);
 184 
 185   for (int i = T_BOOLEAN; i < T_VOID+1; i++) {
 186     f->do_oop((oop*) &_mirrors[i]);
 187   }
 188   assert(_mirrors[0] == NULL && _mirrors[T_BOOLEAN - 1] == NULL, "checking");
 189 
 190   f->do_oop((oop*)&_the_empty_class_klass_array);
 191   f->do_oop((oop*)&_the_null_string);
 192   f->do_oop((oop*)&_the_min_jint_string);
 193   f->do_oop((oop*)&_out_of_memory_error_java_heap);
 194   f->do_oop((oop*)&_out_of_memory_error_metaspace);
 195   f->do_oop((oop*)&_out_of_memory_error_class_metaspace);
 196   f->do_oop((oop*)&_out_of_memory_error_array_size);
 197   f->do_oop((oop*)&_out_of_memory_error_gc_overhead_limit);
 198   f->do_oop((oop*)&_out_of_memory_error_realloc_objects);

 199     f->do_oop((oop*)&_preallocated_out_of_memory_error_array);
 200   f->do_oop((oop*)&_null_ptr_exception_instance);
 201   f->do_oop((oop*)&_arithmetic_exception_instance);
 202   f->do_oop((oop*)&_virtual_machine_error_instance);
 203   f->do_oop((oop*)&_main_thread_group);
 204   f->do_oop((oop*)&_system_thread_group);
 205   f->do_oop((oop*)&_vm_exception);
 206   f->do_oop((oop*)&_allocation_context_notification_obj);
 207   debug_only(f->do_oop((oop*)&_fullgc_alot_dummy_array);)
 208 }
 209 
 210 // Serialize metadata in and out of CDS archive, not oops.
 211 void Universe::serialize(SerializeClosure* f, bool do_all) {
 212 
 213   f->do_ptr((void**)&_boolArrayKlassObj);
 214   f->do_ptr((void**)&_byteArrayKlassObj);
 215   f->do_ptr((void**)&_charArrayKlassObj);
 216   f->do_ptr((void**)&_intArrayKlassObj);
 217   f->do_ptr((void**)&_shortArrayKlassObj);
 218   f->do_ptr((void**)&_longArrayKlassObj);


 917     }
 918   }
 919 
 920   HandleMark hm(THREAD);
 921   Klass* k;
 922   instanceKlassHandle k_h;
 923     // Setup preallocated empty java.lang.Class array
 924     Universe::_the_empty_class_klass_array = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_false);
 925 
 926     // Setup preallocated OutOfMemoryError errors
 927     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_OutOfMemoryError(), true, CHECK_false);
 928     k_h = instanceKlassHandle(THREAD, k);
 929     Universe::_out_of_memory_error_java_heap = k_h->allocate_instance(CHECK_false);
 930     Universe::_out_of_memory_error_metaspace = k_h->allocate_instance(CHECK_false);
 931     Universe::_out_of_memory_error_class_metaspace = k_h->allocate_instance(CHECK_false);
 932     Universe::_out_of_memory_error_array_size = k_h->allocate_instance(CHECK_false);
 933     Universe::_out_of_memory_error_gc_overhead_limit =
 934       k_h->allocate_instance(CHECK_false);
 935     Universe::_out_of_memory_error_realloc_objects = k_h->allocate_instance(CHECK_false);
 936 






 937     // Setup preallocated NullPointerException
 938     // (this is currently used for a cheap & dirty solution in compiler exception handling)
 939     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_NullPointerException(), true, CHECK_false);
 940     Universe::_null_ptr_exception_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
 941     // Setup preallocated ArithmeticException
 942     // (this is currently used for a cheap & dirty solution in compiler exception handling)
 943     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ArithmeticException(), true, CHECK_false);
 944     Universe::_arithmetic_exception_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
 945     // Virtual Machine Error for when we get into a situation we can't resolve
 946     k = SystemDictionary::resolve_or_fail(
 947       vmSymbols::java_lang_VirtualMachineError(), true, CHECK_false);
 948     bool linked = InstanceKlass::cast(k)->link_class_or_fail(CHECK_false);
 949     if (!linked) {
 950       tty->print_cr("Unable to link/verify VirtualMachineError class");
 951       return false; // initialization failed
 952     }
 953     Universe::_virtual_machine_error_instance =
 954       InstanceKlass::cast(k)->allocate_instance(CHECK_false);
 955 
 956     Universe::_vm_exception = InstanceKlass::cast(k)->allocate_instance(CHECK_false);




 104 oop Universe::_long_mirror                            = NULL;
 105 oop Universe::_short_mirror                           = NULL;
 106 oop Universe::_void_mirror                            = NULL;
 107 oop Universe::_mirrors[T_VOID+1]                      = { NULL /*, NULL...*/ };
 108 oop Universe::_main_thread_group                      = NULL;
 109 oop Universe::_system_thread_group                    = NULL;
 110 objArrayOop Universe::_the_empty_class_klass_array    = NULL;
 111 Array<Klass*>* Universe::_the_array_interfaces_array = NULL;
 112 oop Universe::_the_null_string                        = NULL;
 113 oop Universe::_the_min_jint_string                   = NULL;
 114 LatestMethodCache* Universe::_finalizer_register_cache = NULL;
 115 LatestMethodCache* Universe::_loader_addClass_cache    = NULL;
 116 LatestMethodCache* Universe::_pd_implies_cache         = NULL;
 117 LatestMethodCache* Universe::_throw_illegal_access_error_cache = NULL;
 118 oop Universe::_out_of_memory_error_java_heap          = NULL;
 119 oop Universe::_out_of_memory_error_metaspace          = NULL;
 120 oop Universe::_out_of_memory_error_class_metaspace    = NULL;
 121 oop Universe::_out_of_memory_error_array_size         = NULL;
 122 oop Universe::_out_of_memory_error_gc_overhead_limit  = NULL;
 123 oop Universe::_out_of_memory_error_realloc_objects    = NULL;
 124 oop Universe::_delayed_stack_overflow_error_message   = NULL;
 125 objArrayOop Universe::_preallocated_out_of_memory_error_array = NULL;
 126 volatile jint Universe::_preallocated_out_of_memory_error_avail_count = 0;
 127 bool Universe::_verify_in_progress                    = false;
 128 oop Universe::_null_ptr_exception_instance            = NULL;
 129 oop Universe::_arithmetic_exception_instance          = NULL;
 130 oop Universe::_virtual_machine_error_instance         = NULL;
 131 oop Universe::_vm_exception                           = NULL;
 132 oop Universe::_allocation_context_notification_obj    = NULL;
 133 
 134 Array<int>* Universe::_the_empty_int_array            = NULL;
 135 Array<u2>* Universe::_the_empty_short_array           = NULL;
 136 Array<Klass*>* Universe::_the_empty_klass_array     = NULL;
 137 Array<Method*>* Universe::_the_empty_method_array   = NULL;
 138 
 139 // These variables are guarded by FullGCALot_lock.
 140 debug_only(objArrayOop Universe::_fullgc_alot_dummy_array = NULL;)
 141 debug_only(int Universe::_fullgc_alot_dummy_next      = 0;)
 142 
 143 // Heap
 144 int             Universe::_verify_count = 0;


 180   f->do_oop((oop*) &_bool_mirror);
 181   f->do_oop((oop*) &_char_mirror);
 182   f->do_oop((oop*) &_long_mirror);
 183   f->do_oop((oop*) &_short_mirror);
 184   f->do_oop((oop*) &_void_mirror);
 185 
 186   for (int i = T_BOOLEAN; i < T_VOID+1; i++) {
 187     f->do_oop((oop*) &_mirrors[i]);
 188   }
 189   assert(_mirrors[0] == NULL && _mirrors[T_BOOLEAN - 1] == NULL, "checking");
 190 
 191   f->do_oop((oop*)&_the_empty_class_klass_array);
 192   f->do_oop((oop*)&_the_null_string);
 193   f->do_oop((oop*)&_the_min_jint_string);
 194   f->do_oop((oop*)&_out_of_memory_error_java_heap);
 195   f->do_oop((oop*)&_out_of_memory_error_metaspace);
 196   f->do_oop((oop*)&_out_of_memory_error_class_metaspace);
 197   f->do_oop((oop*)&_out_of_memory_error_array_size);
 198   f->do_oop((oop*)&_out_of_memory_error_gc_overhead_limit);
 199   f->do_oop((oop*)&_out_of_memory_error_realloc_objects);
 200   f->do_oop((oop*)&_delayed_stack_overflow_error_message);
 201   f->do_oop((oop*)&_preallocated_out_of_memory_error_array);
 202   f->do_oop((oop*)&_null_ptr_exception_instance);
 203   f->do_oop((oop*)&_arithmetic_exception_instance);
 204   f->do_oop((oop*)&_virtual_machine_error_instance);
 205   f->do_oop((oop*)&_main_thread_group);
 206   f->do_oop((oop*)&_system_thread_group);
 207   f->do_oop((oop*)&_vm_exception);
 208   f->do_oop((oop*)&_allocation_context_notification_obj);
 209   debug_only(f->do_oop((oop*)&_fullgc_alot_dummy_array);)
 210 }
 211 
 212 // Serialize metadata in and out of CDS archive, not oops.
 213 void Universe::serialize(SerializeClosure* f, bool do_all) {
 214 
 215   f->do_ptr((void**)&_boolArrayKlassObj);
 216   f->do_ptr((void**)&_byteArrayKlassObj);
 217   f->do_ptr((void**)&_charArrayKlassObj);
 218   f->do_ptr((void**)&_intArrayKlassObj);
 219   f->do_ptr((void**)&_shortArrayKlassObj);
 220   f->do_ptr((void**)&_longArrayKlassObj);


 919     }
 920   }
 921 
 922   HandleMark hm(THREAD);
 923   Klass* k;
 924   instanceKlassHandle k_h;
 925     // Setup preallocated empty java.lang.Class array
 926     Universe::_the_empty_class_klass_array = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_false);
 927 
 928     // Setup preallocated OutOfMemoryError errors
 929     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_OutOfMemoryError(), true, CHECK_false);
 930     k_h = instanceKlassHandle(THREAD, k);
 931     Universe::_out_of_memory_error_java_heap = k_h->allocate_instance(CHECK_false);
 932     Universe::_out_of_memory_error_metaspace = k_h->allocate_instance(CHECK_false);
 933     Universe::_out_of_memory_error_class_metaspace = k_h->allocate_instance(CHECK_false);
 934     Universe::_out_of_memory_error_array_size = k_h->allocate_instance(CHECK_false);
 935     Universe::_out_of_memory_error_gc_overhead_limit =
 936       k_h->allocate_instance(CHECK_false);
 937     Universe::_out_of_memory_error_realloc_objects = k_h->allocate_instance(CHECK_false);
 938 
 939     // Setup preallocated cause message for delayed StackOverflowError
 940     if (StackReservedPages > 0) {
 941       Universe::_delayed_stack_overflow_error_message =
 942         java_lang_String::create_oop_from_str("Delayed StackOverflowError due to ReservedStackAccess annotated method", CHECK_false);
 943     }
 944 
 945     // Setup preallocated NullPointerException
 946     // (this is currently used for a cheap & dirty solution in compiler exception handling)
 947     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_NullPointerException(), true, CHECK_false);
 948     Universe::_null_ptr_exception_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
 949     // Setup preallocated ArithmeticException
 950     // (this is currently used for a cheap & dirty solution in compiler exception handling)
 951     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ArithmeticException(), true, CHECK_false);
 952     Universe::_arithmetic_exception_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
 953     // Virtual Machine Error for when we get into a situation we can't resolve
 954     k = SystemDictionary::resolve_or_fail(
 955       vmSymbols::java_lang_VirtualMachineError(), true, CHECK_false);
 956     bool linked = InstanceKlass::cast(k)->link_class_or_fail(CHECK_false);
 957     if (!linked) {
 958       tty->print_cr("Unable to link/verify VirtualMachineError class");
 959       return false; // initialization failed
 960     }
 961     Universe::_virtual_machine_error_instance =
 962       InstanceKlass::cast(k)->allocate_instance(CHECK_false);
 963 
 964     Universe::_vm_exception = InstanceKlass::cast(k)->allocate_instance(CHECK_false);