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("%+zd " 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("%+zd " 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 }
|