8209738: Remove ClassLoaderDataGraph::*oops_do functions
Make walking CLDG more consistent. Reviewed-by: dholmes, tschatzl
This commit is contained in:
parent
f6bcc38500
commit
dc556f4086
src/hotspot/share
@ -1119,28 +1119,6 @@ ClassLoaderData* ClassLoaderDataGraph::add(Handle loader, bool is_unsafe_anonymo
|
||||
return loader_data;
|
||||
}
|
||||
|
||||
void ClassLoaderDataGraph::oops_do(OopClosure* f, bool must_claim) {
|
||||
for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
|
||||
cld->oops_do(f, must_claim);
|
||||
}
|
||||
}
|
||||
|
||||
void ClassLoaderDataGraph::keep_alive_oops_do(OopClosure* f, bool must_claim) {
|
||||
for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
|
||||
if (cld->keep_alive()) {
|
||||
cld->oops_do(f, must_claim);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ClassLoaderDataGraph::always_strong_oops_do(OopClosure* f, bool must_claim) {
|
||||
if (ClassUnloading) {
|
||||
keep_alive_oops_do(f, must_claim);
|
||||
} else {
|
||||
oops_do(f, must_claim);
|
||||
}
|
||||
}
|
||||
|
||||
void ClassLoaderDataGraph::cld_do(CLDClosure* cl) {
|
||||
for (ClassLoaderData* cld = _head; cl != NULL && cld != NULL; cld = cld->next()) {
|
||||
cl->do_cld(cld);
|
||||
|
@ -100,11 +100,7 @@ class ClassLoaderDataGraph : public AllStatic {
|
||||
static void clean_module_and_package_info();
|
||||
static void purge();
|
||||
static void clear_claimed_marks();
|
||||
// oops do
|
||||
static void oops_do(OopClosure* f, bool must_claim);
|
||||
static void keep_alive_oops_do(OopClosure* blk, bool must_claim);
|
||||
static void always_strong_oops_do(OopClosure* blk, bool must_claim);
|
||||
// cld do
|
||||
// Iteration through CLDG inside a safepoint; GC support
|
||||
static void cld_do(CLDClosure* cl);
|
||||
static void cld_unloading_do(CLDClosure* cl);
|
||||
static void roots_cld_do(CLDClosure* strong, CLDClosure* weak);
|
||||
|
@ -293,9 +293,6 @@ public:
|
||||
|
||||
static void allocate_shared_data_arrays(int size, TRAPS);
|
||||
static void oops_do(OopClosure* f);
|
||||
static void roots_oops_do(OopClosure* f) {
|
||||
oops_do(f);
|
||||
}
|
||||
|
||||
// Check if sharing is supported for the class loader.
|
||||
static bool is_sharing_possible(ClassLoaderData* loader_data);
|
||||
|
@ -107,8 +107,10 @@ void MarkFromRootsTask::do_it(GCTaskManager* manager, uint which) {
|
||||
SystemDictionary::oops_do(&mark_and_push_closure);
|
||||
break;
|
||||
|
||||
case class_loader_data:
|
||||
ClassLoaderDataGraph::always_strong_oops_do(&mark_and_push_closure, true);
|
||||
case class_loader_data: {
|
||||
CLDToOopClosure cld_closure(&mark_and_push_closure);
|
||||
ClassLoaderDataGraph::always_strong_cld_do(&cld_closure);
|
||||
}
|
||||
break;
|
||||
|
||||
case code_cache:
|
||||
|
@ -2188,7 +2188,8 @@ void PSParallelCompact::adjust_roots(ParCompactionManager* cm) {
|
||||
Management::oops_do(&oop_closure);
|
||||
JvmtiExport::oops_do(&oop_closure);
|
||||
SystemDictionary::oops_do(&oop_closure);
|
||||
ClassLoaderDataGraph::oops_do(&oop_closure, true);
|
||||
CLDToOopClosure cld_closure(&oop_closure);
|
||||
ClassLoaderDataGraph::cld_do(&cld_closure);
|
||||
|
||||
// Now adjust pointers in remaining weak roots. (All of which should
|
||||
// have been cleared if they pointed to non-surviving objects.)
|
||||
|
@ -3009,7 +3009,8 @@ inline bool VM_HeapWalkOperation::collect_simple_roots() {
|
||||
// Preloaded classes and loader from the system dictionary
|
||||
blk.set_kind(JVMTI_HEAP_REFERENCE_SYSTEM_CLASS);
|
||||
SystemDictionary::oops_do(&blk);
|
||||
ClassLoaderDataGraph::always_strong_oops_do(&blk, false);
|
||||
CLDToOopClosure cld_closure(&blk, false);
|
||||
ClassLoaderDataGraph::always_strong_cld_do(&cld_closure);
|
||||
if (blk.stopped()) {
|
||||
return false;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user