820 if (b != NULL) { |
820 if (b != NULL) { |
821 if (b->is_buffer_blob()) { |
821 if (b->is_buffer_blob()) { |
822 // the interpreter is generated into a buffer blob |
822 // the interpreter is generated into a buffer blob |
823 InterpreterCodelet* i = Interpreter::codelet_containing(addr); |
823 InterpreterCodelet* i = Interpreter::codelet_containing(addr); |
824 if (i != NULL) { |
824 if (i != NULL) { |
825 st->print_cr(INTPTR_FORMAT " is an Interpreter codelet", addr); |
825 st->print_cr(INTPTR_FORMAT " is at code_begin+%d in an Interpreter codelet", addr, (int)(addr - i->code_begin())); |
826 i->print_on(st); |
826 i->print_on(st); |
827 return; |
827 return; |
828 } |
828 } |
829 if (Interpreter::contains(addr)) { |
829 if (Interpreter::contains(addr)) { |
830 st->print_cr(INTPTR_FORMAT " is pointing into interpreter code" |
830 st->print_cr(INTPTR_FORMAT " is pointing into interpreter code" |
831 " (not bytecode specific)", addr); |
831 " (not bytecode specific)", addr); |
832 return; |
832 return; |
833 } |
833 } |
834 // |
834 // |
835 if (AdapterHandlerLibrary::contains(b)) { |
835 if (AdapterHandlerLibrary::contains(b)) { |
836 st->print_cr(INTPTR_FORMAT " is an AdapterHandler", addr); |
836 st->print_cr(INTPTR_FORMAT " is at code_begin+%d in an AdapterHandler", addr, (int)(addr - b->code_begin())); |
837 AdapterHandlerLibrary::print_handler_on(st, b); |
837 AdapterHandlerLibrary::print_handler_on(st, b); |
838 } |
838 } |
839 // the stubroutines are generated into a buffer blob |
839 // the stubroutines are generated into a buffer blob |
840 StubCodeDesc* d = StubCodeDesc::desc_for(addr); |
840 StubCodeDesc* d = StubCodeDesc::desc_for(addr); |
841 if (d != NULL) { |
841 if (d != NULL) { |
|
842 st->print_cr(INTPTR_FORMAT " is at begin+%d in a stub", addr, (int)(addr - d->begin())); |
842 d->print_on(st); |
843 d->print_on(st); |
843 if (verbose) st->cr(); |
844 st->cr(); |
844 return; |
845 return; |
845 } |
846 } |
846 if (StubRoutines::contains(addr)) { |
847 if (StubRoutines::contains(addr)) { |
847 st->print_cr(INTPTR_FORMAT " is pointing to an (unnamed) " |
848 st->print_cr(INTPTR_FORMAT " is pointing to an (unnamed) " |
848 "stub routine", addr); |
849 "stub routine", addr); |
853 st->print_cr(INTPTR_FORMAT " is pointing into InlineCacheBuffer", addr); |
854 st->print_cr(INTPTR_FORMAT " is pointing into InlineCacheBuffer", addr); |
854 return; |
855 return; |
855 } |
856 } |
856 VtableStub* v = VtableStubs::stub_containing(addr); |
857 VtableStub* v = VtableStubs::stub_containing(addr); |
857 if (v != NULL) { |
858 if (v != NULL) { |
|
859 st->print_cr(INTPTR_FORMAT " is at entry_point+%d in a vtable stub", addr, (int)(addr - v->entry_point())); |
858 v->print_on(st); |
860 v->print_on(st); |
|
861 st->cr(); |
859 return; |
862 return; |
860 } |
863 } |
861 } |
864 } |
862 if (verbose && b->is_nmethod()) { |
865 nmethod* nm = b->as_nmethod_or_null(); |
|
866 if (nm != NULL) { |
863 ResourceMark rm; |
867 ResourceMark rm; |
864 st->print("%#p: Compiled ", addr); |
868 st->print(INTPTR_FORMAT " is at entry_point+%d in (nmethod*)" INTPTR_FORMAT, |
865 ((nmethod*)b)->method()->print_value_on(st); |
869 addr, (int)(addr - nm->entry_point()), nm); |
866 st->print(" = (CodeBlob*)" INTPTR_FORMAT, b); |
870 if (verbose) { |
867 st->cr(); |
871 st->print(" for "); |
|
872 nm->method()->print_value_on(st); |
|
873 } |
|
874 nm->print_nmethod(verbose); |
868 return; |
875 return; |
869 } |
876 } |
870 st->print(INTPTR_FORMAT " ", b); |
877 st->print_cr(INTPTR_FORMAT " is at code_begin+%d in ", addr, (int)(addr - b->code_begin())); |
871 if ( b->is_nmethod()) { |
|
872 if (b->is_zombie()) { |
|
873 st->print_cr("is zombie nmethod"); |
|
874 } else if (b->is_not_entrant()) { |
|
875 st->print_cr("is non-entrant nmethod"); |
|
876 } |
|
877 } |
|
878 b->print_on(st); |
878 b->print_on(st); |
879 return; |
879 return; |
880 } |
880 } |
881 |
881 |
882 if (Universe::heap()->is_in(addr)) { |
882 if (Universe::heap()->is_in(addr)) { |