diff options
author | Enrico Granata <egranata@apple.com> | 2015-06-16 23:20:12 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2015-06-16 23:20:12 +0000 |
commit | 55d36e2b838383c574f371fa98546ff98b93b87a (patch) | |
tree | 751d3582194787d664f05c4c944101434eed7713 | |
parent | 6592ff8c93410d9f4560f3d4e8b744bcd6aceb04 (diff) | |
download | bcm5719-llvm-55d36e2b838383c574f371fa98546ff98b93b87a.tar.gz bcm5719-llvm-55d36e2b838383c574f371fa98546ff98b93b87a.zip |
Add a ThreadSafe adapter over llvm::DenseSet
llvm-svn: 239865
-rw-r--r-- | lldb/include/lldb/Core/ThreadSafeDenseSet.h | 65 | ||||
-rw-r--r-- | lldb/lldb.xcodeproj/project.pbxproj | 2 |
2 files changed, 67 insertions, 0 deletions
diff --git a/lldb/include/lldb/Core/ThreadSafeDenseSet.h b/lldb/include/lldb/Core/ThreadSafeDenseSet.h new file mode 100644 index 00000000000..19c67b65e8c --- /dev/null +++ b/lldb/include/lldb/Core/ThreadSafeDenseSet.h @@ -0,0 +1,65 @@ +//===-- ThreadSafeDenseSet.h ------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_ThreadSafeDenseSet_h_ +#define liblldb_ThreadSafeDenseSet_h_ + +// C Includes +// C++ Includes + +// Other libraries and framework includes +#include "llvm/ADT/DenseSet.h" + +// Project includes +#include "lldb/Host/Mutex.h" + +namespace lldb_private { + + template <typename _ElementType> + class ThreadSafeDenseSet + { + public: + typedef llvm::DenseSet<_ElementType> LLVMSetType; + + ThreadSafeDenseSet(unsigned set_initial_capacity = 0, + Mutex::Type mutex_type = Mutex::eMutexTypeNormal) : + m_set(set_initial_capacity), + m_mutex(mutex_type) + { + } + + void + Insert (_ElementType e) + { + Mutex::Locker locker(m_mutex); + m_set.insert(e); + } + + void + Erase (_ElementType e) + { + Mutex::Locker locker(m_mutex); + m_set.erase(e); + } + + bool + Lookup (_ElementType e) + { + Mutex::Locker locker(m_mutex); + return (m_set.count(e) > 0); + } + + protected: + LLVMSetType m_set; + Mutex m_mutex; + }; + +} // namespace lldb_private + +#endif // liblldb_ThreadSafeDenseSet_h_ diff --git a/lldb/lldb.xcodeproj/project.pbxproj b/lldb/lldb.xcodeproj/project.pbxproj index 80dffa2d16d..d33344eef56 100644 --- a/lldb/lldb.xcodeproj/project.pbxproj +++ b/lldb/lldb.xcodeproj/project.pbxproj @@ -2498,6 +2498,7 @@ 944372DB171F6B4300E57C32 /* RegisterContextDummy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextDummy.h; path = Utility/RegisterContextDummy.h; sourceTree = "<group>"; }; 9443B120140C18A90013457C /* SBData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBData.h; path = include/lldb/API/SBData.h; sourceTree = "<group>"; }; 9443B121140C18C10013457C /* SBData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBData.cpp; path = source/API/SBData.cpp; sourceTree = "<group>"; }; + 9449B8031B30E0690019342B /* ThreadSafeDenseSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ThreadSafeDenseSet.h; path = include/lldb/Core/ThreadSafeDenseSet.h; sourceTree = "<group>"; }; 944DC3481774C99000D7D884 /* python-swigsafecast.swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "python-swigsafecast.swig"; sourceTree = "<group>"; }; 945215DD17F639E600521C0B /* ValueObjectPrinter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectPrinter.h; path = include/lldb/DataFormatters/ValueObjectPrinter.h; sourceTree = "<group>"; }; 945215DE17F639EE00521C0B /* ValueObjectPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectPrinter.cpp; path = source/DataFormatters/ValueObjectPrinter.cpp; sourceTree = "<group>"; }; @@ -4140,6 +4141,7 @@ 26BC7D7E10F1B77400F91463 /* Timer.h */, 26BC7E9610F1B85900F91463 /* Timer.cpp */, 94ED54A119C8A822007BE2EA /* ThreadSafeDenseMap.h */, + 9449B8031B30E0690019342B /* ThreadSafeDenseSet.h */, 268A813F115B19D000F645B0 /* UniqueCStringMap.h */, 26BC7D8010F1B77400F91463 /* UserID.h */, 26BC7E9810F1B85900F91463 /* UserID.cpp */, |