mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 09:29:38 +01:00
JBR-8890 DCEVM Handle exceptions in do_topological_class_sorting()
This commit is contained in:
@@ -2555,7 +2555,7 @@ jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(bool do_init
|
||||
log_trace(redefine, class, load)("%s", _affected_klasses->at(i)->name()->as_C_string());
|
||||
}
|
||||
}
|
||||
return JVMTI_ERROR_NONE;
|
||||
return result;
|
||||
}
|
||||
|
||||
// Pairs of class dependencies (for topological sort)
|
||||
@@ -2601,6 +2601,18 @@ jvmtiError VM_EnhancedRedefineClasses::do_topological_class_sorting(Old2NewKlass
|
||||
old_2_new_klass_map,
|
||||
THREAD);
|
||||
|
||||
if (HAS_PENDING_EXCEPTION) {
|
||||
Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
|
||||
oop message = java_lang_Throwable::message(PENDING_EXCEPTION);
|
||||
if (message != nullptr) {
|
||||
char* ex_msg = java_lang_String::as_utf8_string(message);
|
||||
log_info(redefine, class, load, exceptions)("parse_class exception: '%s %s'", ex_name->as_C_string(), ex_msg);
|
||||
} else {
|
||||
log_info(redefine, class, load, exceptions)("parse_class exception: '%s'", ex_name->as_C_string());
|
||||
}
|
||||
return JVMTI_ERROR_INTERNAL;
|
||||
}
|
||||
|
||||
const Klass* super_klass = parser.super_klass();
|
||||
if (super_klass != nullptr && _affected_klasses->contains((Klass*) super_klass)) {
|
||||
links.append(KlassPair(super_klass, klass));
|
||||
|
||||
Reference in New Issue
Block a user