diff -r 33a76b934213 -r 8624981f1ffa src/hotspot/share/oops/methodData.cpp --- a/src/hotspot/share/oops/methodData.cpp Thu May 03 08:07:20 2018 -0400 +++ b/src/hotspot/share/oops/methodData.cpp Fri Apr 27 15:00:04 2018 -0400 @@ -429,7 +429,7 @@ ReceiverTypeData::clean_weak_method_links(); for (uint row = 0; row < method_row_limit(); row++) { Method* p = method(row); - if (p != NULL && !p->on_stack()) { + if (p != NULL && p->is_old()) { clear_method_row(row); } } @@ -1770,6 +1770,8 @@ 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();