diff options
Diffstat (limited to 'runtime/base/mutex.cc')
-rw-r--r-- | runtime/base/mutex.cc | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/runtime/base/mutex.cc b/runtime/base/mutex.cc index 13dcb8c..99c7246 100644 --- a/runtime/base/mutex.cc +++ b/runtime/base/mutex.cc @@ -67,7 +67,7 @@ struct AllMutexData { Atomic<const BaseMutex*> all_mutexes_guard; // All created mutexes guarded by all_mutexes_guard_. std::set<BaseMutex*>* all_mutexes; - AllMutexData() : all_mutexes(NULL) {} + AllMutexData() : all_mutexes(nullptr) {} }; static struct AllMutexData gAllMutexData[kAllMutexDataSize]; @@ -114,7 +114,7 @@ class ScopedAllMutexesLock FINAL { class ScopedContentionRecorder FINAL : public ValueObject { public: ScopedContentionRecorder(BaseMutex* mutex, uint64_t blocked_tid, uint64_t owner_tid) - : mutex_(kLogLockContentions ? mutex : NULL), + : mutex_(kLogLockContentions ? mutex : nullptr), blocked_tid_(kLogLockContentions ? blocked_tid : 0), owner_tid_(kLogLockContentions ? owner_tid : 0), start_nano_time_(kLogLockContentions ? NanoTime() : 0) { @@ -144,7 +144,7 @@ BaseMutex::BaseMutex(const char* name, LockLevel level) : level_(level), name_(n if (kLogLockContentions) { ScopedAllMutexesLock mu(this); std::set<BaseMutex*>** all_mutexes_ptr = &gAllMutexData->all_mutexes; - if (*all_mutexes_ptr == NULL) { + if (*all_mutexes_ptr == nullptr) { // We leak the global set of all mutexes to avoid ordering issues in global variable // construction/destruction. *all_mutexes_ptr = new std::set<BaseMutex*>(); @@ -165,7 +165,7 @@ void BaseMutex::DumpAll(std::ostream& os) { os << "Mutex logging:\n"; ScopedAllMutexesLock mu(reinterpret_cast<const BaseMutex*>(-1)); std::set<BaseMutex*>* all_mutexes = gAllMutexData->all_mutexes; - if (all_mutexes == NULL) { + if (all_mutexes == nullptr) { // No mutexes have been created yet during at startup. return; } @@ -190,7 +190,7 @@ void BaseMutex::DumpAll(std::ostream& os) { } void BaseMutex::CheckSafeToWait(Thread* self) { - if (self == NULL) { + if (self == nullptr) { CheckUnattachedThread(level_); return; } @@ -202,7 +202,7 @@ void BaseMutex::CheckSafeToWait(Thread* self) { if (i != level_) { BaseMutex* held_mutex = self->GetHeldMutex(static_cast<LockLevel>(i)); // We expect waits to happen while holding the thread list suspend thread lock. - if (held_mutex != NULL) { + if (held_mutex != nullptr) { LOG(ERROR) << "Holding \"" << held_mutex->name_ << "\" " << "(level " << LockLevel(i) << ") while performing wait on " << "\"" << name_ << "\" (level " << level_ << ")"; @@ -354,7 +354,7 @@ Mutex::~Mutex() { } void Mutex::ExclusiveLock(Thread* self) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); if (kDebugLocking && !recursive_) { AssertNotHeld(self); } @@ -370,7 +370,7 @@ void Mutex::ExclusiveLock(Thread* self) { // Failed to acquire, hang up. ScopedContentionRecorder scr(this, SafeGetTid(self), GetExclusiveOwnerTid()); num_contenders_++; - if (futex(state_.Address(), FUTEX_WAIT, 1, NULL, NULL, 0) != 0) { + if (futex(state_.Address(), FUTEX_WAIT, 1, nullptr, nullptr, 0) != 0) { // EAGAIN and EINTR both indicate a spurious failure, try again from the beginning. // We don't use TEMP_FAILURE_RETRY so we can intentionally retry to acquire the lock. if ((errno != EAGAIN) && (errno != EINTR)) { @@ -397,7 +397,7 @@ void Mutex::ExclusiveLock(Thread* self) { } bool Mutex::ExclusiveTryLock(Thread* self) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); if (kDebugLocking && !recursive_) { AssertNotHeld(self); } @@ -474,7 +474,7 @@ void Mutex::ExclusiveUnlock(Thread* self) { if (LIKELY(done)) { // Spurious fail? // Wake a contender. if (UNLIKELY(num_contenders_.LoadRelaxed() > 0)) { - futex(state_.Address(), FUTEX_WAKE, 1, NULL, NULL, 0); + futex(state_.Address(), FUTEX_WAKE, 1, nullptr, nullptr, 0); } } } else { @@ -537,14 +537,14 @@ ReaderWriterMutex::~ReaderWriterMutex() { // TODO: should we just not log at all if shutting down? this could be the logging mutex! MutexLock mu(Thread::Current(), *Locks::runtime_shutdown_lock_); Runtime* runtime = Runtime::Current(); - bool shutting_down = runtime == NULL || runtime->IsShuttingDownLocked(); + bool shutting_down = runtime == nullptr || runtime->IsShuttingDownLocked(); PLOG(shutting_down ? WARNING : FATAL) << "pthread_rwlock_destroy failed for " << name_; } #endif } void ReaderWriterMutex::ExclusiveLock(Thread* self) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); AssertNotExclusiveHeld(self); #if ART_USE_FUTEXES bool done = false; @@ -557,7 +557,7 @@ void ReaderWriterMutex::ExclusiveLock(Thread* self) { // Failed to acquire, hang up. ScopedContentionRecorder scr(this, SafeGetTid(self), GetExclusiveOwnerTid()); ++num_pending_writers_; - if (futex(state_.Address(), FUTEX_WAIT, cur_state, NULL, NULL, 0) != 0) { + if (futex(state_.Address(), FUTEX_WAIT, cur_state, nullptr, nullptr, 0) != 0) { // EAGAIN and EINTR both indicate a spurious failure, try again from the beginning. // We don't use TEMP_FAILURE_RETRY so we can intentionally retry to acquire the lock. if ((errno != EAGAIN) && (errno != EINTR)) { @@ -578,7 +578,7 @@ void ReaderWriterMutex::ExclusiveLock(Thread* self) { } void ReaderWriterMutex::ExclusiveUnlock(Thread* self) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); AssertExclusiveHeld(self); RegisterAsUnlocked(self); DCHECK_NE(exclusive_owner_, 0U); @@ -598,7 +598,7 @@ void ReaderWriterMutex::ExclusiveUnlock(Thread* self) { // Wake any waiters. if (UNLIKELY(num_pending_readers_.LoadRelaxed() > 0 || num_pending_writers_.LoadRelaxed() > 0)) { - futex(state_.Address(), FUTEX_WAKE, -1, NULL, NULL, 0); + futex(state_.Address(), FUTEX_WAKE, -1, nullptr, nullptr, 0); } } } else { @@ -613,7 +613,7 @@ void ReaderWriterMutex::ExclusiveUnlock(Thread* self) { #if HAVE_TIMED_RWLOCK bool ReaderWriterMutex::ExclusiveLockWithTimeout(Thread* self, int64_t ms, int32_t ns) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); #if ART_USE_FUTEXES bool done = false; timespec end_abs_ts; @@ -633,7 +633,7 @@ bool ReaderWriterMutex::ExclusiveLockWithTimeout(Thread* self, int64_t ms, int32 } ScopedContentionRecorder scr(this, SafeGetTid(self), GetExclusiveOwnerTid()); ++num_pending_writers_; - if (futex(state_.Address(), FUTEX_WAIT, cur_state, &rel_ts, NULL, 0) != 0) { + if (futex(state_.Address(), FUTEX_WAIT, cur_state, &rel_ts, nullptr, 0) != 0) { if (errno == ETIMEDOUT) { --num_pending_writers_; return false; // Timed out. @@ -671,7 +671,7 @@ void ReaderWriterMutex::HandleSharedLockContention(Thread* self, int32_t cur_sta // Owner holds it exclusively, hang up. ScopedContentionRecorder scr(this, GetExclusiveOwnerTid(), SafeGetTid(self)); ++num_pending_readers_; - if (futex(state_.Address(), FUTEX_WAIT, cur_state, NULL, NULL, 0) != 0) { + if (futex(state_.Address(), FUTEX_WAIT, cur_state, nullptr, nullptr, 0) != 0) { if (errno != EAGAIN) { PLOG(FATAL) << "futex wait failed for " << name_; } @@ -681,7 +681,7 @@ void ReaderWriterMutex::HandleSharedLockContention(Thread* self, int32_t cur_sta #endif bool ReaderWriterMutex::SharedTryLock(Thread* self) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); #if ART_USE_FUTEXES bool done = false; do { @@ -710,9 +710,9 @@ bool ReaderWriterMutex::SharedTryLock(Thread* self) { } bool ReaderWriterMutex::IsSharedHeld(const Thread* self) const { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); bool result; - if (UNLIKELY(self == NULL)) { // Handle unattached threads. + if (UNLIKELY(self == nullptr)) { // Handle unattached threads. result = IsExclusiveHeld(self); // TODO: a better best effort here. } else { result = (self->GetHeldMutex(level_) == this); @@ -770,14 +770,14 @@ ConditionVariable::~ConditionVariable() { errno = rc; MutexLock mu(Thread::Current(), *Locks::runtime_shutdown_lock_); Runtime* runtime = Runtime::Current(); - bool shutting_down = (runtime == NULL) || runtime->IsShuttingDownLocked(); + bool shutting_down = (runtime == nullptr) || runtime->IsShuttingDownLocked(); PLOG(shutting_down ? WARNING : FATAL) << "pthread_cond_destroy failed for " << name_; } #endif } void ConditionVariable::Broadcast(Thread* self) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); // TODO: enable below, there's a race in thread creation that causes false failures currently. // guard_.AssertExclusiveHeld(self); DCHECK_EQ(guard_.GetExclusiveOwnerTid(), SafeGetTid(self)); @@ -805,14 +805,14 @@ void ConditionVariable::Broadcast(Thread* self) { } void ConditionVariable::Signal(Thread* self) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); guard_.AssertExclusiveHeld(self); #if ART_USE_FUTEXES if (num_waiters_ > 0) { sequence_++; // Indicate a signal occurred. // Futex wake 1 waiter who will then come and in contend on mutex. It'd be nice to requeue them // to avoid this, however, requeueing can only move all waiters. - int num_woken = futex(sequence_.Address(), FUTEX_WAKE, 1, NULL, NULL, 0); + int num_woken = futex(sequence_.Address(), FUTEX_WAKE, 1, nullptr, nullptr, 0); // Check something was woken or else we changed sequence_ before they had chance to wait. CHECK((num_woken == 0) || (num_woken == 1)); } @@ -827,7 +827,7 @@ void ConditionVariable::Wait(Thread* self) { } void ConditionVariable::WaitHoldingLocks(Thread* self) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); guard_.AssertExclusiveHeld(self); unsigned int old_recursion_count = guard_.recursion_count_; #if ART_USE_FUTEXES @@ -837,7 +837,7 @@ void ConditionVariable::WaitHoldingLocks(Thread* self) { guard_.recursion_count_ = 1; int32_t cur_sequence = sequence_.LoadRelaxed(); guard_.ExclusiveUnlock(self); - if (futex(sequence_.Address(), FUTEX_WAIT, cur_sequence, NULL, NULL, 0) != 0) { + if (futex(sequence_.Address(), FUTEX_WAIT, cur_sequence, nullptr, nullptr, 0) != 0) { // Futex failed, check it is an expected error. // EAGAIN == EWOULDBLK, so we let the caller try again. // EINTR implies a signal was sent to this thread. @@ -862,7 +862,7 @@ void ConditionVariable::WaitHoldingLocks(Thread* self) { } bool ConditionVariable::TimedWait(Thread* self, int64_t ms, int32_t ns) { - DCHECK(self == NULL || self == Thread::Current()); + DCHECK(self == nullptr || self == Thread::Current()); bool timed_out = false; guard_.AssertExclusiveHeld(self); guard_.CheckSafeToWait(self); @@ -876,7 +876,7 @@ bool ConditionVariable::TimedWait(Thread* self, int64_t ms, int32_t ns) { guard_.recursion_count_ = 1; int32_t cur_sequence = sequence_.LoadRelaxed(); guard_.ExclusiveUnlock(self); - if (futex(sequence_.Address(), FUTEX_WAIT, cur_sequence, &rel_ts, NULL, 0) != 0) { + if (futex(sequence_.Address(), FUTEX_WAIT, cur_sequence, &rel_ts, nullptr, 0) != 0) { if (errno == ETIMEDOUT) { // Timed out we're done. timed_out = true; |