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()) {