forked from OSchip/llvm-project
Fences are expensive. Avoid doing them when we're not in multithreaded mode.
llvm-svn: 73777
This commit is contained in:
parent
b9063a84ce
commit
383f7b1f08
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue