Mercurial > hg > truffle
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 } |