src/share/vm/classfile/systemDictionary.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8140685.01 Cdiff src/share/vm/classfile/systemDictionary.cpp

src/share/vm/classfile/systemDictionary.cpp

Print this page

        

*** 21,30 **** --- 21,31 ---- * questions. * */ #include "precompiled.hpp" + #include "classfile/backtrace.hpp" #include "classfile/classLoaderData.inline.hpp" #include "classfile/dictionary.hpp" #include "classfile/javaClasses.inline.hpp" #include "classfile/loaderConstraints.hpp" #include "classfile/placeholders.hpp"
*** 1706,1715 **** --- 1707,1719 ---- dictionary()->unlink(is_alive); #ifdef ASSERT VerifySDReachableAndLiveClosure cl(is_alive); dictionary()->oops_do(&cl); #endif + + // Unload deallocated backtraces + BacktraceList::unlink(is_alive); return unloading_occurred; } void SystemDictionary::roots_oops_do(OopClosure* strong, OopClosure* weak) { strong->do_oop(&_java_system_loader);
*** 1719,1728 **** --- 1723,1737 ---- // Adjust dictionary dictionary()->roots_oops_do(strong, weak); // Visit extra methods invoke_method_table()->oops_do(strong); + + // BacktraceList are weak roots + if (weak != NULL) { + BacktraceList::oops_do(weak); + } } void SystemDictionary::oops_do(OopClosure* f) { f->do_oop(&_java_system_loader); f->do_oop(&_system_loader_lock_obj);
*** 1731,1740 **** --- 1740,1752 ---- // Adjust dictionary dictionary()->oops_do(f); // Visit extra methods invoke_method_table()->oops_do(f); + + // BacktraceList are weak roots + BacktraceList::oops_do(f); } // Extended Class redefinition support. // If one of these classes is replaced, we need to replace it in these places. // KlassClosure::do_klass should take the address of a class but we can
src/share/vm/classfile/systemDictionary.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File