提交 1030e3b5 编写于 作者: K kvn

6925249: assert(last_sp < (intptr_t*) interpreter_frame_monitor_begin(),"bad tos")

Summary: Fix assert since top deoptimized frame has last_sp == interpreter_frame_monitor_begin if there are no expressions.
Reviewed-by: twisti
上级 a2b901e7
...@@ -233,7 +233,8 @@ inline intptr_t* frame::interpreter_frame_tos_address() const { ...@@ -233,7 +233,8 @@ inline intptr_t* frame::interpreter_frame_tos_address() const {
} else { } else {
// sp() may have been extended or shrunk by an adapter. At least // sp() may have been extended or shrunk by an adapter. At least
// check that we don't fall behind the legal region. // check that we don't fall behind the legal region.
assert(last_sp < (intptr_t*) interpreter_frame_monitor_begin(), "bad tos"); // For top deoptimized frame last_sp == interpreter_frame_monitor_end.
assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos");
return last_sp; return last_sp;
} }
} }
......
...@@ -938,21 +938,6 @@ vframeArray* Deoptimization::create_vframeArray(JavaThread* thread, frame fr, Re ...@@ -938,21 +938,6 @@ vframeArray* Deoptimization::create_vframeArray(JavaThread* thread, frame fr, Re
if (TraceDeoptimization) { if (TraceDeoptimization) {
ttyLocker ttyl; ttyLocker ttyl;
tty->print_cr(" Created vframeArray " INTPTR_FORMAT, array); tty->print_cr(" Created vframeArray " INTPTR_FORMAT, array);
if (Verbose) {
int count = 0;
// this used to leak deoptimizedVFrame like it was going out of style!!!
for (int index = 0; index < array->frames(); index++ ) {
vframeArrayElement* e = array->element(index);
e->print(tty);
/*
No printing yet.
array->vframe_at(index)->print_activation(count++);
// better as...
array->print_activation_for(index, count++);
*/
}
}
} }
#endif // PRODUCT #endif // PRODUCT
......
...@@ -606,12 +606,12 @@ void frame::interpreter_frame_print_on(outputStream* st) const { ...@@ -606,12 +606,12 @@ void frame::interpreter_frame_print_on(outputStream* st) const {
for (BasicObjectLock* current = interpreter_frame_monitor_end(); for (BasicObjectLock* current = interpreter_frame_monitor_end();
current < interpreter_frame_monitor_begin(); current < interpreter_frame_monitor_begin();
current = next_monitor_in_interpreter_frame(current)) { current = next_monitor_in_interpreter_frame(current)) {
st->print_cr(" [ - obj "); st->print(" - obj [");
current->obj()->print_value_on(st); current->obj()->print_value_on(st);
st->cr(); st->print_cr("]");
st->print_cr(" - lock "); st->print(" - lock [");
current->lock()->print_on(st); current->lock()->print_on(st);
st->cr(); st->print_cr("]");
} }
// monitor // monitor
st->print_cr(" - monitor[" INTPTR_FORMAT "]", interpreter_frame_monitor_begin()); st->print_cr(" - monitor[" INTPTR_FORMAT "]", interpreter_frame_monitor_begin());
......
/* /*
* Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. * Copyright 1997-2010 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -381,7 +381,6 @@ void vframeArrayElement::unpack_on_stack(int callee_parameters, ...@@ -381,7 +381,6 @@ void vframeArrayElement::unpack_on_stack(int callee_parameters,
RegisterMap map(thread); RegisterMap map(thread);
vframe* f = vframe::new_vframe(iframe(), &map, thread); vframe* f = vframe::new_vframe(iframe(), &map, thread);
f->print(); f->print();
iframe()->interpreter_frame_print_on(tty);
tty->print_cr("locals size %d", locals()->size()); tty->print_cr("locals size %d", locals()->size());
tty->print_cr("expression size %d", expressions()->size()); tty->print_cr("expression size %d", expressions()->size());
...@@ -582,7 +581,7 @@ void vframeArray::print_on_2(outputStream* st) { ...@@ -582,7 +581,7 @@ void vframeArray::print_on_2(outputStream* st) {
} }
void vframeArrayElement::print(outputStream* st) { void vframeArrayElement::print(outputStream* st) {
st->print_cr(" - interpreter_frame -> sp: ", INTPTR_FORMAT, iframe()->sp()); st->print_cr(" - interpreter_frame -> sp: " INTPTR_FORMAT, iframe()->sp());
} }
void vframeArray::print_value_on(outputStream* st) const { void vframeArray::print_value_on(outputStream* st) const {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册