diff --git a/lld/include/lld/ReaderWriter/PECOFFLinkingContext.h b/lld/include/lld/ReaderWriter/PECOFFLinkingContext.h index 15c48257e7d1..c4a59d567fbf 100644 --- a/lld/include/lld/ReaderWriter/PECOFFLinkingContext.h +++ b/lld/include/lld/ReaderWriter/PECOFFLinkingContext.h @@ -19,9 +19,9 @@ #include "llvm/Support/COFF.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/FileUtilities.h" -#include "llvm/Support/Mutex.h" #include +#include #include #include @@ -36,7 +36,7 @@ class Group; class PECOFFLinkingContext : public LinkingContext { public: PECOFFLinkingContext() - : _mutex(true), _allocMutex(false), _baseAddress(invalidBaseAddress), + : _mutex(), _allocMutex(), _baseAddress(invalidBaseAddress), _stackReserve(1024 * 1024), _stackCommit(4096), _heapReserve(1024 * 1024), _heapCommit(4096), _noDefaultLibAll(false), _sectionDefaultAlignment(4096), @@ -236,9 +236,9 @@ public: const std::set &getDllExports() const { return _dllExports; } StringRef allocate(StringRef ref) const { - _allocMutex.acquire(); + _allocMutex.lock(); char *x = _allocator.Allocate(ref.size() + 1); - _allocMutex.release(); + _allocMutex.unlock(); memcpy(x, ref.data(), ref.size()); x[ref.size()] = '\0'; return x; @@ -246,17 +246,17 @@ public: ArrayRef allocate(ArrayRef array) const { size_t size = array.size(); - _allocMutex.acquire(); + _allocMutex.lock(); uint8_t *p = _allocator.Allocate(size); - _allocMutex.release(); + _allocMutex.unlock(); memcpy(p, array.data(), size); return ArrayRef(p, p + array.size()); } template T &allocateCopy(const T &x) const { - _allocMutex.acquire(); + _allocMutex.lock(); T *r = new (_allocator) T(x); - _allocMutex.release(); + _allocMutex.unlock(); return *r; } @@ -265,8 +265,8 @@ public: void setLibraryGroup(Group *group) { _libraryGroup = group; } Group *getLibraryGroup() const { return _libraryGroup; } - void lock() { _mutex.acquire(); } - void unlock() { _mutex.release(); } + void lock() { _mutex.lock(); } + void unlock() { _mutex.unlock(); } protected: /// Method to create a internal file for the entry symbol @@ -282,8 +282,8 @@ private: pe32PlusDefaultBaseAddress = 0x140000000U }; - llvm::sys::SmartMutex _mutex; - mutable llvm::sys::SmartMutex _allocMutex; + std::recursive_mutex _mutex; + mutable std::mutex _allocMutex; // The start address for the program. The default value for the executable is // 0x400000, but can be altered using /base command line option.