Mercurial > hg > truffle
diff src/share/vm/oops/klassVtable.cpp @ 610:70998f2e05ef
6805864: 4/3 Problem with jvmti->redefineClasses: some methods don't get redefined
Summary: Remove incorrect optimization in klassItable::adjust_method_entries(). Add RedefineClasses() tracing support for obsolete method entry.
Reviewed-by: acorn, swamyv
author | dcubed |
---|---|
date | Mon, 02 Mar 2009 14:03:03 -0700 |
parents | d1605aabd0a1 |
children | 4aaa9f5e02a8 c89f86385056 |
line wrap: on
line diff
--- a/src/share/vm/oops/klassVtable.cpp Mon Mar 02 14:00:23 2009 -0700 +++ b/src/share/vm/oops/klassVtable.cpp Mon Mar 02 14:03:03 2009 -0700 @@ -992,6 +992,10 @@ methodOop new_method = new_methods[j]; itableMethodEntry* ime = method_entry(0); + // The itable can describe more than one interface and the same + // method signature can be specified by more than one interface. + // This means we have to do an exhaustive search to find all the + // old_method references. for (int i = 0; i < _size_method_table; i++) { if (ime->method() == old_method) { ime->initialize(new_method); @@ -1008,7 +1012,6 @@ new_method->name()->as_C_string(), new_method->signature()->as_C_string())); } - break; } ime++; }