Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/vframeArray.cpp @ 1255:e3a4305c6bc3
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
author | kvn |
---|---|
date | Fri, 12 Feb 2010 08:54:13 -0800 |
parents | 15bbd3f505c0 |
children | 3cf667df43ef |
comparison
equal
deleted
inserted
replaced
1254:4ee1c645110e | 1255:e3a4305c6bc3 |
---|---|
1 /* | 1 /* |
2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. | 2 * Copyright 1997-2010 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
184 "shouldn't get exception during monitorenter");) | 184 "shouldn't get exception during monitorenter");) |
185 | 185 |
186 int popframe_preserved_args_size_in_bytes = 0; | 186 int popframe_preserved_args_size_in_bytes = 0; |
187 int popframe_preserved_args_size_in_words = 0; | 187 int popframe_preserved_args_size_in_words = 0; |
188 if (is_top_frame) { | 188 if (is_top_frame) { |
189 JvmtiThreadState *state = thread->jvmti_thread_state(); | 189 JvmtiThreadState *state = thread->jvmti_thread_state(); |
190 if (JvmtiExport::can_pop_frame() && | 190 if (JvmtiExport::can_pop_frame() && |
191 (thread->has_pending_popframe() || thread->popframe_forcing_deopt_reexecution())) { | 191 (thread->has_pending_popframe() || thread->popframe_forcing_deopt_reexecution())) { |
192 if (thread->has_pending_popframe()) { | 192 if (thread->has_pending_popframe()) { |
193 // Pop top frame after deoptimization | 193 // Pop top frame after deoptimization |
194 #ifndef CC_INTERP | 194 #ifndef CC_INTERP |
379 tty->print_cr("[%d Interpreted Frame]", ++unpack_counter); | 379 tty->print_cr("[%d Interpreted Frame]", ++unpack_counter); |
380 iframe()->print_on(tty); | 380 iframe()->print_on(tty); |
381 RegisterMap map(thread); | 381 RegisterMap map(thread); |
382 vframe* f = vframe::new_vframe(iframe(), &map, thread); | 382 vframe* f = vframe::new_vframe(iframe(), &map, thread); |
383 f->print(); | 383 f->print(); |
384 iframe()->interpreter_frame_print_on(tty); | |
385 | 384 |
386 tty->print_cr("locals size %d", locals()->size()); | 385 tty->print_cr("locals size %d", locals()->size()); |
387 tty->print_cr("expression size %d", expressions()->size()); | 386 tty->print_cr("expression size %d", expressions()->size()); |
388 | 387 |
389 method()->print_value(); | 388 method()->print_value(); |
580 element(index)->print(st); | 579 element(index)->print(st); |
581 } | 580 } |
582 } | 581 } |
583 | 582 |
584 void vframeArrayElement::print(outputStream* st) { | 583 void vframeArrayElement::print(outputStream* st) { |
585 st->print_cr(" - interpreter_frame -> sp: ", INTPTR_FORMAT, iframe()->sp()); | 584 st->print_cr(" - interpreter_frame -> sp: " INTPTR_FORMAT, iframe()->sp()); |
586 } | 585 } |
587 | 586 |
588 void vframeArray::print_value_on(outputStream* st) const { | 587 void vframeArray::print_value_on(outputStream* st) const { |
589 st->print_cr("vframeArray [%d] ", frames()); | 588 st->print_cr("vframeArray [%d] ", frames()); |
590 } | 589 } |