6986270: guarantee(*bcp != Bytecodes::_monitorenter || exec_mode != Deoptimization::Unpack_exception) fails

Propagate the compiler type of the deopting method to vframeArrayElement::unpack_on_stack()

Reviewed-by: jrose, never
This commit is contained in:
Igor Veresov 2010-09-21 13:38:35 -07:00
parent 2e4e2602d7
commit 0f31511718
4 changed files with 14 additions and 4 deletions

View file

@ -179,9 +179,11 @@ void vframeArrayElement::unpack_on_stack(int callee_parameters,
// in which case bcp should point to the monitorenter since it is within the exception's range.
assert(*bcp != Bytecodes::_monitorenter || is_top_frame, "a _monitorenter must be a top frame");
// TIERED Must know the compiler of the deoptee QQQ
COMPILER2_PRESENT(guarantee(*bcp != Bytecodes::_monitorenter || exec_mode != Deoptimization::Unpack_exception,
"shouldn't get exception during monitorenter");)
assert(thread->deopt_nmethod() != NULL, "nmethod should be known");
guarantee(!(thread->deopt_nmethod()->is_compiled_by_c2() &&
*bcp == Bytecodes::_monitorenter &&
exec_mode == Deoptimization::Unpack_exception),
"shouldn't get exception during monitorenter");
int popframe_preserved_args_size_in_bytes = 0;
int popframe_preserved_args_size_in_words = 0;