# HG changeset patch # User Gilles Duboscq # Date 1430311263 -7200 # Node ID 1621af5cb444dc29d15cd077e881c851c3f756b0 # Parent d7361045859a1c55ffab6d8c45ca58f9b03e56f4 Print Graal installed code name when printing frames or diassembly diff -r d7361045859a -r 1621af5cb444 src/share/vm/code/nmethod.cpp --- 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 diff -r d7361045859a -r 1621af5cb444 src/share/vm/code/nmethod.hpp --- 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; } diff -r d7361045859a -r 1621af5cb444 src/share/vm/compiler/disassembler.cpp --- 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. diff -r d7361045859a -r 1621af5cb444 src/share/vm/runtime/frame.cpp --- 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()); }