< prev index next >

src/hotspot/share/prims/jvmtiRawMonitor.cpp

Print this page

        

*** 125,135 **** // // ------------------------------------------------------------------------- int JvmtiRawMonitor::SimpleEnter (Thread * Self) { for (;;) { ! if (Atomic::cmpxchg_ptr (Self, &_owner, NULL) == NULL) { return OS_OK ; } ObjectWaiter Node (Self) ; Self->_ParkEvent->reset() ; // strictly optional --- 125,135 ---- // // ------------------------------------------------------------------------- int JvmtiRawMonitor::SimpleEnter (Thread * Self) { for (;;) { ! if (Atomic::cmpxchg(Self, &_owner, (void*)NULL) == NULL) { return OS_OK ; } ObjectWaiter Node (Self) ; Self->_ParkEvent->reset() ; // strictly optional
*** 137,147 **** RawMonitor_lock->lock_without_safepoint_check() ; Node._next = _EntryList ; _EntryList = &Node ; OrderAccess::fence() ; ! if (_owner == NULL && Atomic::cmpxchg_ptr (Self, &_owner, NULL) == NULL) { _EntryList = Node._next ; RawMonitor_lock->unlock() ; return OS_OK ; } RawMonitor_lock->unlock() ; --- 137,147 ---- RawMonitor_lock->lock_without_safepoint_check() ; Node._next = _EntryList ; _EntryList = &Node ; OrderAccess::fence() ; ! if (_owner == NULL && Atomic::cmpxchg(Self, &_owner, (void*)NULL) == NULL) { _EntryList = Node._next ; RawMonitor_lock->unlock() ; return OS_OK ; } RawMonitor_lock->unlock() ;
*** 151,161 **** } } int JvmtiRawMonitor::SimpleExit (Thread * Self) { guarantee (_owner == Self, "invariant") ; ! OrderAccess::release_store_ptr (&_owner, NULL) ; OrderAccess::fence() ; if (_EntryList == NULL) return OS_OK ; ObjectWaiter * w ; RawMonitor_lock->lock_without_safepoint_check() ; --- 151,161 ---- } } int JvmtiRawMonitor::SimpleExit (Thread * Self) { guarantee (_owner == Self, "invariant") ; ! OrderAccess::release_store(&_owner, (void*)NULL) ; OrderAccess::fence() ; if (_EntryList == NULL) return OS_OK ; ObjectWaiter * w ; RawMonitor_lock->lock_without_safepoint_check() ;
*** 275,288 **** jt->SR_lock()->unlock(); jt->java_suspend_self(); jt->SR_lock()->lock_without_safepoint_check(); } // guarded by SR_lock to avoid racing with new external suspend requests. ! Contended = Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) ; jt->SR_lock()->unlock(); } else { ! Contended = Atomic::cmpxchg_ptr (THREAD, &_owner, NULL) ; } if (Contended == THREAD) { _recursions ++ ; return OM_OK ; --- 275,288 ---- jt->SR_lock()->unlock(); jt->java_suspend_self(); jt->SR_lock()->lock_without_safepoint_check(); } // guarded by SR_lock to avoid racing with new external suspend requests. ! Contended = Atomic::cmpxchg(THREAD, &_owner, (void*)NULL); jt->SR_lock()->unlock(); } else { ! Contended = Atomic::cmpxchg(THREAD, &_owner, (void*)NULL); } if (Contended == THREAD) { _recursions ++ ; return OM_OK ;
< prev index next >