Users of the llvm global mutex must now acquire it manually.

This allows the mutex to be acquired in a guarded, RAII fashion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211066 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Zachary Turner
2014-06-16 22:39:38 +00:00
parent 8b3a8d6343
commit 9be5c8ca6b
5 changed files with 16 additions and 26 deletions

View File

@ -14,6 +14,7 @@
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Config/config.h"
#include "llvm/Support/Atomic.h"
#include "llvm/Support/MutexGuard.h"
#include <cassert>
using namespace llvm;
@ -23,7 +24,7 @@ void ManagedStaticBase::RegisterManagedStatic(void *(*Creator)(),
void (*Deleter)(void*)) const {
assert(Creator);
if (llvm_is_multithreaded()) {
llvm_acquire_global_lock();
llvm::MutexGuard Lock(llvm::llvm_get_global_lock());
if (!Ptr) {
void* tmp = Creator();
@ -43,8 +44,6 @@ void ManagedStaticBase::RegisterManagedStatic(void *(*Creator)(),
Next = StaticList;
StaticList = this;
}
llvm_release_global_lock();
} else {
assert(!Ptr && !DeleterFn && !Next &&
"Partially initialized ManagedStatic!?");