63 assert(is_owned(), "Invalid owner"); 64 assert(_count > 0, "Invalid count"); 65 66 _count--; 67 68 if (_count == 0) { 69 Atomic::store((Thread*)NULL, &_owner); 70 _lock.unlock(); 71 } 72 } 73 74 inline bool ZReentrantLock::is_owned() const { 75 Thread* const thread = Thread::current(); 76 Thread* const owner = Atomic::load(&_owner); 77 return owner == thread; 78 } 79 80 template <typename T> 81 inline ZLocker<T>::ZLocker(T* lock) : 82 _lock(lock) { 83 _lock->lock(); 84 } 85 86 template <typename T> 87 inline ZLocker<T>::~ZLocker() { 88 _lock->unlock(); 89 } 90 91 #endif // SHARE_GC_Z_ZLOCK_INLINE_HPP | 63 assert(is_owned(), "Invalid owner"); 64 assert(_count > 0, "Invalid count"); 65 66 _count--; 67 68 if (_count == 0) { 69 Atomic::store((Thread*)NULL, &_owner); 70 _lock.unlock(); 71 } 72 } 73 74 inline bool ZReentrantLock::is_owned() const { 75 Thread* const thread = Thread::current(); 76 Thread* const owner = Atomic::load(&_owner); 77 return owner == thread; 78 } 79 80 template <typename T> 81 inline ZLocker<T>::ZLocker(T* lock) : 82 _lock(lock) { 83 if (_lock != NULL) { 84 _lock->lock(); 85 } 86 } 87 88 template <typename T> 89 inline ZLocker<T>::~ZLocker() { 90 if (_lock != NULL) { 91 _lock->unlock(); 92 } 93 } 94 95 #endif // SHARE_GC_Z_ZLOCK_INLINE_HPP |