Mercurial > hg > truffle
comparison 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 |
comparison
equal
deleted
inserted
replaced
609:ea20d7ce26b0 | 610:70998f2e05ef |
---|---|
990 for (int j = 0; j < methods_length; j++) { | 990 for (int j = 0; j < methods_length; j++) { |
991 methodOop old_method = old_methods[j]; | 991 methodOop old_method = old_methods[j]; |
992 methodOop new_method = new_methods[j]; | 992 methodOop new_method = new_methods[j]; |
993 itableMethodEntry* ime = method_entry(0); | 993 itableMethodEntry* ime = method_entry(0); |
994 | 994 |
995 // The itable can describe more than one interface and the same | |
996 // method signature can be specified by more than one interface. | |
997 // This means we have to do an exhaustive search to find all the | |
998 // old_method references. | |
995 for (int i = 0; i < _size_method_table; i++) { | 999 for (int i = 0; i < _size_method_table; i++) { |
996 if (ime->method() == old_method) { | 1000 if (ime->method() == old_method) { |
997 ime->initialize(new_method); | 1001 ime->initialize(new_method); |
998 | 1002 |
999 if (RC_TRACE_IN_RANGE(0x00100000, 0x00400000)) { | 1003 if (RC_TRACE_IN_RANGE(0x00100000, 0x00400000)) { |
1006 // RC_TRACE macro has an embedded ResourceMark | 1010 // RC_TRACE macro has an embedded ResourceMark |
1007 RC_TRACE(0x00200000, ("itable method update: %s(%s)", | 1011 RC_TRACE(0x00200000, ("itable method update: %s(%s)", |
1008 new_method->name()->as_C_string(), | 1012 new_method->name()->as_C_string(), |
1009 new_method->signature()->as_C_string())); | 1013 new_method->signature()->as_C_string())); |
1010 } | 1014 } |
1011 break; | |
1012 } | 1015 } |
1013 ime++; | 1016 ime++; |
1014 } | 1017 } |
1015 } | 1018 } |
1016 } | 1019 } |