< prev index next >
src/hotspot/share/ci/ciMethodData.cpp
MDO cleaning
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);
}
}
}
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) {
! 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);
! }
}
}
}
< prev index next >