changeset 21153:1621af5cb444

Print Graal installed code name when printing frames or diassembly
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Wed, 29 Apr 2015 14:41:03 +0200
parents d7361045859a
children 271eee87201c
files src/share/vm/code/nmethod.cpp src/share/vm/code/nmethod.hpp src/share/vm/compiler/disassembler.cpp src/share/vm/runtime/frame.cpp
diffstat 4 files changed, 39 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/code/nmethod.cpp	Wed Apr 29 14:39:48 2015 +0200
+++ b/src/share/vm/code/nmethod.cpp	Wed Apr 29 14:41:03 2015 +0200
@@ -3523,3 +3523,26 @@
   Dependencies::print_statistics();
   if (xtty != NULL)  xtty->tail("statistics");
 }
+
+#ifdef GRAAL
+char* nmethod::graal_installed_code_name(char* buf, size_t buflen) {
+  if (!this->is_compiled_by_graal()) {
+    return NULL;
+  }
+  oop installedCode = this->graal_installed_code();
+  if (installedCode != NULL) {
+    oop installedCodeName = NULL;
+    if (installedCode->is_a(InstalledCode::klass())) {
+      installedCodeName = InstalledCode::name(installedCode);
+    }
+    if (installedCodeName != NULL) {
+      return java_lang_String::as_utf8_string(installedCodeName, buf, buflen);
+    } else {
+      jio_snprintf(buf, buflen, "null");
+      return buf;
+    }
+  }
+  jio_snprintf(buf, buflen, "noInstalledCode");
+  return buf;
+}
+#endif
--- a/src/share/vm/code/nmethod.hpp	Wed Apr 29 14:39:48 2015 +0200
+++ b/src/share/vm/code/nmethod.hpp	Wed Apr 29 14:41:03 2015 +0200
@@ -628,6 +628,7 @@
 
 #ifdef GRAAL
   oop graal_installed_code() { return _graal_installed_code ; }
+  char* graal_installed_code_name(char* buf, size_t buflen);
   void set_graal_installed_code(oop installed_code) { _graal_installed_code = installed_code;  }
   oop speculation_log() { return _speculation_log ; }
   void set_speculation_log(oop speculation_log) { _speculation_log = speculation_log;  }
--- a/src/share/vm/compiler/disassembler.cpp	Wed Apr 29 14:39:48 2015 +0200
+++ b/src/share/vm/compiler/disassembler.cpp	Wed Apr 29 14:41:03 2015 +0200
@@ -529,6 +529,15 @@
   nm->method()->method_holder()->name()->print_symbol_on(env.output());
   env.output()->print(".");
   nm->method()->name()->print_symbol_on(env.output());
+#ifdef GRAAL
+  {
+    char buffer[O_BUFLEN];
+    char* graalName = nm->graal_installed_code_name(buffer, O_BUFLEN);
+    if (graalName != NULL) {
+      env.output()->print(" (%s)", graalName);
+    }
+  }
+#endif
   env.output()->print_cr("  [" PTR_FORMAT ", " PTR_FORMAT "]  %d bytes", p, end, ((jlong)(end - p)));
 
   // If there has been profiling, print the buckets.
--- a/src/share/vm/runtime/frame.cpp	Wed Apr 29 14:39:48 2015 +0200
+++ b/src/share/vm/runtime/frame.cpp	Wed Apr 29 14:41:03 2015 +0200
@@ -734,6 +734,12 @@
                   nm->compile_id(), (nm->is_osr_method() ? "%" : ""),
                   ((nm->compiler() != NULL) ? nm->compiler()->name() : ""),
                   buf, m->code_size(), _pc, _cb->code_begin(), _pc - _cb->code_begin());
+#ifdef GRAAL
+        char* graalName = nm->graal_installed_code_name(buf, buflen);
+        if (graalName != NULL) {
+          st->print(" (%s)", graalName);
+        }
+#endif
       } else {
         st->print("J  " PTR_FORMAT, pc());
       }