Lines Matching refs:ParkEvent

102 //   I use ParkEvent instead of threads as ParkEvents are immortal and
225 // stack acts as a local cache to avoid excessive calls to ParkEvent::Allocate()
228 // push the no-longer-needed ParkEvent back onto its stack.
252 // We should also add DTRACE probes in the ParkEvent subsystem for
416 static int ParkCommon (ParkEvent * ev, jlong timo) {
431 inline int Monitor::AcquireOrPush (ParkEvent * ESelf) {
440 ESelf->ListNext = (ParkEvent *) (v & ~_LBIT) ;
465 ParkEvent * const ESelf = Self->_MutexEvent ;
546 ParkEvent * const w = _OnDeck ;
591 ParkEvent * List = _EntryList ;
598 ParkEvent * const w = List ;
653 _EntryList = List = (ParkEvent *)(cxq & ~_LBIT) ;
696 ParkEvent * nfy = _WaitSet ;
704 nfy->ListNext = (ParkEvent *)(v & ~_LBIT);
747 ParkEvent * const ESelf = Self->_MutexEvent ;
757 // as the ParkEvent -- which serves as a proxy for the thread -- can't reside
760 // unlink its ParkEvent from WaitSet. Thus the need for WaitLock.
763 // Another viable approach would be add another ParkEvent, "WaitEvent" to the
772 // Alternatively, a 2nd set of list link fields in the ParkEvent might suffice.
774 // We could also deconstruct the ParkEvent into a "pure" event and add a
822 ParkEvent * p = _WaitSet ;
823 ParkEvent * q = NULL ; // classic q chases p
1019 // instance available. Instead, we transiently allocate a ParkEvent on-demand if
1020 // we encounter contention. That ParkEvent remains associated with the thread
1021 // until it manages to acquire the lock, at which time we return the ParkEvent
1022 // to the global ParkEvent free list. This is correct and suffices for our purposes.
1045 // Allocate a ParkEvent for transient use.
1046 // The ParkEvent remains associated with this thread until
1048 ParkEvent * const ESelf = ParkEvent::Allocate(NULL) ;
1054 ParkEvent::Release (ESelf) ; // surrender the ParkEvent
1069 ParkEvent::Release (ESelf) ; // surrender the ParkEvent