src/share/vm/interpreter/linkResolver.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/interpreter/linkResolver.cpp	Tue Dec  1 17:44:25 2015
--- new/src/share/vm/interpreter/linkResolver.cpp	Tue Dec  1 17:44:25 2015

*** 29,38 **** --- 29,39 ---- #include "compiler/compileBroker.hpp" #include "gc/shared/collectedHeap.inline.hpp" #include "interpreter/bytecode.hpp" #include "interpreter/interpreterRuntime.hpp" #include "interpreter/linkResolver.hpp" + #include "logging/log.hpp" #include "memory/resourceArea.hpp" #include "memory/universe.inline.hpp" #include "oops/instanceKlass.hpp" #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp"
*** 781,794 **** --- 782,797 ---- Method::name_and_sig_as_C_string(resolved_klass(), resolved_method->name(), resolved_method->signature())); THROW_MSG_NULL(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); } ! if (TraceItables && Verbose) { trace_method_resolution("invokeinterface resolved method: caller-class", ! if (develop_log_is_enabled(Trace, itables)) { + ResourceMark rm; + outputStream* logst = LogHandle(itables)::trace_stream(); + trace_method_resolution(logst, "invokeinterface resolved method: caller-class", link_info.current_klass(), resolved_klass, resolved_method); ! tty->cr(); ! logst->cr(); } return resolved_method; }
*** 1029,1042 **** --- 1032,1047 ---- resolved_method->name(), resolved_method->signature())); THROW_MSG_NULL(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); } ! if (TraceItables && Verbose) { trace_method_resolution("invokespecial resolved method: caller-class:", ! if (develop_log_is_enabled(Trace, itables)) { + ResourceMark rm; + outputStream* logst = LogHandle(itables)::trace_stream(); + trace_method_resolution(logst, "invokespecial resolved method: caller-class:", current_klass, resolved_klass, resolved_method); ! tty->cr(); ! logst->cr(); } return resolved_method; }
*** 1101,1114 **** --- 1106,1121 ---- Method::name_and_sig_as_C_string(resolved_klass(), sel_method->name(), sel_method->signature())); } ! if (TraceItables && Verbose) { trace_method_resolution("invokespecial selected method: resolved-class:", ! if (develop_log_is_enabled(Trace, itables)) { + ResourceMark rm; + outputStream* logst = LogHandle(itables)::trace_stream(); + trace_method_resolution(logst, "invokespecial selected method: resolved-class:", resolved_klass, resolved_klass, sel_method); ! tty->cr(); ! logst->cr(); } // setup result result.set_static(resolved_klass, sel_method, CHECK); }
*** 1155,1168 **** --- 1162,1177 ---- resolved_method->name(), resolved_method->signature())); THROW_MSG_NULL(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); } ! if (PrintVtables && Verbose) { trace_method_resolution("invokevirtual resolved method: caller-class:", ! if (develop_log_is_enabled(Trace, vtables)) { + ResourceMark rm(THREAD); + outputStream* logst = LogHandle(vtables)::trace_stream(); + trace_method_resolution(logst, "invokevirtual resolved method: caller-class:", current_klass, resolved_klass, resolved_method); ! tty->cr(); ! logst->cr(); } return resolved_method; }
*** 1236,1249 **** --- 1245,1260 ---- Method::name_and_sig_as_C_string(resolved_klass(), selected_method->name(), selected_method->signature())); } ! if (PrintVtables && Verbose) { trace_method_resolution("invokevirtual selected method: receiver-class:", ! if (develop_log_is_enabled(Trace, vtables)) { + ResourceMark rm; + outputStream* logst = LogHandle(vtables)::trace_stream(); + trace_method_resolution(logst, "invokevirtual selected method: receiver-class:", recv_klass, resolved_klass, selected_method); ! tty->print_cr("vtable_index:%d", vtable_index); ! logst->print_cr("vtable_index:%d", vtable_index); } // setup result result.set_virtual(resolved_klass, recv_klass, resolved_method, selected_method, vtable_index, CHECK); }
*** 1335,1348 **** --- 1346,1361 ---- Method::name_and_sig_as_C_string(recv_klass(), sel_method->name(), sel_method->signature())); } ! if (TraceItables && Verbose) { trace_method_resolution("invokeinterface selected method: receiver-class", ! if (develop_log_is_enabled(Trace, itables)) { + ResourceMark rm; + outputStream* logst = LogHandle(itables)::trace_stream(); + trace_method_resolution(logst, "invokeinterface selected method: receiver-class", recv_klass, resolved_klass, sel_method); ! tty->cr(); ! logst->cr(); } // setup result if (!resolved_method->has_itable_index()) { int vtable_index = resolved_method->vtable_index(); assert(vtable_index == sel_method->vtable_index(), "sanity check");
*** 1587,1614 **** --- 1600,1628 ---- result.set_handle(resolved_method, resolved_appendix, resolved_method_type, THREAD); wrap_invokedynamic_exception(CHECK); } #ifndef PRODUCT void LinkResolver::trace_method_resolution(const char* prefix, + // Must call with a ResourceMark + void LinkResolver::trace_method_resolution(outputStream* st, + const char* prefix, KlassHandle klass, KlassHandle resolved_klass, const methodHandle& method) { ResourceMark rm; tty->print("%s%s, compile-time-class:%s, method:%s, method_holder:%s, access_flags: ", + st->print("%s%s, compile-time-class:%s, method:%s, method_holder:%s, access_flags: ", prefix, (klass.is_null() ? "<NULL>" : klass->internal_name()), (resolved_klass.is_null() ? "<NULL>" : resolved_klass->internal_name()), Method::name_and_sig_as_C_string(resolved_klass(), method->name(), method->signature()), method->method_holder()->internal_name() ); ! method->access_flags().print_on(tty); ! method->access_flags().print_on(st); if (method->is_default_method()) { ! tty->print("default "); ! st->print("default "); } if (method->is_overpass()) { ! tty->print("overpass "); ! st->print("overpass "); } } #endif // PRODUCT

src/share/vm/interpreter/linkResolver.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File