From 309ce2d3623c9f915ce8c53c95a7ce2c07f98009 Mon Sep 17 00:00:00 2001 From: Nikos Gorogiannis Date: Thu, 4 Oct 2018 14:25:57 -0700 Subject: [PATCH] [racerd] folly spinlock models Summary: Add models for folly::SpinLock and folly::SpinLockGuard Reviewed By: jberdine Differential Revision: D10194130 fbshipit-source-id: e56d0ad81 --- infer/src/concurrency/ConcurrencyModels.ml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/infer/src/concurrency/ConcurrencyModels.ml b/infer/src/concurrency/ConcurrencyModels.ml index 8db61fcaf..8954b977e 100644 --- a/infer/src/concurrency/ConcurrencyModels.ml +++ b/infer/src/concurrency/ConcurrencyModels.ml @@ -52,15 +52,17 @@ let get_lock = ; "folly::RWSpinLock::lock_shared" ; "folly::SharedMutexImpl::lockExclusiveImpl" ; "folly::SharedMutexImpl::lockSharedImpl" + ; "folly::SpinLock::lock" + ; "std::lock" ; "std::mutex::lock" - ; "std::unique_lock::lock" - ; "std::lock" ] + ; "std::unique_lock::lock" ] in let matcher_lock_constructor = QualifiedCppName.Match.of_fuzzy_qual_names - [ "std::lock_guard::lock_guard" - ; "std::unique_lock::unique_lock" - ; "folly::LockedPtr::LockedPtr" ] + [ "folly::LockedPtr::LockedPtr" + ; "folly::SpinLockGuard::SpinLockGuard" + ; "std::lock_guard::lock_guard" + ; "std::unique_lock::unique_lock" ] in fun pname actuals -> QualifiedCppName.Match.match_qualifiers matcher_lock (Typ.Procname.get_qualifiers pname) @@ -72,23 +74,25 @@ let get_lock = let matcher = QualifiedCppName.Match.of_fuzzy_qual_names [ "apache::thrift::concurrency::ReadWriteMutex::release" + ; "folly::LockedPtr::~LockedPtr" ; "folly::MicroSpinLock::unlock" ; "folly::RWSpinLock::unlock" ; "folly::RWSpinLock::unlock_shared" ; "folly::SharedMutexImpl::unlock" ; "folly::SharedMutexImpl::unlock_shared" + ; "folly::SpinLock::unlock" + ; "folly::SpinLockGuard::~SpinLockGuard" ; "std::lock_guard::~lock_guard" ; "std::mutex::unlock" ; "std::unique_lock::unlock" - ; "std::unique_lock::~unique_lock" - ; "folly::LockedPtr::~LockedPtr" ] + ; "std::unique_lock::~unique_lock" ] in fun pname -> QualifiedCppName.Match.match_qualifiers matcher (Typ.Procname.get_qualifiers pname) and is_cpp_trylock = let matcher = QualifiedCppName.Match.of_fuzzy_qual_names - ["std::unique_lock::owns_lock"; "std::unique_lock::try_lock"] + ["folly::SpinLock::try_lock"; "std::unique_lock::owns_lock"; "std::unique_lock::try_lock"] in fun pname -> QualifiedCppName.Match.match_qualifiers matcher (Typ.Procname.get_qualifiers pname)