src/share/vm/oops/klassVtable.cpp

changeset 1045
70998f2e05ef
parent 631
d1605aabd0a1
child 1087
4aaa9f5e02a8
child 1100
c89f86385056
equal deleted inserted replaced
1044:ea20d7ce26b0 1045: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 }

mercurial