mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-18 18:14:38 +02:00
8268470: CDS dynamic dump asserts with JFR RecordingStream
Reviewed-by: minqi, iklam
This commit is contained in:
parent
e39346e708
commit
01054e6f5a
4 changed files with 170 additions and 1 deletions
|
@ -1354,11 +1354,29 @@ bool SystemDictionaryShared::check_for_exclusion(InstanceKlass* k, DumpTimeShare
|
|||
return info->is_excluded();
|
||||
}
|
||||
|
||||
// Check if a class or any of its supertypes has been redefined.
|
||||
bool SystemDictionaryShared::has_been_redefined(InstanceKlass* k) {
|
||||
if (k->has_been_redefined()) {
|
||||
return true;
|
||||
}
|
||||
if (k->java_super() != NULL && has_been_redefined(k->java_super())) {
|
||||
return true;
|
||||
}
|
||||
Array<InstanceKlass*>* interfaces = k->local_interfaces();
|
||||
int len = interfaces->length();
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (has_been_redefined(interfaces->at(i))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SystemDictionaryShared::check_for_exclusion_impl(InstanceKlass* k) {
|
||||
if (k->is_in_error_state()) {
|
||||
return warn_excluded(k, "In error state");
|
||||
}
|
||||
if (k->has_been_redefined()) {
|
||||
if (has_been_redefined(k)) {
|
||||
return warn_excluded(k, "Has been redefined");
|
||||
}
|
||||
if (!k->is_hidden() && k->shared_classpath_index() < 0 && is_builtin(k)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue