8361705: Clean up KlassCleaningTask

Reviewed-by: shade, ayang
This commit is contained in:
Thomas Schatzl 2025-07-16 07:20:15 +00:00
parent 27c58c06cf
commit fd2ee0844a
2 changed files with 5 additions and 10 deletions

View File

@ -95,7 +95,7 @@ void CodeCacheUnloadingTask::work(uint worker_id) {
}
KlassCleaningTask::KlassCleaningTask() :
_clean_klass_tree_claimed(0),
_clean_klass_tree_claimed(false),
_klass_iterator() {
}
@ -104,7 +104,7 @@ bool KlassCleaningTask::claim_clean_klass_tree_task() {
return false;
}
return Atomic::cmpxchg(&_clean_klass_tree_claimed, 0, 1) == 0;
return !Atomic::cmpxchg(&_clean_klass_tree_claimed, false, true);
}
InstanceKlass* KlassCleaningTask::claim_next_klass() {
@ -118,8 +118,6 @@ InstanceKlass* KlassCleaningTask::claim_next_klass() {
}
void KlassCleaningTask::work() {
ResourceMark rm;
// One worker will clean the subklass/sibling klass tree.
if (claim_clean_klass_tree_task()) {
Klass::clean_weak_klass_links(true /* class_unloading_occurred */, false /* clean_alive_klasses */);

View File

@ -52,19 +52,16 @@ public:
void work(uint worker_id);
};
// Cleans out the Klass tree from stale data.
class KlassCleaningTask : public StackObj {
volatile int _clean_klass_tree_claimed;
volatile bool _clean_klass_tree_claimed;
ClassLoaderDataGraphKlassIteratorAtomic _klass_iterator;
public:
KlassCleaningTask();
private:
bool claim_clean_klass_tree_task();
InstanceKlass* claim_next_klass();
public:
KlassCleaningTask();
void work();
};