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);
|