Fences are expensive. Avoid doing them when we're not in multithreaded mode.

llvm-svn: 73777
This commit is contained in:
Owen Anderson 2009-06-19 17:50:11 +00:00
parent b9063a84ce
commit 383f7b1f08
1 changed files with 4 additions and 4 deletions

View File

@ -61,28 +61,28 @@ public:
// Accessors.
C &operator*() {
void* tmp = Ptr;
sys::MemoryFence();
if (llvm_is_multithreaded()) sys::MemoryFence();
if (!tmp) RegisterManagedStatic(object_creator<C>, object_deleter<C>);
return *static_cast<C*>(Ptr);
}
C *operator->() {
void* tmp = Ptr;
sys::MemoryFence();
if (llvm_is_multithreaded()) sys::MemoryFence();
if (!tmp) RegisterManagedStatic(object_creator<C>, object_deleter<C>);
return static_cast<C*>(Ptr);
}
const C &operator*() const {
void* tmp = Ptr;
sys::MemoryFence();
if (llvm_is_multithreaded()) sys::MemoryFence();
if (!tmp) RegisterManagedStatic(object_creator<C>, object_deleter<C>);
return *static_cast<C*>(Ptr);
}
const C *operator->() const {
void* tmp = Ptr;
sys::MemoryFence();
if (llvm_is_multithreaded()) sys::MemoryFence();
if (!tmp) RegisterManagedStatic(object_creator<C>, object_deleter<C>);
return static_cast<C*>(Ptr);