src/share/vm/oops/instanceKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/oops/instanceKlass.cpp

src/share/vm/oops/instanceKlass.cpp

Print this page

        

*** 2843,2853 **** } m->set_highest_osr_comp_level(max_level); } } ! nmethod* InstanceKlass::lookup_osr_nmethod(const Method* m, int bci, int comp_level, bool match_level) const { // This is a short non-blocking critical region, so the no safepoint check is ok. MutexLockerEx ml(OsrList_lock, Mutex::_no_safepoint_check_flag); nmethod* osr = osr_nmethods_head(); nmethod* best = NULL; while (osr != NULL) { --- 2843,2854 ---- } m->set_highest_osr_comp_level(max_level); } } ! nmethod* InstanceKlass::lookup_osr_nmethod(const Method* m, int bci, int comp_level, ! bool match_level, bool skip_marked) const { // This is a short non-blocking critical region, so the no safepoint check is ok. MutexLockerEx ml(OsrList_lock, Mutex::_no_safepoint_check_flag); nmethod* osr = osr_nmethods_head(); nmethod* best = NULL; while (osr != NULL) {
*** 2856,2866 **** // for a c2 version. When c2 completes its osr nmethod we will trash // the c1 version and only be able to find the c2 version. However // while we overflow in the c1 code at back branches we don't want to // try and switch to the same code as we are already running ! if (osr->method() == m && (bci == InvocationEntryBci || osr->osr_entry_bci() == bci)) { if (match_level) { if (osr->comp_level() == comp_level) { // Found a match - return it. return osr; --- 2857,2867 ---- // for a c2 version. When c2 completes its osr nmethod we will trash // the c1 version and only be able to find the c2 version. However // while we overflow in the c1 code at back branches we don't want to // try and switch to the same code as we are already running ! if (osr->method() == m && !(skip_marked && osr->is_marked_for_deoptimization()) && (bci == InvocationEntryBci || osr->osr_entry_bci() == bci)) { if (match_level) { if (osr->comp_level() == comp_level) { // Found a match - return it. return osr;
src/share/vm/oops/instanceKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File