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