8144853: Print the names of callees in PrintAssembly/PrintInterpreter
Reviewed-by: dholmes, vlivanov
--- a/hotspot/src/share/vm/code/nmethod.cpp Tue Dec 15 17:57:08 2015 +0000
+++ b/hotspot/src/share/vm/code/nmethod.cpp Mon Dec 07 09:19:26 2015 -0800
@@ -41,6 +41,7 @@
#include "prims/jvmtiImpl.hpp"
#include "runtime/atomic.inline.hpp"
#include "runtime/orderAccess.inline.hpp"
+#include "runtime/os.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/sweeper.hpp"
#include "utilities/resourceHash.hpp"
@@ -3050,6 +3051,17 @@
CodeBlob* cb = CodeCache::find_blob(dest);
if (cb != NULL) {
st.print(" %s", cb->name());
+ } else {
+ ResourceMark rm;
+ const int buflen = 1024;
+ char* buf = NEW_RESOURCE_ARRAY(char, buflen);
+ int offset;
+ if (os::dll_address_to_function_name(dest, buf, buflen, &offset)) {
+ st.print(" %s", buf);
+ if (offset != 0) {
+ st.print("+%d", offset);
+ }
+ }
}
return st.as_string();
}
--- a/hotspot/src/share/vm/compiler/disassembler.cpp Tue Dec 15 17:57:08 2015 +0000
+++ b/hotspot/src/share/vm/compiler/disassembler.cpp Mon Dec 07 09:19:26 2015 -0800
@@ -360,6 +360,22 @@
}
}
+ if (_nm == NULL) {
+ // Don't do this for native methods, as the function name will be printed in
+ // nmethod::reloc_string_for().
+ ResourceMark rm;
+ const int buflen = 1024;
+ char* buf = NEW_RESOURCE_ARRAY(char, buflen);
+ int offset;
+ if (os::dll_address_to_function_name(adr, buf, buflen, &offset)) {
+ st->print(PTR_FORMAT " = %s", p2i(adr), buf);
+ if (offset != 0) {
+ st->print("+%d", offset);
+ }
+ return;
+ }
+ }
+
// Fall through to a simple (hexadecimal) numeral.
st->print(PTR_FORMAT, p2i(adr));
}