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++;
     }