This commit is contained in:
Dean Long 2015-10-17 19:40:30 -04:00
commit 344a9becee
539 changed files with 51665 additions and 1091 deletions

View file

@ -491,8 +491,14 @@ address decode_env::decode_instructions(address start, address end) {
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, p2i(cb));
env.output()->print_cr("----------------------------------------------------------------------");
env.output()->print_cr("%s", cb->name());
env.output()->print_cr(" at [" PTR_FORMAT ", " PTR_FORMAT "] " JLONG_FORMAT " bytes", p2i(cb->code_begin()), p2i(cb->code_end()), ((jlong)(cb->code_end() - cb->code_begin())) * sizeof(unsigned char*));
env.decode_instructions(cb->code_begin(), cb->code_end());
}
@ -505,8 +511,7 @@ void Disassembler::decode(address start, address end, outputStream* st, CodeStri
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 ":", p2i(nm));
env.output()->print_cr("Code:");
env.output()->print_cr("----------------------------------------------------------------------");
#ifdef SHARK
SharkEntry* entry = (SharkEntry *) nm->code_begin();
@ -517,6 +522,21 @@ void Disassembler::decode(nmethod* nm, outputStream* st) {
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 "] " JLONG_FORMAT " bytes", p2i(p), p2i(end), ((jlong)(end - p)));
// If there has been profiling, print the buckets.
if (FlatProfiler::bucket_start_for(p) != NULL) {
unsigned char* p1 = p;