diff -r 663f5d90f0e8 -r 02c08e20d66c src/hotspot/share/oops/instanceKlass.cpp --- a/src/hotspot/share/oops/instanceKlass.cpp Wed Apr 18 10:03:49 2018 -0700 +++ b/src/hotspot/share/oops/instanceKlass.cpp Wed Apr 18 13:37:39 2018 -0400 @@ -1891,22 +1891,22 @@ } #endif //PRODUCT -void InstanceKlass::clean_weak_instanceklass_links(BoolObjectClosure* is_alive) { - clean_implementors_list(is_alive); - clean_method_data(is_alive); +void InstanceKlass::clean_weak_instanceklass_links() { + clean_implementors_list(); + clean_method_data(); // Since GC iterates InstanceKlasses sequentially, it is safe to remove stale entries here. DependencyContext dep_context(&_dep_context); dep_context.expunge_stale_entries(); } -void InstanceKlass::clean_implementors_list(BoolObjectClosure* is_alive) { - assert(class_loader_data()->is_alive(), "this klass should be live"); +void InstanceKlass::clean_implementors_list() { + assert(is_loader_alive(), "this klass should be live"); if (is_interface()) { if (ClassUnloading) { Klass* impl = implementor(); if (impl != NULL) { - if (!impl->is_loader_alive(is_alive)) { + if (!impl->is_loader_alive()) { // remove this guy Klass** klass = adr_implementor(); assert(klass != NULL, "null klass"); @@ -1919,11 +1919,11 @@ } } -void InstanceKlass::clean_method_data(BoolObjectClosure* is_alive) { +void InstanceKlass::clean_method_data() { for (int m = 0; m < methods()->length(); m++) { MethodData* mdo = methods()->at(m)->method_data(); if (mdo != NULL) { - mdo->clean_method_data(is_alive); + mdo->clean_method_data(/*always_clean*/false); } } }