Use atomic operations when accessing statistics, and make the lazy initialization of statistics actually threadsafe.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74005 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Owen Anderson
2009-06-23 21:19:38 +00:00
parent e0fa0b42b2
commit 92915e31e9
2 changed files with 63 additions and 16 deletions
+8 -4
View File
@@ -66,10 +66,14 @@ void Statistic::RegisterStatistic() {
// If stats are enabled, inform StatInfo that this statistic should be
// printed.
sys::ScopedLock Writer(&*StatLock);
if (Enabled)
StatInfo->addStatistic(this);
// Remember we have been registered.
Initialized = true;
if (!Initialized) {
if (Enabled)
StatInfo->addStatistic(this);
sys::MemoryFence();
// Remember we have been registered.
Initialized = true;
}
}
namespace {