[llvm-commits] [llvm] r73712 - /llvm/trunk/lib/VMCore/Type.cpp

Owen Anderson resistor at mac.com
Thu Jun 18 11:36:48 PDT 2009


Author: resistor
Date: Thu Jun 18 13:36:34 2009
New Revision: 73712

URL: http://llvm.org/viewvc/llvm-project?rev=73712&view=rev
Log:
Use SmartMutex to simplify.

Modified:
    llvm/trunk/lib/VMCore/Type.cpp

Modified: llvm/trunk/lib/VMCore/Type.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Type.cpp?rev=73712&r1=73711&r2=73712&view=diff

==============================================================================
--- llvm/trunk/lib/VMCore/Type.cpp (original)
+++ llvm/trunk/lib/VMCore/Type.cpp Thu Jun 18 13:36:34 2009
@@ -47,7 +47,9 @@
 static ManagedStatic<sys::RWMutex> TypeMapLock;
 
 // Recursive lock used for guarding access to AbstractTypeUsers.
-static ManagedStatic<sys::Mutex> AbstractTypeUsersLock;
+// NOTE: The false template parameter means this will no-op when we're not in
+// multithreaded mode.
+static ManagedStatic<sys::SmartMutex<true> > AbstractTypeUsersLock;
 
 // Concrete/Abstract TypeDescriptions - We lazily calculate type descriptions
 // for types as they are needed.  Because resolution of types must invalidate
@@ -1469,13 +1471,9 @@
 // it.  This function is called primarily by the PATypeHandle class.
 void Type::addAbstractTypeUser(AbstractTypeUser *U) const {
   assert(isAbstract() && "addAbstractTypeUser: Current type not abstract!");
-  if (llvm_is_multithreaded()) {
-    AbstractTypeUsersLock->acquire();
-    AbstractTypeUsers.push_back(U);
-    AbstractTypeUsersLock->release();
-  } else {
-    AbstractTypeUsers.push_back(U);
-  }
+  AbstractTypeUsersLock->acquire();
+  AbstractTypeUsers.push_back(U);
+  AbstractTypeUsersLock->release();
 }
 
 
@@ -1485,7 +1483,7 @@
 // is annihilated, because there is no way to get a reference to it ever again.
 //
 void Type::removeAbstractTypeUser(AbstractTypeUser *U) const {
-  if (llvm_is_multithreaded()) AbstractTypeUsersLock->acquire();
+  AbstractTypeUsersLock->acquire();
   
   // Search from back to front because we will notify users from back to
   // front.  Also, it is likely that there will be a stack like behavior to
@@ -1514,7 +1512,7 @@
   this->destroy();
   }
   
-  if (llvm_is_multithreaded()) AbstractTypeUsersLock->release();
+  AbstractTypeUsersLock->release();
 }
 
 // unlockedRefineAbstractTypeTo - This function is used when it is discovered
@@ -1565,7 +1563,7 @@
   // will not cause users to drop off of the use list.  If we resolve to ourself
   // we succeed!
   //
-  if (llvm_is_multithreaded()) AbstractTypeUsersLock->acquire();
+  AbstractTypeUsersLock->acquire();
   while (!AbstractTypeUsers.empty() && NewTy != this) {
     AbstractTypeUser *User = AbstractTypeUsers.back();
 
@@ -1581,7 +1579,7 @@
     assert(AbstractTypeUsers.size() != OldSize &&
            "AbsTyUser did not remove self from user list!");
   }
-  if (llvm_is_multithreaded()) AbstractTypeUsersLock->release();
+  AbstractTypeUsersLock->release();
 
   // If we were successful removing all users from the type, 'this' will be
   // deleted when the last PATypeHolder is destroyed or updated from this type.
@@ -1612,7 +1610,7 @@
   DOUT << "typeIsREFINED type: " << (void*)this << " " << *this << "\n";
 #endif
 
-  if (llvm_is_multithreaded()) AbstractTypeUsersLock->acquire();
+  AbstractTypeUsersLock->acquire();
   unsigned OldSize = AbstractTypeUsers.size(); OldSize=OldSize;
   while (!AbstractTypeUsers.empty()) {
     AbstractTypeUser *ATU = AbstractTypeUsers.back();
@@ -1621,7 +1619,7 @@
     assert(AbstractTypeUsers.size() < OldSize-- &&
            "AbstractTypeUser did not remove itself from the use list!");
   }
-  if (llvm_is_multithreaded()) AbstractTypeUsersLock->release();
+  AbstractTypeUsersLock->release();
 }
 
 // refineAbstractType - Called when a contained type is found to be more





More information about the llvm-commits mailing list