diff options
author | Owen Anderson <resistor@mac.com> | 2009-07-16 23:44:30 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2009-07-16 23:44:30 +0000 |
commit | ce032b483ca96093b84f69178cdb2d047e124332 (patch) | |
tree | 786a371b3156bf0711bb6843d058d1392f268977 /lib/VMCore/Constants.cpp | |
parent | b8e9ac834a9c253e3f8f5caa8f229bafba0b4fcf (diff) |
Privatize the MDNode uniquing table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76126 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Constants.cpp')
-rw-r--r-- | lib/VMCore/Constants.cpp | 31 |
1 files changed, 3 insertions, 28 deletions
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index cf01a9feef..7631e3cdb2 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -1443,8 +1443,6 @@ void MDString::destroyConstant() { //---- MDNode::get() implementation // -static ManagedStatic<FoldingSet<MDNode> > MDNodeSet; - MDNode::MDNode(Value*const* Vals, unsigned NumVals) : Constant(Type::MetadataTy, MDNodeVal, 0, 0) { for (unsigned i = 0; i != NumVals; ++i) @@ -1456,32 +1454,8 @@ void MDNode::Profile(FoldingSetNodeID &ID) const { ID.AddPointer(*I); } -MDNode *MDNode::get(Value*const* Vals, unsigned NumVals) { - FoldingSetNodeID ID; - for (unsigned i = 0; i != NumVals; ++i) - ID.AddPointer(Vals[i]); - - ConstantsLock->reader_acquire(); - void *InsertPoint; - MDNode *N = MDNodeSet->FindNodeOrInsertPos(ID, InsertPoint); - ConstantsLock->reader_release(); - - if (!N) { - sys::SmartScopedWriter<true> Writer(*ConstantsLock); - N = MDNodeSet->FindNodeOrInsertPos(ID, InsertPoint); - if (!N) { - // InsertPoint will have been set by the FindNodeOrInsertPos call. - N = new(0) MDNode(Vals, NumVals); - MDNodeSet->InsertNode(N, InsertPoint); - } - } - return N; -} - void MDNode::destroyConstant() { - sys::SmartScopedWriter<true> Writer(*ConstantsLock); - MDNodeSet->RemoveNode(this); - + getType()->getContext().erase(this); destroyConstantImpl(); } @@ -2519,7 +2493,8 @@ void MDNode::replaceElement(Value *From, Value *To) { Values.push_back(Val); } - MDNode *Replacement = MDNode::get(&Values[0], Values.size()); + MDNode *Replacement = + getType()->getContext().getMDNode(&Values[0], Values.size()); assert(Replacement != this && "I didn't contain From!"); uncheckedReplaceAllUsesWith(Replacement); |