Mercurial > hg > truffle
diff src/share/vm/runtime/deoptimization.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 | d5d065957597 |
children | ce6848d0666d |
line wrap: on
line diff
--- a/src/share/vm/runtime/deoptimization.cpp Wed Sep 15 20:25:37 2010 -0700 +++ b/src/share/vm/runtime/deoptimization.cpp Tue Sep 21 13:38:35 2010 -0700 @@ -124,6 +124,9 @@ RegisterMap dummy_map(thread, false); // Now get the deoptee with a valid map frame deoptee = stub_frame.sender(&map); + // Set the deoptee nmethod + assert(thread->deopt_nmethod() == NULL, "Pending deopt!"); + thread->set_deopt_nmethod(deoptee.cb()->as_nmethod_or_null()); // Create a growable array of VFrames where each VFrame represents an inlined // Java frame. This storage is allocated with the usual system arena. @@ -445,6 +448,7 @@ delete thread->deopt_mark(); thread->set_deopt_mark(NULL); + thread->set_deopt_nmethod(NULL); if (JvmtiExport::can_pop_frame()) {