diff -r 377508648226 -r 65d07d9ee446 src/share/vm/prims/methodHandles.hpp --- a/src/share/vm/prims/methodHandles.hpp Mon Oct 08 13:02:13 2012 -0700 +++ b/src/share/vm/prims/methodHandles.hpp Mon Oct 08 17:04:00 2012 -0700 @@ -196,7 +196,27 @@ # include "methodHandles_ppc.hpp" #endif - + // Tracing + static void trace_method_handle(MacroAssembler* _masm, const char* adaptername) PRODUCT_RETURN; + static void trace_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid) { + if (TraceMethodHandles) { + const char* name = vmIntrinsics::name_at(iid); + if (*name == '_') name += 1; + const size_t len = strlen(name) + 50; + char* qname = NEW_C_HEAP_ARRAY(char, len, mtInternal); + const char* suffix = ""; + if (is_signature_polymorphic(iid)) { + if (is_signature_polymorphic_static(iid)) + suffix = "/static"; + else + suffix = "/private"; + } + jio_snprintf(qname, len, "MethodHandle::interpreter_entry::%s%s", name, suffix); + trace_method_handle(_masm, qname); + // Note: Don't free the allocated char array because it's used + // during runtime. + } + } };