8210236: Prepare ciReceiverTypeData::translate_receiver_data_from for concurrent class unloading

Reviewed-by: coleenp, roland
This commit is contained in:
Erik Österlund 2018-09-10 11:24:26 +02:00
parent 4db2b90f44
commit a602e0b80c

View File

@ -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);
}
}
}
}