comparison src/share/vm/c1/c1_Runtime1.cpp @ 485:ac8fe14c93e4

6767587: missing call to make_not_entrant after deoptimizing for patching volatiles Reviewed-by: rasbold, kvn
author never
date Fri, 12 Dec 2008 19:53:25 -0800
parents f8199438385b
children 0fbdb4381b99
comparison
equal deleted inserted replaced
484:ffe19141e312 485:ac8fe14c93e4
840 // loading it turns out it was volatile so we have to throw the 840 // loading it turns out it was volatile so we have to throw the
841 // compiled code out and let it be regenerated. 841 // compiled code out and let it be regenerated.
842 if (TracePatching) { 842 if (TracePatching) {
843 tty->print_cr("Deoptimizing for patching volatile field reference"); 843 tty->print_cr("Deoptimizing for patching volatile field reference");
844 } 844 }
845 // It's possible the nmethod was invalidated in the last
846 // safepoint, but if it's still alive then make it not_entrant.
847 nmethod* nm = CodeCache::find_nmethod(caller_frame.pc());
848 if (nm != NULL) {
849 nm->make_not_entrant();
850 }
851
845 VM_DeoptimizeFrame deopt(thread, caller_frame.id()); 852 VM_DeoptimizeFrame deopt(thread, caller_frame.id());
846 VMThread::execute(&deopt); 853 VMThread::execute(&deopt);
847 854
848 // Return to the now deoptimized frame. 855 // Return to the now deoptimized frame.
849 } 856 }