Mercurial > hg > truffle
diff src/share/vm/oops/instanceKlass.cpp @ 14860:8762b6b8fbb6
fix scanning of method data for redefined methods
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Thu, 27 Mar 2014 13:11:17 -0700 |
parents | d8041d695d19 |
children | 4ca6dc0799b6 |
line wrap: on
line diff
--- a/src/share/vm/oops/instanceKlass.cpp Thu Mar 27 18:35:55 2014 +0100 +++ b/src/share/vm/oops/instanceKlass.cpp Thu Mar 27 13:11:17 2014 -0700 @@ -3411,6 +3411,10 @@ ("purge: %s(%s): prev method @%d in version @%d is alive", method->name()->as_C_string(), method->signature()->as_C_string(), j, i)); + if (method->method_data() != NULL) { + // Clean out any weak method links + method->method_data()->clean_weak_method_links(); + } } } } @@ -3420,6 +3424,14 @@ ("purge: previous version stats: live=%d, deleted=%d", live_count, deleted_count)); } + + Array<Method*>* methods = ik->methods(); + int num_methods = methods->length(); + for (int index2 = 0; index2 < num_methods; ++index2) { + if (methods->at(index2)->method_data() != NULL) { + methods->at(index2)->method_data()->clean_weak_method_links(); + } + } } // External interface for use during class unloading.