323 return;
324 }
325
326 if (Universe::is_fully_initialized()) {
327 if (StubRoutines::contains(adr)) {
328 StubCodeDesc* desc = StubCodeDesc::desc_for(adr);
329 if (desc == NULL)
330 desc = StubCodeDesc::desc_for(adr + frame::pc_return_offset);
331 if (desc != NULL) {
332 st->print("Stub::%s", desc->name());
333 if (desc->begin() != adr)
334 st->print("%+d 0x%p",adr - desc->begin(), adr);
335 else if (WizardMode) st->print(" " PTR_FORMAT, adr);
336 return;
337 }
338 st->print("Stub::<unknown> " PTR_FORMAT, adr);
339 return;
340 }
341
342 BarrierSet* bs = Universe::heap()->barrier_set();
343 if (bs->kind() == BarrierSet::CardTableModRef &&
344 adr == (address)((CardTableModRefBS*)(bs))->byte_map_base) {
345 st->print("word_map_base");
346 if (WizardMode) st->print(" " INTPTR_FORMAT, (intptr_t)adr);
347 return;
348 }
349
350 oop obj;
351 if (_nm != NULL
352 && (obj = _nm->embeddedOop_at(cur_insn())) != NULL
353 && (address) obj == adr
354 && Universe::heap()->is_in(obj)
355 && Universe::heap()->is_in(obj->klass())) {
356 julong c = st->count();
357 obj->print_value_on(st);
358 if (st->count() == c) {
359 // No output. (Can happen in product builds.)
360 st->print("(a %s)", obj->klass()->external_name());
361 }
362 return;
363 }
364 }
|
323 return;
324 }
325
326 if (Universe::is_fully_initialized()) {
327 if (StubRoutines::contains(adr)) {
328 StubCodeDesc* desc = StubCodeDesc::desc_for(adr);
329 if (desc == NULL)
330 desc = StubCodeDesc::desc_for(adr + frame::pc_return_offset);
331 if (desc != NULL) {
332 st->print("Stub::%s", desc->name());
333 if (desc->begin() != adr)
334 st->print("%+d 0x%p",adr - desc->begin(), adr);
335 else if (WizardMode) st->print(" " PTR_FORMAT, adr);
336 return;
337 }
338 st->print("Stub::<unknown> " PTR_FORMAT, adr);
339 return;
340 }
341
342 BarrierSet* bs = Universe::heap()->barrier_set();
343 if (bs->is_a(BarrierSet::CardTableModRef) &&
344 adr == (address)(barrier_set_cast<CardTableModRefBS>(bs)->byte_map_base)) {
345 st->print("word_map_base");
346 if (WizardMode) st->print(" " INTPTR_FORMAT, (intptr_t)adr);
347 return;
348 }
349
350 oop obj;
351 if (_nm != NULL
352 && (obj = _nm->embeddedOop_at(cur_insn())) != NULL
353 && (address) obj == adr
354 && Universe::heap()->is_in(obj)
355 && Universe::heap()->is_in(obj->klass())) {
356 julong c = st->count();
357 obj->print_value_on(st);
358 if (st->count() == c) {
359 // No output. (Can happen in product builds.)
360 st->print("(a %s)", obj->klass()->external_name());
361 }
362 return;
363 }
364 }
|