mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
8209738: Remove ClassLoaderDataGraph::*oops_do functions
Make walking CLDG more consistent. Reviewed-by: dholmes, tschatzl
This commit is contained in:
parent
f6bcc38500
commit
dc556f4086
6 changed files with 9 additions and 34 deletions
|
@ -1119,28 +1119,6 @@ ClassLoaderData* ClassLoaderDataGraph::add(Handle loader, bool is_unsafe_anonymo
|
||||||
return loader_data;
|
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) {
|
void ClassLoaderDataGraph::cld_do(CLDClosure* cl) {
|
||||||
for (ClassLoaderData* cld = _head; cl != NULL && cld != NULL; cld = cld->next()) {
|
for (ClassLoaderData* cld = _head; cl != NULL && cld != NULL; cld = cld->next()) {
|
||||||
cl->do_cld(cld);
|
cl->do_cld(cld);
|
||||||
|
|
|
@ -100,11 +100,7 @@ class ClassLoaderDataGraph : public AllStatic {
|
||||||
static void clean_module_and_package_info();
|
static void clean_module_and_package_info();
|
||||||
static void purge();
|
static void purge();
|
||||||
static void clear_claimed_marks();
|
static void clear_claimed_marks();
|
||||||
// oops do
|
// Iteration through CLDG inside a safepoint; GC support
|
||||||
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
|
|
||||||
static void cld_do(CLDClosure* cl);
|
static void cld_do(CLDClosure* cl);
|
||||||
static void cld_unloading_do(CLDClosure* cl);
|
static void cld_unloading_do(CLDClosure* cl);
|
||||||
static void roots_cld_do(CLDClosure* strong, CLDClosure* weak);
|
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 allocate_shared_data_arrays(int size, TRAPS);
|
||||||
static void oops_do(OopClosure* f);
|
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.
|
// Check if sharing is supported for the class loader.
|
||||||
static bool is_sharing_possible(ClassLoaderData* loader_data);
|
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);
|
SystemDictionary::oops_do(&mark_and_push_closure);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case class_loader_data:
|
case class_loader_data: {
|
||||||
ClassLoaderDataGraph::always_strong_oops_do(&mark_and_push_closure, true);
|
CLDToOopClosure cld_closure(&mark_and_push_closure);
|
||||||
|
ClassLoaderDataGraph::always_strong_cld_do(&cld_closure);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case code_cache:
|
case code_cache:
|
||||||
|
|
|
@ -2188,7 +2188,8 @@ void PSParallelCompact::adjust_roots(ParCompactionManager* cm) {
|
||||||
Management::oops_do(&oop_closure);
|
Management::oops_do(&oop_closure);
|
||||||
JvmtiExport::oops_do(&oop_closure);
|
JvmtiExport::oops_do(&oop_closure);
|
||||||
SystemDictionary::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
|
// Now adjust pointers in remaining weak roots. (All of which should
|
||||||
// have been cleared if they pointed to non-surviving objects.)
|
// 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
|
// Preloaded classes and loader from the system dictionary
|
||||||
blk.set_kind(JVMTI_HEAP_REFERENCE_SYSTEM_CLASS);
|
blk.set_kind(JVMTI_HEAP_REFERENCE_SYSTEM_CLASS);
|
||||||
SystemDictionary::oops_do(&blk);
|
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()) {
|
if (blk.stopped()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue