117 static void modules_unloading_do(void f(ModuleEntry*)); 118 static void packages_do(void f(PackageEntry*)); 119 static void packages_unloading_do(void f(PackageEntry*)); 120 static void loaded_classes_do(KlassClosure* klass_closure); 121 static void classes_unloading_do(void f(Klass* const)); 122 static bool do_unloading(bool do_cleaning); 123 124 // Expose state to avoid logging overhead in safepoint cleanup tasks. 125 static inline bool should_clean_metaspaces_and_reset(); 126 static void set_should_clean_deallocate_lists() { _should_clean_deallocate_lists = true; } 127 static void clean_deallocate_lists(bool purge_previous_versions); 128 static void walk_metadata_and_clean_metaspaces(); 129 130 // dictionary do 131 // Iterate over all klasses in dictionary, but 132 // just the classes from defining class loaders. 133 static void dictionary_classes_do(void f(InstanceKlass*)); 134 // Added for initialize_itable_for_klass to handle exceptions. 135 static void dictionary_classes_do(void f(InstanceKlass*, TRAPS), TRAPS); 136 137 // Iterate all classes and their class loaders, including initiating class loaders. 138 static void dictionary_all_entries_do(void f(InstanceKlass*, ClassLoaderData*)); 139 140 // VM_CounterDecay iteration support 141 static InstanceKlass* try_get_next_class(); 142 143 static void verify_dictionary(); 144 static void print_dictionary(outputStream* st); 145 static void print_dictionary_statistics(outputStream* st); 146 147 // CMS support. 148 static void remember_new_clds(bool remember) { _saved_head = (remember ? _head : NULL); } 149 static GrowableArray<ClassLoaderData*>* new_clds(); 150 151 static void set_should_purge(bool b) { _should_purge = b; } 152 static void purge_if_needed() { 153 // Only purge the CLDG for CMS if concurrent sweep is complete. 154 if (_should_purge) { 155 purge(); 156 // reset for next time. 157 set_should_purge(false); 158 } 159 } | 117 static void modules_unloading_do(void f(ModuleEntry*)); 118 static void packages_do(void f(PackageEntry*)); 119 static void packages_unloading_do(void f(PackageEntry*)); 120 static void loaded_classes_do(KlassClosure* klass_closure); 121 static void classes_unloading_do(void f(Klass* const)); 122 static bool do_unloading(bool do_cleaning); 123 124 // Expose state to avoid logging overhead in safepoint cleanup tasks. 125 static inline bool should_clean_metaspaces_and_reset(); 126 static void set_should_clean_deallocate_lists() { _should_clean_deallocate_lists = true; } 127 static void clean_deallocate_lists(bool purge_previous_versions); 128 static void walk_metadata_and_clean_metaspaces(); 129 130 // dictionary do 131 // Iterate over all klasses in dictionary, but 132 // just the classes from defining class loaders. 133 static void dictionary_classes_do(void f(InstanceKlass*)); 134 // Added for initialize_itable_for_klass to handle exceptions. 135 static void dictionary_classes_do(void f(InstanceKlass*, TRAPS), TRAPS); 136 137 // VM_CounterDecay iteration support 138 static InstanceKlass* try_get_next_class(); 139 140 static void verify_dictionary(); 141 static void print_dictionary(outputStream* st); 142 static void print_dictionary_statistics(outputStream* st); 143 144 // CMS support. 145 static void remember_new_clds(bool remember) { _saved_head = (remember ? _head : NULL); } 146 static GrowableArray<ClassLoaderData*>* new_clds(); 147 148 static void set_should_purge(bool b) { _should_purge = b; } 149 static void purge_if_needed() { 150 // Only purge the CLDG for CMS if concurrent sweep is complete. 151 if (_should_purge) { 152 purge(); 153 // reset for next time. 154 set_should_purge(false); 155 } 156 } |