8075270: Print locals & stack slots location for PcDescs

Reviewed-by: kvn, jrose
This commit is contained in:
Vladimir Ivanov 2015-03-20 11:41:34 -07:00
parent 9755168fe2
commit e53337224d
2 changed files with 15 additions and 16 deletions

View file

@ -54,12 +54,7 @@ void PcDesc::print(nmethod* code) {
for (ScopeDesc* sd = code->scope_desc_at(real_pc(code)); for (ScopeDesc* sd = code->scope_desc_at(real_pc(code));
sd != NULL; sd != NULL;
sd = sd->sender()) { sd = sd->sender()) {
tty->print(" "); sd->print_on(tty);
sd->method()->print_short_name(tty);
tty->print(" @%d", sd->bci());
if (sd->should_reexecute())
tty->print(" reexecute=true");
tty->cr();
} }
#endif #endif
} }

View file

@ -157,14 +157,18 @@ ScopeDesc* ScopeDesc::sender() const {
#ifndef PRODUCT #ifndef PRODUCT
void ScopeDesc::print_value_on(outputStream* st) const { void ScopeDesc::print_value_on(outputStream* st) const {
tty->print(" "); st->print(" ");
method()->print_short_name(st); method()->print_short_name(st);
int lineno = method()->line_number_from_bci(bci()); int lineno = method()->line_number_from_bci(bci());
if (lineno != -1) { if (lineno != -1) {
st->print_cr("@%d (line %d)", bci(), lineno); st->print("@%d (line %d)", bci(), lineno);
} else { } else {
st->print_cr("@%d", bci()); st->print("@%d", bci());
} }
if (should_reexecute()) {
st->print(" reexecute=true");
}
st->cr();
} }
void ScopeDesc::print_on(outputStream* st) const { void ScopeDesc::print_on(outputStream* st) const {
@ -174,7 +178,7 @@ void ScopeDesc::print_on(outputStream* st) const {
void ScopeDesc::print_on(outputStream* st, PcDesc* pd) const { void ScopeDesc::print_on(outputStream* st, PcDesc* pd) const {
// header // header
if (pd != NULL) { if (pd != NULL) {
tty->print_cr("ScopeDesc(pc=" PTR_FORMAT " offset=%x):", pd->real_pc(_code), pd->pc_offset()); st->print_cr("ScopeDesc(pc=" PTR_FORMAT " offset=%x):", pd->real_pc(_code), pd->pc_offset());
} }
print_value_on(st); print_value_on(st);
@ -192,7 +196,7 @@ void ScopeDesc::print_on(outputStream* st, PcDesc* pd) const {
// locals // locals
{ GrowableArray<ScopeValue*>* l = ((ScopeDesc*) this)->locals(); { GrowableArray<ScopeValue*>* l = ((ScopeDesc*) this)->locals();
if (l != NULL) { if (l != NULL) {
tty->print_cr(" Locals"); st->print_cr(" Locals");
for (int index = 0; index < l->length(); index++) { for (int index = 0; index < l->length(); index++) {
st->print(" - l%d: ", index); st->print(" - l%d: ", index);
l->at(index)->print_on(st); l->at(index)->print_on(st);
@ -225,12 +229,12 @@ void ScopeDesc::print_on(outputStream* st, PcDesc* pd) const {
#ifdef COMPILER2 #ifdef COMPILER2
if (DoEscapeAnalysis && is_top() && _objects != NULL) { if (DoEscapeAnalysis && is_top() && _objects != NULL) {
tty->print_cr("Objects"); st->print_cr(" Objects");
for (int i = 0; i < _objects->length(); i++) { for (int i = 0; i < _objects->length(); i++) {
ObjectValue* sv = (ObjectValue*) _objects->at(i); ObjectValue* sv = (ObjectValue*) _objects->at(i);
tty->print(" - %d: ", sv->id()); st->print(" - %d: ", sv->id());
sv->print_fields_on(tty); sv->print_fields_on(st);
tty->cr(); st->cr();
} }
} }
#endif // COMPILER2 #endif // COMPILER2