src/share/vm/c1/c1_Runtime1.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/c1/c1_Runtime1.cpp	Thu Nov  6 14:06:44 2008
--- new/src/share/vm/c1/c1_Runtime1.cpp	Thu Nov  6 14:06:43 2008

*** 840,849 **** --- 840,856 ---- // loading it turns out it was volatile so we have to throw the // compiled code out and let it be regenerated. if (TracePatching) { tty->print_cr("Deoptimizing for patching volatile field reference"); } + // It's possible the nmethod was invalidated in the last + // safepoint, but if it's still alive then make it not_entrant. + nmethod* nm = CodeCache::find_nmethod(caller_frame.pc()); + if (nm != NULL) { + nm->make_not_entrant(); + } + VM_DeoptimizeFrame deopt(thread, caller_frame.id()); VMThread::execute(&deopt); // Return to the now deoptimized frame. }

src/share/vm/c1/c1_Runtime1.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File