mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-04 23:48:33 +00:00
8214231: Allow concurrent cleaning of TypeStackSlotEntries and ReturnTypeEntry
Reviewed-by: rehn, coleenp
This commit is contained in:
parent
50ffeaa507
commit
f65538cbda
@ -198,17 +198,28 @@ void ciReceiverTypeData::translate_receiver_data_from(const ProfileData* data) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ciTypeStackSlotEntries::translate_type_data_from(const TypeStackSlotEntries* entries) {
|
||||
for (int i = 0; i < number_of_entries(); i++) {
|
||||
intptr_t k = entries->type(i);
|
||||
TypeStackSlotEntries::set_type(i, translate_klass(k));
|
||||
Klass* klass = (Klass*)klass_part(k);
|
||||
if (klass != NULL && !klass->is_loader_alive()) {
|
||||
// With concurrent class unloading, the MDO could have stale metadata; override it
|
||||
TypeStackSlotEntries::set_type(i, TypeStackSlotEntries::with_status((Klass*)NULL, k));
|
||||
} else {
|
||||
TypeStackSlotEntries::set_type(i, translate_klass(k));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ciReturnTypeEntry::translate_type_data_from(const ReturnTypeEntry* ret) {
|
||||
intptr_t k = ret->type();
|
||||
set_type(translate_klass(k));
|
||||
Klass* klass = (Klass*)klass_part(k);
|
||||
if (klass != NULL && !klass->is_loader_alive()) {
|
||||
// With concurrent class unloading, the MDO could have stale metadata; override it
|
||||
set_type(ReturnTypeEntry::with_status((Klass*)NULL, k));
|
||||
} else {
|
||||
set_type(translate_klass(k));
|
||||
}
|
||||
}
|
||||
|
||||
void ciSpeculativeTrapData::translate_from(const ProfileData* data) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user