272 assert(super_method->name() == name && super_method->signature() == signature, "vtable entry name/sig mismatch"); |
272 assert(super_method->name() == name && super_method->signature() == signature, "vtable entry name/sig mismatch"); |
273 #endif |
273 #endif |
274 if (supersuperklass->is_override(super_method, target_loader, target_classname, THREAD)) { |
274 if (supersuperklass->is_override(super_method, target_loader, target_classname, THREAD)) { |
275 if (log_develop_is_enabled(Trace, vtables)) { |
275 if (log_develop_is_enabled(Trace, vtables)) { |
276 ResourceMark rm(THREAD); |
276 ResourceMark rm(THREAD); |
277 outputStream* logst = LogHandle(vtables)::trace_stream(); |
277 outputStream* logst = Log(vtables)::trace_stream(); |
278 char* sig = target_method()->name_and_sig_as_C_string(); |
278 char* sig = target_method()->name_and_sig_as_C_string(); |
279 logst->print("transitive overriding superclass %s with %s::%s index %d, original flags: ", |
279 logst->print("transitive overriding superclass %s with %s::%s index %d, original flags: ", |
280 supersuperklass->internal_name(), |
280 supersuperklass->internal_name(), |
281 _klass->internal_name(), sig, vtable_index); |
281 _klass->internal_name(), sig, vtable_index); |
282 super_method->print_linkage_flags(logst); |
282 super_method->print_linkage_flags(logst); |
303 KlassHandle target_klass, Method* super_method, |
303 KlassHandle target_klass, Method* super_method, |
304 Thread* thread) { |
304 Thread* thread) { |
305 #ifndef PRODUCT |
305 #ifndef PRODUCT |
306 if (log_develop_is_enabled(Trace, vtables)) { |
306 if (log_develop_is_enabled(Trace, vtables)) { |
307 ResourceMark rm(thread); |
307 ResourceMark rm(thread); |
308 outputStream* logst = LogHandle(vtables)::trace_stream(); |
308 outputStream* logst = Log(vtables)::trace_stream(); |
309 char* sig = target_method()->name_and_sig_as_C_string(); |
309 char* sig = target_method()->name_and_sig_as_C_string(); |
310 if (overrides) { |
310 if (overrides) { |
311 logst->print("overriding with %s::%s index %d, original flags: ", |
311 logst->print("overriding with %s::%s index %d, original flags: ", |
312 target_klass->internal_name(), sig, i); |
312 target_klass->internal_name(), sig, i); |
313 } else { |
313 } else { |
491 } |
491 } |
492 |
492 |
493 void klassVtable::put_method_at(Method* m, int index) { |
493 void klassVtable::put_method_at(Method* m, int index) { |
494 if (log_develop_is_enabled(Trace, vtables)) { |
494 if (log_develop_is_enabled(Trace, vtables)) { |
495 ResourceMark rm; |
495 ResourceMark rm; |
496 outputStream* logst = LogHandle(vtables)::trace_stream(); |
496 outputStream* logst = Log(vtables)::trace_stream(); |
497 const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>"; |
497 const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>"; |
498 logst->print("adding %s at index %d, flags: ", sig, index); |
498 logst->print("adding %s at index %d, flags: ", sig, index); |
499 if (m != NULL) { |
499 if (m != NULL) { |
500 m->print_linkage_flags(logst); |
500 m->print_linkage_flags(logst); |
501 } |
501 } |
819 ik()->default_methods(), ik()->local_interfaces()); |
819 ik()->default_methods(), ik()->local_interfaces()); |
820 for (int i = 0; i < mirandas.length(); i++) { |
820 for (int i = 0; i < mirandas.length(); i++) { |
821 if (log_develop_is_enabled(Trace, vtables)) { |
821 if (log_develop_is_enabled(Trace, vtables)) { |
822 Method* meth = mirandas.at(i); |
822 Method* meth = mirandas.at(i); |
823 ResourceMark rm(Thread::current()); |
823 ResourceMark rm(Thread::current()); |
824 outputStream* logst = LogHandle(vtables)::trace_stream(); |
824 outputStream* logst = Log(vtables)::trace_stream(); |
825 if (meth != NULL) { |
825 if (meth != NULL) { |
826 char* sig = meth->name_and_sig_as_C_string(); |
826 char* sig = meth->name_and_sig_as_C_string(); |
827 logst->print("fill in mirandas with %s index %d, flags: ", |
827 logst->print("fill in mirandas with %s index %d, flags: ", |
828 sig, initialized); |
828 sig, initialized); |
829 meth->print_linkage_flags(logst); |
829 meth->print_linkage_flags(logst); |
1043 if (interface_method_needs_itable_index(m)) { |
1043 if (interface_method_needs_itable_index(m)) { |
1044 assert(!m->is_final_method(), "no final interface methods"); |
1044 assert(!m->is_final_method(), "no final interface methods"); |
1045 // If m is already assigned a vtable index, do not disturb it. |
1045 // If m is already assigned a vtable index, do not disturb it. |
1046 if (log_develop_is_enabled(Trace, itables)) { |
1046 if (log_develop_is_enabled(Trace, itables)) { |
1047 ResourceMark rm; |
1047 ResourceMark rm; |
1048 outputStream* logst = LogHandle(itables)::trace_stream(); |
1048 outputStream* logst = Log(itables)::trace_stream(); |
1049 assert(m != NULL, "methods can never be null"); |
1049 assert(m != NULL, "methods can never be null"); |
1050 const char* sig = m->name_and_sig_as_C_string(); |
1050 const char* sig = m->name_and_sig_as_C_string(); |
1051 if (m->has_vtable_index()) { |
1051 if (m->has_vtable_index()) { |
1052 logst->print("vtable index %d for method: %s, flags: ", m->vtable_index(), sig); |
1052 logst->print("vtable index %d for method: %s, flags: ", m->vtable_index(), sig); |
1053 } else { |
1053 } else { |
1159 assert(ime_num < ime_count, "oob"); |
1159 assert(ime_num < ime_count, "oob"); |
1160 itableOffsetEntry::method_entry(_klass(), method_table_offset)[ime_num].initialize(target()); |
1160 itableOffsetEntry::method_entry(_klass(), method_table_offset)[ime_num].initialize(target()); |
1161 if (log_develop_is_enabled(Trace, itables)) { |
1161 if (log_develop_is_enabled(Trace, itables)) { |
1162 ResourceMark rm(THREAD); |
1162 ResourceMark rm(THREAD); |
1163 if (target() != NULL) { |
1163 if (target() != NULL) { |
1164 outputStream* logst = LogHandle(itables)::trace_stream(); |
1164 outputStream* logst = Log(itables)::trace_stream(); |
1165 char* sig = target()->name_and_sig_as_C_string(); |
1165 char* sig = target()->name_and_sig_as_C_string(); |
1166 logst->print("interface: %s, ime_num: %d, target: %s, method_holder: %s ", |
1166 logst->print("interface: %s, ime_num: %d, target: %s, method_holder: %s ", |
1167 interf_h()->internal_name(), ime_num, sig, |
1167 interf_h()->internal_name(), ime_num, sig, |
1168 target()->method_holder()->internal_name()); |
1168 target()->method_holder()->internal_name()); |
1169 logst->print("target_method flags: "); |
1169 logst->print("target_method flags: "); |