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