diff --git a/src/hotspot/share/ci/ciMethodData.cpp b/src/hotspot/share/ci/ciMethodData.cpp index 2a571d3..21ddd82 100644 --- a/src/hotspot/share/ci/ciMethodData.cpp +++ b/src/hotspot/share/ci/ciMethodData.cpp @@ -187,8 +187,13 @@ void ciReceiverTypeData::translate_receiver_data_from(const ProfileData* data) { for (uint row = 0; row < row_limit(); row++) { Klass* k = data->as_ReceiverTypeData()->receiver(row); if (k != NULL) { - ciKlass* klass = CURRENT_ENV->get_klass(k); - set_receiver(row, klass); + if (k->is_loader_alive()) { + ciKlass* klass = CURRENT_ENV->get_klass(k); + set_receiver(row, klass); + } else { + // With concurrent class unloading, the MDO could have stale metadata; override it + clear_row(row); + } } } }