< prev index next >
src/hotspot/share/oops/methodData.cpp
Print this page
*** 427,437 ****
void VirtualCallData::clean_weak_method_links() {
ReceiverTypeData::clean_weak_method_links();
for (uint row = 0; row < method_row_limit(); row++) {
Method* p = method(row);
! if (p != NULL && !p->on_stack()) {
clear_method_row(row);
}
}
}
#endif // INCLUDE_JVMCI
--- 427,437 ----
void VirtualCallData::clean_weak_method_links() {
ReceiverTypeData::clean_weak_method_links();
for (uint row = 0; row < method_row_limit(); row++) {
Method* p = method(row);
! if (p != NULL && p->is_old()) {
clear_method_row(row);
}
}
}
#endif // INCLUDE_JVMCI
*** 1768,1777 ****
--- 1768,1779 ----
CleanExtraDataKlassClosure cl(always_clean);
clean_extra_data(&cl);
verify_extra_data_clean(&cl);
}
+ // This is called during redefinition to clean all "old" redefined
+ // methods out of MethodData for all methods.
void MethodData::clean_weak_method_links() {
ResourceMark rm;
for (ProfileData* data = first_data();
is_valid(data);
data = next_data(data)) {
< prev index next >