861 st->print_cr(INTPTR_FORMAT " is pointing into InlineCacheBuffer", addr);
862 return;
863 }
864 VtableStub* v = VtableStubs::stub_containing(addr);
865 if (v != NULL) {
866 st->print_cr(INTPTR_FORMAT " is at entry_point+%d in a vtable stub", addr, (int)(addr - v->entry_point()));
867 v->print_on(st);
868 st->cr();
869 return;
870 }
871 }
872 nmethod* nm = b->as_nmethod_or_null();
873 if (nm != NULL) {
874 ResourceMark rm;
875 st->print(INTPTR_FORMAT " is at entry_point+%d in (nmethod*)" INTPTR_FORMAT,
876 addr, (int)(addr - nm->entry_point()), nm);
877 if (verbose) {
878 st->print(" for ");
879 nm->method()->print_value_on(st);
880 }
881 nm->print_nmethod(verbose);
882 return;
883 }
884 st->print_cr(INTPTR_FORMAT " is at code_begin+%d in ", addr, (int)(addr - b->code_begin()));
885 b->print_on(st);
886 return;
887 }
888
889 if (Universe::heap()->is_in(addr)) {
890 HeapWord* p = Universe::heap()->block_start(addr);
891 bool print = false;
892 // If we couldn't find it it just may mean that heap wasn't parseable
893 // See if we were just given an oop directly
894 if (p != NULL && Universe::heap()->block_is_obj(p)) {
895 print = true;
896 } else if (p == NULL && ((oopDesc*)addr)->is_oop()) {
897 p = (HeapWord*) addr;
898 print = true;
899 }
900 if (print) {
|
861 st->print_cr(INTPTR_FORMAT " is pointing into InlineCacheBuffer", addr);
862 return;
863 }
864 VtableStub* v = VtableStubs::stub_containing(addr);
865 if (v != NULL) {
866 st->print_cr(INTPTR_FORMAT " is at entry_point+%d in a vtable stub", addr, (int)(addr - v->entry_point()));
867 v->print_on(st);
868 st->cr();
869 return;
870 }
871 }
872 nmethod* nm = b->as_nmethod_or_null();
873 if (nm != NULL) {
874 ResourceMark rm;
875 st->print(INTPTR_FORMAT " is at entry_point+%d in (nmethod*)" INTPTR_FORMAT,
876 addr, (int)(addr - nm->entry_point()), nm);
877 if (verbose) {
878 st->print(" for ");
879 nm->method()->print_value_on(st);
880 }
881 st->cr();
882 nm->print_nmethod(verbose);
883 return;
884 }
885 st->print_cr(INTPTR_FORMAT " is at code_begin+%d in ", addr, (int)(addr - b->code_begin()));
886 b->print_on(st);
887 return;
888 }
889
890 if (Universe::heap()->is_in(addr)) {
891 HeapWord* p = Universe::heap()->block_start(addr);
892 bool print = false;
893 // If we couldn't find it it just may mean that heap wasn't parseable
894 // See if we were just given an oop directly
895 if (p != NULL && Universe::heap()->block_is_obj(p)) {
896 print = true;
897 } else if (p == NULL && ((oopDesc*)addr)->is_oop()) {
898 p = (HeapWord*) addr;
899 print = true;
900 }
901 if (print) {
|