Mercurial > hg > truffle
diff src/share/vm/runtime/vframeArray.cpp @ 1814:fd5d4527cdf5
6986270: guarantee(*bcp != Bytecodes::_monitorenter || exec_mode != Deoptimization::Unpack_exception) fails
Summary: Propagate the compiler type of the deopting method to vframeArrayElement::unpack_on_stack()
Reviewed-by: jrose, never
author | iveresov |
---|---|
date | Tue, 21 Sep 2010 13:38:35 -0700 |
parents | d93949c5bdcc |
children | 8d88c9ac9247 f95d63e2154a |
line wrap: on
line diff
--- a/src/share/vm/runtime/vframeArray.cpp Wed Sep 15 20:25:37 2010 -0700 +++ b/src/share/vm/runtime/vframeArray.cpp Tue Sep 21 13:38:35 2010 -0700 @@ -179,9 +179,11 @@ // 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;