< prev index next >

src/hotspot/share/compiler/disassembler.cpp

Print this page

589 
590   if (Universe::is_fully_initialized()) {
591     if (StubRoutines::contains(adr)) {
592       StubCodeDesc* desc = StubCodeDesc::desc_for(adr);
593       if (desc == nullptr) {
594         desc = StubCodeDesc::desc_for(adr + frame::pc_return_offset);
595       }
596       if (desc != nullptr) {
597         st->print("Stub::%s", desc->name());
598         if (desc->begin() != adr) {
599           st->print(INTX_FORMAT_W(+) " " PTR_FORMAT, adr - desc->begin(), p2i(adr));
600         } else if (WizardMode) {
601           st->print(" " PTR_FORMAT, p2i(adr));
602         }
603         return;
604       }
605       st->print("Stub::<unknown> " PTR_FORMAT, p2i(adr));
606       return;
607     }
608 
609     BarrierSet* bs = BarrierSet::barrier_set();
610     if (bs->is_a(BarrierSet::CardTableBarrierSet) &&
611         adr == ci_card_table_address_as<address>()) {
612       st->print("word_map_base");
613       if (WizardMode) st->print(" " INTPTR_FORMAT, p2i(adr));
614       return;
615     }
616   }
617 
618   if (_nm == nullptr) {
619     // Don't do this for native methods, as the function name will be printed in
620     // nmethod::reloc_string_for().
621     // Allocate the buffer on the stack instead of as RESOURCE array.
622     // In case we do DecodeErrorFile, Thread will not be initialized,
623     // causing a "assert(current != __null) failed" failure.
624     const int buflen = 1024;
625     char buf[buflen];
626     int offset;
627     if (os::dll_address_to_function_name(adr, buf, buflen, &offset)) {
628       st->print(PTR_FORMAT " = %s",  p2i(adr), buf);
629       if (offset != 0) {
630         st->print("+%d", offset);
631       }

589 
590   if (Universe::is_fully_initialized()) {
591     if (StubRoutines::contains(adr)) {
592       StubCodeDesc* desc = StubCodeDesc::desc_for(adr);
593       if (desc == nullptr) {
594         desc = StubCodeDesc::desc_for(adr + frame::pc_return_offset);
595       }
596       if (desc != nullptr) {
597         st->print("Stub::%s", desc->name());
598         if (desc->begin() != adr) {
599           st->print(INTX_FORMAT_W(+) " " PTR_FORMAT, adr - desc->begin(), p2i(adr));
600         } else if (WizardMode) {
601           st->print(" " PTR_FORMAT, p2i(adr));
602         }
603         return;
604       }
605       st->print("Stub::<unknown> " PTR_FORMAT, p2i(adr));
606       return;
607     }
608 
609     if (is_card_table_address(adr)) {


610       st->print("word_map_base");
611       if (WizardMode) st->print(" " INTPTR_FORMAT, p2i(adr));
612       return;
613     }
614   }
615 
616   if (_nm == nullptr) {
617     // Don't do this for native methods, as the function name will be printed in
618     // nmethod::reloc_string_for().
619     // Allocate the buffer on the stack instead of as RESOURCE array.
620     // In case we do DecodeErrorFile, Thread will not be initialized,
621     // causing a "assert(current != __null) failed" failure.
622     const int buflen = 1024;
623     char buf[buflen];
624     int offset;
625     if (os::dll_address_to_function_name(adr, buf, buflen, &offset)) {
626       st->print(PTR_FORMAT " = %s",  p2i(adr), buf);
627       if (offset != 0) {
628         st->print("+%d", offset);
629       }
< prev index next >