8340679: Misc tests fail assert(!set || SafepointSynchronize::is_at_safepoint()) failed: set once or at safepoint

Reviewed-by: matsaave, iklam
This commit is contained in:
Coleen Phillimore 2024-09-26 21:54:30 +00:00
parent 2349bb7ace
commit e6373b5238

View File

@ -1069,7 +1069,7 @@ bool SystemDictionary::check_shared_class_super_type(InstanceKlass* klass, Insta
}
Klass *found = resolve_with_circularity_detection(klass->name(), super_type->name(),
class_loader, protection_domain, is_superclass, CHECK_0);
class_loader, protection_domain, is_superclass, CHECK_false);
if (found == super_type) {
return true;
} else {
@ -1088,16 +1088,21 @@ bool SystemDictionary::check_shared_class_super_types(InstanceKlass* ik, Handle
// If unexpected superclass or interfaces are found, we cannot
// load <ik> from the shared archive.
if (ik->super() != nullptr &&
!check_shared_class_super_type(ik, InstanceKlass::cast(ik->super()),
class_loader, protection_domain, true, THREAD)) {
return false;
if (ik->super() != nullptr) {
bool check_super = check_shared_class_super_type(ik, InstanceKlass::cast(ik->super()),
class_loader, protection_domain, true,
CHECK_false);
if (!check_super) {
return false;
}
}
Array<InstanceKlass*>* interfaces = ik->local_interfaces();
int num_interfaces = interfaces->length();
for (int index = 0; index < num_interfaces; index++) {
if (!check_shared_class_super_type(ik, interfaces->at(index), class_loader, protection_domain, false, THREAD)) {
bool check_interface = check_shared_class_super_type(ik, interfaces->at(index), class_loader, protection_domain, false,
CHECK_false);
if (!check_interface) {
return false;
}
}
@ -1153,7 +1158,8 @@ InstanceKlass* SystemDictionary::load_shared_class(InstanceKlass* ik,
return nullptr;
}
if (!check_shared_class_super_types(ik, class_loader, protection_domain, THREAD)) {
bool check = check_shared_class_super_types(ik, class_loader, protection_domain, CHECK_NULL);
if (!check) {
ik->set_shared_loading_failed();
return nullptr;
}