hotspot/src/share/vm/runtime/os.cpp
changeset 13391 30245956af37
parent 13195 be27e1b6a4b9
child 13728 882756847a04
equal deleted inserted replaced
13309:50c604cb0d5f 13391:30245956af37
   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)) {