< prev index next >

src/hotspot/share/runtime/deoptimization.cpp

Print this page
*** 1499,11 ***
                   mark.biased_locker() == deoptee_thread, "should be locked to current thread");
            // Reset mark word to unbiased prototype.
            markWord unbiased_prototype = markWord::prototype().set_age(mark.age());
            obj->set_mark(unbiased_prototype);
          } else if (exec_mode == Unpack_none) {
!           if (mark.has_locker() && fr.sp() > (intptr_t*)mark.locker()) {
              // With exec_mode == Unpack_none obj may be thread local and locked in
              // a callee frame. In this case the bias was revoked before in revoke_for_object_deoptimization().
              // Make the lock in the callee a recursive lock and restore the displaced header.
              markWord dmw = mark.displaced_mark_helper();
              mark.locker()->set_displaced_header(markWord::encode((BasicLock*) NULL));
--- 1499,11 ---
                   mark.biased_locker() == deoptee_thread, "should be locked to current thread");
            // Reset mark word to unbiased prototype.
            markWord unbiased_prototype = markWord::prototype().set_age(mark.age());
            obj->set_mark(unbiased_prototype);
          } else if (exec_mode == Unpack_none) {
!           if (LockingMode == LM_LEGACY && mark.has_locker() && fr.sp() > (intptr_t*)mark.locker()) {
              // With exec_mode == Unpack_none obj may be thread local and locked in
              // a callee frame. In this case the bias was revoked before in revoke_for_object_deoptimization().
              // Make the lock in the callee a recursive lock and restore the displaced header.
              markWord dmw = mark.displaced_mark_helper();
              mark.locker()->set_displaced_header(markWord::encode((BasicLock*) NULL));
< prev index next >