158 do_klass(LambdaForm_klass, java_lang_invoke_LambdaForm, Opt ) \
159 do_klass(MethodType_klass, java_lang_invoke_MethodType, Pre_JSR292 ) \
160 do_klass(BootstrapMethodError_klass, java_lang_BootstrapMethodError, Pre_JSR292 ) \
161 do_klass(CallSite_klass, java_lang_invoke_CallSite, Pre_JSR292 ) \
162 do_klass(ConstantCallSite_klass, java_lang_invoke_ConstantCallSite, Pre_JSR292 ) \
163 do_klass(MutableCallSite_klass, java_lang_invoke_MutableCallSite, Pre_JSR292 ) \
164 do_klass(VolatileCallSite_klass, java_lang_invoke_VolatileCallSite, Pre_JSR292 ) \
165 /* Note: MethodHandle must be first, and VolatileCallSite last in group */ \
166 \
167 do_klass(StringBuffer_klass, java_lang_StringBuffer, Pre ) \
168 do_klass(StringBuilder_klass, java_lang_StringBuilder, Pre ) \
169 do_klass(misc_Unsafe_klass, sun_misc_Unsafe, Pre ) \
170 \
171 /* support for CDS */ \
172 do_klass(ByteArrayInputStream_klass, java_io_ByteArrayInputStream, Pre ) \
173 do_klass(File_klass, java_io_File, Pre ) \
174 do_klass(URLClassLoader_klass, java_net_URLClassLoader, Pre ) \
175 do_klass(URL_klass, java_net_URL, Pre ) \
176 do_klass(Jar_Manifest_klass, java_util_jar_Manifest, Pre ) \
177 do_klass(sun_misc_Launcher_klass, sun_misc_Launcher, Pre ) \
178 do_klass(CodeSource_klass, java_security_CodeSource, Pre ) \
179 \
180 /* It's NULL in non-1.4 JDKs. */ \
181 do_klass(StackTraceElement_klass, java_lang_StackTraceElement, Opt ) \
182 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \
183 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \
184 do_klass(nio_Buffer_klass, java_nio_Buffer, Opt ) \
185 \
186 /* Preload boxing klasses */ \
187 do_klass(Boolean_klass, java_lang_Boolean, Pre ) \
188 do_klass(Character_klass, java_lang_Character, Pre ) \
189 do_klass(Float_klass, java_lang_Float, Pre ) \
190 do_klass(Double_klass, java_lang_Double, Pre ) \
191 do_klass(Byte_klass, java_lang_Byte, Pre ) \
192 do_klass(Short_klass, java_lang_Short, Pre ) \
193 do_klass(Integer_klass, java_lang_Integer, Pre ) \
194 do_klass(Long_klass, java_lang_Long, Pre ) \
195 /*end*/
196
197
322 static void classes_do(void f(Klass*));
323 // Added for initialize_itable_for_klass to handle exceptions
324 static void classes_do(void f(Klass*, TRAPS), TRAPS);
325 // All classes, and their class loaders
326 static void classes_do(void f(Klass*, ClassLoaderData*));
327
328 static void placeholders_do(void f(Symbol*));
329
330 // Iterate over all methods in all klasses in dictionary
331 static void methods_do(void f(Method*));
332
333 // Garbage collection support
334
335 // This method applies "blk->do_oop" to all the pointers to "system"
336 // classes and loaders.
337 static void always_strong_oops_do(OopClosure* blk);
338 static void always_strong_classes_do(KlassClosure* closure);
339
340 // Unload (that is, break root links to) all unmarked classes and
341 // loaders. Returns "true" iff something was unloaded.
342 static bool do_unloading(BoolObjectClosure* is_alive);
343
344 // Used by DumpSharedSpaces only to remove classes that failed verification
345 static void remove_classes_in_error_state();
346
347 static int calculate_systemdictionary_size(int loadedclasses);
348
349 // Applies "f->do_oop" to all root oops in the system dictionary.
350 static void oops_do(OopClosure* f);
351 static void roots_oops_do(OopClosure* strong, OopClosure* weak);
352
353 // System loader lock
354 static oop system_loader_lock() { return _system_loader_lock_obj; }
355
356 protected:
357 // Extended Redefine classes support (tbi)
358 static void preloaded_classes_do(KlassClosure* f);
359 static void lazily_loaded_classes_do(KlassClosure* f);
360 public:
361 // Sharing support.
362 static void reorder_dictionary();
|
158 do_klass(LambdaForm_klass, java_lang_invoke_LambdaForm, Opt ) \
159 do_klass(MethodType_klass, java_lang_invoke_MethodType, Pre_JSR292 ) \
160 do_klass(BootstrapMethodError_klass, java_lang_BootstrapMethodError, Pre_JSR292 ) \
161 do_klass(CallSite_klass, java_lang_invoke_CallSite, Pre_JSR292 ) \
162 do_klass(ConstantCallSite_klass, java_lang_invoke_ConstantCallSite, Pre_JSR292 ) \
163 do_klass(MutableCallSite_klass, java_lang_invoke_MutableCallSite, Pre_JSR292 ) \
164 do_klass(VolatileCallSite_klass, java_lang_invoke_VolatileCallSite, Pre_JSR292 ) \
165 /* Note: MethodHandle must be first, and VolatileCallSite last in group */ \
166 \
167 do_klass(StringBuffer_klass, java_lang_StringBuffer, Pre ) \
168 do_klass(StringBuilder_klass, java_lang_StringBuilder, Pre ) \
169 do_klass(misc_Unsafe_klass, sun_misc_Unsafe, Pre ) \
170 \
171 /* support for CDS */ \
172 do_klass(ByteArrayInputStream_klass, java_io_ByteArrayInputStream, Pre ) \
173 do_klass(File_klass, java_io_File, Pre ) \
174 do_klass(URLClassLoader_klass, java_net_URLClassLoader, Pre ) \
175 do_klass(URL_klass, java_net_URL, Pre ) \
176 do_klass(Jar_Manifest_klass, java_util_jar_Manifest, Pre ) \
177 do_klass(sun_misc_Launcher_klass, sun_misc_Launcher, Pre ) \
178 do_klass(sun_misc_Launcher_AppClassLoader_klass, sun_misc_Launcher_AppClassLoader, Pre ) \
179 do_klass(sun_misc_Launcher_ExtClassLoader_klass, sun_misc_Launcher_ExtClassLoader, Pre ) \
180 do_klass(CodeSource_klass, java_security_CodeSource, Pre ) \
181 \
182 /* It's NULL in non-1.4 JDKs. */ \
183 do_klass(StackTraceElement_klass, java_lang_StackTraceElement, Opt ) \
184 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \
185 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \
186 do_klass(nio_Buffer_klass, java_nio_Buffer, Opt ) \
187 \
188 /* Preload boxing klasses */ \
189 do_klass(Boolean_klass, java_lang_Boolean, Pre ) \
190 do_klass(Character_klass, java_lang_Character, Pre ) \
191 do_klass(Float_klass, java_lang_Float, Pre ) \
192 do_klass(Double_klass, java_lang_Double, Pre ) \
193 do_klass(Byte_klass, java_lang_Byte, Pre ) \
194 do_klass(Short_klass, java_lang_Short, Pre ) \
195 do_klass(Integer_klass, java_lang_Integer, Pre ) \
196 do_klass(Long_klass, java_lang_Long, Pre ) \
197 /*end*/
198
199
324 static void classes_do(void f(Klass*));
325 // Added for initialize_itable_for_klass to handle exceptions
326 static void classes_do(void f(Klass*, TRAPS), TRAPS);
327 // All classes, and their class loaders
328 static void classes_do(void f(Klass*, ClassLoaderData*));
329
330 static void placeholders_do(void f(Symbol*));
331
332 // Iterate over all methods in all klasses in dictionary
333 static void methods_do(void f(Method*));
334
335 // Garbage collection support
336
337 // This method applies "blk->do_oop" to all the pointers to "system"
338 // classes and loaders.
339 static void always_strong_oops_do(OopClosure* blk);
340 static void always_strong_classes_do(KlassClosure* closure);
341
342 // Unload (that is, break root links to) all unmarked classes and
343 // loaders. Returns "true" iff something was unloaded.
344 static bool do_unloading(BoolObjectClosure* is_alive, bool clean_alive = true);
345
346 // Used by DumpSharedSpaces only to remove classes that failed verification
347 static void remove_classes_in_error_state();
348
349 static int calculate_systemdictionary_size(int loadedclasses);
350
351 // Applies "f->do_oop" to all root oops in the system dictionary.
352 static void oops_do(OopClosure* f);
353 static void roots_oops_do(OopClosure* strong, OopClosure* weak);
354
355 // System loader lock
356 static oop system_loader_lock() { return _system_loader_lock_obj; }
357
358 protected:
359 // Extended Redefine classes support (tbi)
360 static void preloaded_classes_do(KlassClosure* f);
361 static void lazily_loaded_classes_do(KlassClosure* f);
362 public:
363 // Sharing support.
364 static void reorder_dictionary();
|