8315998: Remove dead ClassLoaderDataGraphKlassIteratorStatic

Reviewed-by: coleenp
This commit is contained in:
Thomas Schatzl 2023-09-12 13:34:04 +00:00
parent 50158f393e
commit 347beb21aa
5 changed files with 0 additions and 95 deletions

@ -558,9 +558,6 @@ void ClassLoaderData::initialize_holder(Handle loader_or_mirror) {
void ClassLoaderData::remove_class(Klass* scratch_class) {
assert_locked_or_safepoint(ClassLoaderDataGraph_lock);
// Adjust global class iterator.
ClassLoaderDataGraph::adjust_saved_class(scratch_class);
Klass* prev = nullptr;
for (Klass* k = _klasses; k != nullptr; k = k->next_link()) {
if (k == scratch_class) {
@ -620,9 +617,6 @@ void ClassLoaderData::unload() {
if (_jmethod_ids != nullptr) {
Method::clear_jmethod_ids(this);
}
// Clean up global class iterator for compiler
ClassLoaderDataGraph::adjust_saved_class(this);
}
ModuleEntryTable* ClassLoaderData::modules() {

@ -80,85 +80,6 @@ void ClassLoaderDataGraph::verify_claimed_marks_cleared(int claim) {
#endif
}
// Class iterator used by the compiler. It gets some number of classes at
// a safepoint to decay invocation counters on the methods.
class ClassLoaderDataGraphKlassIteratorStatic {
ClassLoaderData* _current_loader_data;
Klass* _current_class_entry;
public:
ClassLoaderDataGraphKlassIteratorStatic() : _current_loader_data(nullptr), _current_class_entry(nullptr) {}
InstanceKlass* try_get_next_class() {
assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint");
size_t max_classes = ClassLoaderDataGraph::num_instance_classes();
assert(max_classes > 0, "should not be called with no instance classes");
for (size_t i = 0; i < max_classes; ) {
if (_current_class_entry != nullptr) {
Klass* k = _current_class_entry;
_current_class_entry = _current_class_entry->next_link();
if (k->is_instance_klass()) {
InstanceKlass* ik = InstanceKlass::cast(k);
i++; // count all instance classes found
// Not yet loaded classes are counted in max_classes
// but only return loaded classes.
if (ik->is_loaded()) {
return ik;
}
}
} else {
// Go to next CLD
if (_current_loader_data != nullptr) {
_current_loader_data = _current_loader_data->next();
}
// Start at the beginning
if (_current_loader_data == nullptr) {
_current_loader_data = ClassLoaderDataGraph::_head;
}
_current_class_entry = _current_loader_data->klasses();
}
}
// Should never be reached unless all instance classes have failed or are not fully loaded.
// Caller handles null.
return nullptr;
}
// If the current class for the static iterator is a class being unloaded or
// deallocated, adjust the current class.
void adjust_saved_class(ClassLoaderData* cld) {
if (_current_loader_data == cld) {
_current_loader_data = cld->next();
if (_current_loader_data != nullptr) {
_current_class_entry = _current_loader_data->klasses();
} // else try_get_next_class will start at the head
}
}
void adjust_saved_class(Klass* klass) {
if (_current_class_entry == klass) {
_current_class_entry = klass->next_link();
}
}
};
static ClassLoaderDataGraphKlassIteratorStatic static_klass_iterator;
InstanceKlass* ClassLoaderDataGraph::try_get_next_class() {
assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint");
return static_klass_iterator.try_get_next_class();
}
void ClassLoaderDataGraph::adjust_saved_class(ClassLoaderData* cld) {
return static_klass_iterator.adjust_saved_class(cld);
}
void ClassLoaderDataGraph::adjust_saved_class(Klass* klass) {
return static_klass_iterator.adjust_saved_class(klass);
}
void ClassLoaderDataGraph::clean_deallocate_lists(bool walk_previous_versions) {
assert(SafepointSynchronize::is_at_safepoint(), "must only be called at safepoint");
uint loaders_processed = 0;

@ -97,11 +97,6 @@ class ClassLoaderDataGraph : public AllStatic {
// Called from VMOperation
static void walk_metadata_and_clean_metaspaces();
// VM_CounterDecay iteration support
static InstanceKlass* try_get_next_class();
static void adjust_saved_class(ClassLoaderData* cld);
static void adjust_saved_class(Klass* klass);
static void verify_dictionary();
static void print_dictionary(outputStream* st);
static void print_table_statistics(outputStream* st);

@ -59,10 +59,6 @@ void InvocationCounter::reset() {
update(0);
}
void InvocationCounter::decay() {
update(count() >> 1);
}
void InvocationCounter::print() {
uint counter = raw_counter();
tty->print_cr("invocation count: up = %d, limit = " INTX_FORMAT ", carry = %s",

@ -60,7 +60,6 @@ class InvocationCounter {
// Manipulation
void reset();
void init();
void decay(); // decay counter (divide by two)
void set_carry_on_overflow();
void set(uint count);
void increment() { _counter += count_increment; }