< prev index next >
src/share/vm/compiler/disassembler.cpp
Print this page
@@ -485,12 +485,18 @@
}
void Disassembler::decode(CodeBlob* cb, outputStream* st) {
if (!load_library()) return;
+ if (cb->is_nmethod()) {
+ decode((nmethod*)cb, st);
+ return;
+ }
decode_env env(cb, st);
- env.output()->print_cr("Decoding CodeBlob " PTR_FORMAT, cb);
+ env.output()->print_cr("----------------------------------------------------------------------");
+ env.output()->print_cr("%s", cb->name());
+ env.output()->print_cr(" at [" PTR_FORMAT ", " PTR_FORMAT "] %d bytes", cb->code_begin(), cb->code_end(), ((jlong)(cb->code_end() - cb->code_begin())) * sizeof(unsigned char*));
env.decode_instructions(cb->code_begin(), cb->code_end());
}
void Disassembler::decode(address start, address end, outputStream* st, CodeStrings c) {
if (!load_library()) return;
@@ -499,22 +505,36 @@
}
void Disassembler::decode(nmethod* nm, outputStream* st) {
if (!load_library()) return;
decode_env env(nm, st);
- env.output()->print_cr("Decoding compiled method " PTR_FORMAT ":", nm);
- env.output()->print_cr("Code:");
+ env.output()->print_cr("----------------------------------------------------------------------");
#ifdef SHARK
SharkEntry* entry = (SharkEntry *) nm->code_begin();
unsigned char* p = entry->code_start();
unsigned char* end = entry->code_limit();
#else
unsigned char* p = nm->code_begin();
unsigned char* end = nm->code_end();
#endif // SHARK
+ nm->method()->method_holder()->name()->print_symbol_on(env.output());
+ env.output()->print(".");
+ nm->method()->name()->print_symbol_on(env.output());
+ nm->method()->signature()->print_symbol_on(env.output());
+#if INCLUDE_JVMCI
+ {
+ char buffer[O_BUFLEN];
+ char* jvmciName = nm->jvmci_installed_code_name(buffer, O_BUFLEN);
+ if (jvmciName != NULL) {
+ env.output()->print(" (%s)", jvmciName);
+ }
+ }
+#endif
+ env.output()->print_cr(" [" PTR_FORMAT ", " PTR_FORMAT "] %d bytes", p, end, ((jlong)(end - p)));
+
// If there has been profiling, print the buckets.
if (FlatProfiler::bucket_start_for(p) != NULL) {
unsigned char* p1 = p;
int total_bucket_count = 0;
while (p1 < end) {
< prev index next >