1870 }
1871
1872 void InstanceKlass::add_dependent_nmethod(nmethod* nm) {
1873 dependencies().add_dependent_nmethod(nm);
1874 }
1875
1876 void InstanceKlass::remove_dependent_nmethod(nmethod* nm, bool delete_immediately) {
1877 dependencies().remove_dependent_nmethod(nm, delete_immediately);
1878 }
1879
1880 #ifndef PRODUCT
1881 void InstanceKlass::print_dependent_nmethods(bool verbose) {
1882 dependencies().print_dependent_nmethods(verbose);
1883 }
1884
1885 bool InstanceKlass::is_dependent_nmethod(nmethod* nm) {
1886 return dependencies().is_dependent_nmethod(nm);
1887 }
1888 #endif //PRODUCT
1889
1890 void InstanceKlass::clean_weak_instanceklass_links(BoolObjectClosure* is_alive) {
1891 clean_implementors_list(is_alive);
1892 clean_method_data(is_alive);
1893
1894 // Since GC iterates InstanceKlasses sequentially, it is safe to remove stale entries here.
1895 DependencyContext dep_context(&_dep_context);
1896 dep_context.expunge_stale_entries();
1897 }
1898
1899 void InstanceKlass::clean_implementors_list(BoolObjectClosure* is_alive) {
1900 assert(class_loader_data()->is_alive(is_alive), "this klass should be live");
1901 if (is_interface()) {
1902 if (ClassUnloading) {
1903 Klass* impl = implementor();
1904 if (impl != NULL) {
1905 if (!impl->is_loader_alive(is_alive)) {
1906 // remove this guy
1907 Klass** klass = adr_implementor();
1908 assert(klass != NULL, "null klass");
1909 if (klass != NULL) {
|
1870 }
1871
1872 void InstanceKlass::add_dependent_nmethod(nmethod* nm) {
1873 dependencies().add_dependent_nmethod(nm);
1874 }
1875
1876 void InstanceKlass::remove_dependent_nmethod(nmethod* nm, bool delete_immediately) {
1877 dependencies().remove_dependent_nmethod(nm, delete_immediately);
1878 }
1879
1880 #ifndef PRODUCT
1881 void InstanceKlass::print_dependent_nmethods(bool verbose) {
1882 dependencies().print_dependent_nmethods(verbose);
1883 }
1884
1885 bool InstanceKlass::is_dependent_nmethod(nmethod* nm) {
1886 return dependencies().is_dependent_nmethod(nm);
1887 }
1888 #endif //PRODUCT
1889
1890 oop* InstanceKlass::klass_holder_addr() const {
1891 return is_anonymous() ? const_cast<oop*>(&_java_mirror) : _class_loader_data->class_loader_addr();
1892 }
1893
1894 void InstanceKlass::clean_weak_instanceklass_links(BoolObjectClosure* is_alive) {
1895 clean_implementors_list(is_alive);
1896 clean_method_data(is_alive);
1897
1898 // Since GC iterates InstanceKlasses sequentially, it is safe to remove stale entries here.
1899 DependencyContext dep_context(&_dep_context);
1900 dep_context.expunge_stale_entries();
1901 }
1902
1903 void InstanceKlass::clean_implementors_list(BoolObjectClosure* is_alive) {
1904 assert(class_loader_data()->is_alive(is_alive), "this klass should be live");
1905 if (is_interface()) {
1906 if (ClassUnloading) {
1907 Klass* impl = implementor();
1908 if (impl != NULL) {
1909 if (!impl->is_loader_alive(is_alive)) {
1910 // remove this guy
1911 Klass** klass = adr_implementor();
1912 assert(klass != NULL, "null klass");
1913 if (klass != NULL) {
|