src/share/vm/runtime/deoptimization.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File tiered-deopt-failure Cdiff src/share/vm/runtime/deoptimization.cpp

src/share/vm/runtime/deoptimization.cpp

Print this page

        

*** 122,131 **** --- 122,134 ---- frame stub_frame = thread->last_frame(); // Makes stack walkable as side effect RegisterMap map(thread, true); 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. assert(deoptee.is_compiled_frame(), "Wrong frame type"); GrowableArray<compiledVFrame*>* chunk = new GrowableArray<compiledVFrame*>(10);
*** 443,452 **** --- 446,456 ---- // Deallocate any resource creating in this routine and any ResourceObjs allocated // inside the vframeArray (StackValueCollections) delete thread->deopt_mark(); thread->set_deopt_mark(NULL); + thread->set_deopt_nmethod(NULL); if (JvmtiExport::can_pop_frame()) { #ifndef CC_INTERP // Regardless of whether we entered this routine with the pending
src/share/vm/runtime/deoptimization.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File