From 9eb5c93d34b7de9bd4387481c5048d3b13085712 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Tue, 4 Aug 2009 23:47:44 +0000 Subject: [PATCH] Privatize the VectorType uniquing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78125 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/VMCore/LLVMContextImpl.h | 1 + lib/VMCore/Type.cpp | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/VMCore/LLVMContextImpl.h b/lib/VMCore/LLVMContextImpl.h index 5e027cb907f..a92b571f699 100644 --- a/lib/VMCore/LLVMContextImpl.h +++ b/lib/VMCore/LLVMContextImpl.h @@ -129,6 +129,7 @@ struct LLVMContextImpl { ConstantInt *TheFalseVal; TypeMap ArrayTypes; + TypeMap VectorTypes; LLVMContextImpl() : TheTrueVal(0), TheFalseVal(0) { } }; diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp index 3c1a67f3a1c..610036ef0d5 100644 --- a/lib/VMCore/Type.cpp +++ b/lib/VMCore/Type.cpp @@ -818,19 +818,19 @@ bool ArrayType::isValidElementType(const Type *ElemTy) { return true; } -static ManagedStatic > VectorTypes; - VectorType *VectorType::get(const Type *ElementType, unsigned NumElements) { assert(ElementType && "Can't get vector of types!"); VectorValType PVT(ElementType, NumElements); VectorType *PT = 0; + LLVMContextImpl *pImpl = ElementType->getContext().pImpl; + sys::SmartScopedLock L(*TypeMapLock); - PT = VectorTypes->get(PVT); + PT = pImpl->VectorTypes.get(PVT); if (!PT) { - VectorTypes->add(PVT, PT = new VectorType(ElementType, NumElements)); + pImpl->VectorTypes.add(PVT, PT = new VectorType(ElementType, NumElements)); } #ifdef DEBUG_MERGE_TYPES DOUT << "Derived new type: " << *PT << "\n"; @@ -1130,11 +1130,13 @@ void ArrayType::typeBecameConcrete(const DerivedType *AbsTy) { // void VectorType::refineAbstractType(const DerivedType *OldType, const Type *NewType) { - VectorTypes->RefineAbstractType(this, OldType, NewType); + LLVMContextImpl *pImpl = OldType->getContext().pImpl; + pImpl->VectorTypes.RefineAbstractType(this, OldType, NewType); } void VectorType::typeBecameConcrete(const DerivedType *AbsTy) { - VectorTypes->TypeBecameConcrete(this, AbsTy); + LLVMContextImpl *pImpl = AbsTy->getContext().pImpl; + pImpl->VectorTypes.TypeBecameConcrete(this, AbsTy); } // refineAbstractType - Called when a contained type is found to be more -- 2.34.1