diff --git a/llvm/lib/VMCore/Constants.cpp b/llvm/lib/VMCore/Constants.cpp index 529c45557bc1..02c33528ecfb 100644 --- a/llvm/lib/VMCore/Constants.cpp +++ b/llvm/lib/VMCore/Constants.cpp @@ -232,7 +232,6 @@ ConstantInt::ConstantInt(const IntegerType *Ty, const APInt& V) ConstantInt* ConstantInt::getTrue(LLVMContext &Context) { LLVMContextImpl *pImpl = Context.pImpl; - sys::SmartScopedWriter(pImpl->ConstantsLock); if (pImpl->TheTrueVal) return pImpl->TheTrueVal; else @@ -242,7 +241,6 @@ ConstantInt* ConstantInt::getTrue(LLVMContext &Context) { ConstantInt* ConstantInt::getFalse(LLVMContext &Context) { LLVMContextImpl *pImpl = Context.pImpl; - sys::SmartScopedWriter(pImpl->ConstantsLock); if (pImpl->TheFalseVal) return pImpl->TheFalseVal; else @@ -261,22 +259,9 @@ ConstantInt *ConstantInt::get(LLVMContext &Context, const APInt& V) { const IntegerType *ITy = IntegerType::get(Context, V.getBitWidth()); // get an existing value or the insertion position DenseMapAPIntKeyInfo::KeyTy Key(V, ITy); - - Context.pImpl->ConstantsLock.reader_acquire(); ConstantInt *&Slot = Context.pImpl->IntConstants[Key]; - Context.pImpl->ConstantsLock.reader_release(); - - if (!Slot) { - sys::SmartScopedWriter Writer(Context.pImpl->ConstantsLock); - ConstantInt *&NewSlot = Context.pImpl->IntConstants[Key]; - if (!Slot) { - NewSlot = new ConstantInt(ITy, V); - } - - return NewSlot; - } else { - return Slot; - } + if (!Slot) Slot = new ConstantInt(ITy, V); + return Slot; } Constant* ConstantInt::get(const Type* Ty, uint64_t V, bool isSigned) { @@ -405,32 +390,24 @@ ConstantFP* ConstantFP::get(LLVMContext &Context, const APFloat& V) { LLVMContextImpl* pImpl = Context.pImpl; - pImpl->ConstantsLock.reader_acquire(); ConstantFP *&Slot = pImpl->FPConstants[Key]; - pImpl->ConstantsLock.reader_release(); if (!Slot) { - sys::SmartScopedWriter Writer(pImpl->ConstantsLock); - ConstantFP *&NewSlot = pImpl->FPConstants[Key]; - if (!NewSlot) { - const Type *Ty; - if (&V.getSemantics() == &APFloat::IEEEsingle) - Ty = Type::getFloatTy(Context); - else if (&V.getSemantics() == &APFloat::IEEEdouble) - Ty = Type::getDoubleTy(Context); - else if (&V.getSemantics() == &APFloat::x87DoubleExtended) - Ty = Type::getX86_FP80Ty(Context); - else if (&V.getSemantics() == &APFloat::IEEEquad) - Ty = Type::getFP128Ty(Context); - else { - assert(&V.getSemantics() == &APFloat::PPCDoubleDouble && - "Unknown FP format"); - Ty = Type::getPPC_FP128Ty(Context); - } - NewSlot = new ConstantFP(Ty, V); + const Type *Ty; + if (&V.getSemantics() == &APFloat::IEEEsingle) + Ty = Type::getFloatTy(Context); + else if (&V.getSemantics() == &APFloat::IEEEdouble) + Ty = Type::getDoubleTy(Context); + else if (&V.getSemantics() == &APFloat::x87DoubleExtended) + Ty = Type::getX86_FP80Ty(Context); + else if (&V.getSemantics() == &APFloat::IEEEquad) + Ty = Type::getFP128Ty(Context); + else { + assert(&V.getSemantics() == &APFloat::PPCDoubleDouble && + "Unknown FP format"); + Ty = Type::getPPC_FP128Ty(Context); } - - return NewSlot; + Slot = new ConstantFP(Ty, V); } return Slot; @@ -1908,7 +1885,6 @@ void ConstantArray::replaceUsesOfWithOnConstant(Value *From, Value *To, Replacement = ConstantAggregateZero::get(getType()); } else { // Check to see if we have this array type already. - sys::SmartScopedWriter Writer(pImpl->ConstantsLock); bool Exists; LLVMContextImpl::ArrayConstantsTy::MapTy::iterator I = pImpl->ArrayConstants.InsertOrGetItem(Lookup, Exists); @@ -1987,7 +1963,6 @@ void ConstantStruct::replaceUsesOfWithOnConstant(Value *From, Value *To, Replacement = ConstantAggregateZero::get(getType()); } else { // Check to see if we have this array type already. - sys::SmartScopedWriter Writer(pImpl->ConstantsLock); bool Exists; LLVMContextImpl::StructConstantsTy::MapTy::iterator I = pImpl->StructConstants.InsertOrGetItem(Lookup, Exists); diff --git a/llvm/lib/VMCore/LLVMContextImpl.h b/llvm/lib/VMCore/LLVMContextImpl.h index 83888c3907bf..58e8870d24e5 100644 --- a/llvm/lib/VMCore/LLVMContextImpl.h +++ b/llvm/lib/VMCore/LLVMContextImpl.h @@ -96,7 +96,6 @@ struct DenseMapAPFloatKeyInfo { class LLVMContextImpl { public: - sys::SmartRWMutex ConstantsLock; typedef DenseMap IntMapTy; IntMapTy IntConstants; diff --git a/llvm/lib/VMCore/Metadata.cpp b/llvm/lib/VMCore/Metadata.cpp index 0528e48259e7..0434c6dd2a19 100644 --- a/llvm/lib/VMCore/Metadata.cpp +++ b/llvm/lib/VMCore/Metadata.cpp @@ -52,7 +52,6 @@ void MetadataBase::resizeOperands(unsigned NumOps) { // MDString *MDString::get(LLVMContext &Context, const StringRef &Str) { LLVMContextImpl *pImpl = Context.pImpl; - sys::SmartScopedWriter Writer(pImpl->ConstantsLock); StringMapEntry &Entry = pImpl->MDStringCache.GetOrCreateValue(Str); MDString *&S = Entry.getValue(); @@ -93,12 +92,10 @@ MDNode *MDNode::get(LLVMContext &Context, Value*const* Vals, unsigned NumVals) { void *InsertPoint; MDNode *N; { - sys::SmartScopedReader Reader(pImpl->ConstantsLock); N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint); } if (N) return N; - sys::SmartScopedWriter Writer(pImpl->ConstantsLock); N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint); if (!N) { // InsertPoint will have been set by the FindNodeOrInsertPos call. @@ -118,7 +115,6 @@ void MDNode::dropAllReferences() { MDNode::~MDNode() { { LLVMContextImpl *pImpl = getType()->getContext().pImpl; - sys::SmartScopedWriter Writer(pImpl->ConstantsLock); pImpl->MDNodeSet.RemoveNode(this); } dropAllReferences(); @@ -147,10 +143,7 @@ void MDNode::replaceElement(Value *From, Value *To) { return; // Remove "this" from the context map. - { - sys::SmartScopedWriter Writer(pImpl->ConstantsLock); - pImpl->MDNodeSet.RemoveNode(this); - } + pImpl->MDNodeSet.RemoveNode(this); // MDNode only lists metadata elements in operand list, because MDNode // used by MDNode is considered a valid use. However on the side, MDNode @@ -186,10 +179,8 @@ void MDNode::replaceElement(Value *From, Value *To) { // node with updated "this" node. FoldingSetNodeID ID; Profile(ID); - pImpl->ConstantsLock.reader_acquire(); void *InsertPoint; MDNode *N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint); - pImpl->ConstantsLock.reader_release(); if (N) { N->replaceAllUsesWith(this); @@ -197,14 +188,11 @@ void MDNode::replaceElement(Value *From, Value *To) { N = 0; } - { - sys::SmartScopedWriter Writer(pImpl->ConstantsLock); - N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint); - if (!N) { - // InsertPoint will have been set by the FindNodeOrInsertPos call. - N = this; - pImpl->MDNodeSet.InsertNode(N, InsertPoint); - } + N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint); + if (!N) { + // InsertPoint will have been set by the FindNodeOrInsertPos call. + N = this; + pImpl->MDNodeSet.InsertNode(N, InsertPoint); } }