< prev index next > src/hotspot/share/gc/z/zLock.inline.hpp
#ifndef SHARE_GC_Z_ZLOCK_INLINE_HPP
#define SHARE_GC_Z_ZLOCK_INLINE_HPP
#include "gc/z/zLock.hpp"
+#include "runtime/thread.hpp"
inline ZLock::ZLock() {
pthread_mutex_init(&_lock, NULL);
}
-inline void ZLock::lock() {
- pthread_mutex_lock(&_lock);
-}
-
-inline bool ZLock::try_lock() {
- return pthread_mutex_trylock(&_lock) == 0;
-}
-
-inline void ZLock::unlock() {
- pthread_mutex_unlock(&_lock);
-}
-
inline ZLocker::ZLocker(ZLock* lock) :
_lock(lock) {
_lock->lock();
}
inline ZLocker::~ZLocker() {
_lock->unlock();
}
+inline ZReentrantLock::ZReentrantLock() :
+ ZLock(),
+ _owner(NULL) { }
+
+inline bool ZReentrantLock::is_owned() const {
+ return _owner == Thread::current();
+}
+
+inline bool ZReentrantLock::reentrant_lock() {
+ if (is_owned()) {
+ return false;
+ }
+ lock();
+ return true;
+}
+
#endif // SHARE_GC_Z_ZLOCK_INLINE_HPP
< prev index next >