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