diff options
author | Owen Anderson <resistor@mac.com> | 2009-07-31 21:35:40 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2009-07-31 21:35:40 +0000 |
commit | 647e3016de18d2fc8b0f233a0b356809e3fdcc54 (patch) | |
tree | b7139544af240b94b3627101328ed7a81e3b9580 /lib/VMCore | |
parent | feba7562ec3420b52d9d395ae4b279157c55586b (diff) | |
download | external_llvm-647e3016de18d2fc8b0f233a0b356809e3fdcc54.zip external_llvm-647e3016de18d2fc8b0f233a0b356809e3fdcc54.tar.gz external_llvm-647e3016de18d2fc8b0f233a0b356809e3fdcc54.tar.bz2 |
Move the metadata constructors back to 2.5 syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77733 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
-rw-r--r-- | lib/VMCore/LLVMContext.cpp | 18 | ||||
-rw-r--r-- | lib/VMCore/LLVMContextImpl.cpp | 49 | ||||
-rw-r--r-- | lib/VMCore/LLVMContextImpl.h | 9 | ||||
-rw-r--r-- | lib/VMCore/Metadata.cpp | 41 |
4 files changed, 44 insertions, 73 deletions
diff --git a/lib/VMCore/LLVMContext.cpp b/lib/VMCore/LLVMContext.cpp index 107905f..3cd7158 100644 --- a/lib/VMCore/LLVMContext.cpp +++ b/lib/VMCore/LLVMContext.cpp @@ -31,21 +31,3 @@ LLVMContext& llvm::getGlobalContext() { LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) { } LLVMContext::~LLVMContext() { delete pImpl; } - -// MDNode accessors -MDNode* LLVMContext::getMDNode(Value* const* Vals, unsigned NumVals) { - return pImpl->getMDNode(Vals, NumVals); -} - -// MDString accessors -MDString* LLVMContext::getMDString(const StringRef &Str) { - return pImpl->getMDString(Str.data(), Str.size()); -} - -void LLVMContext::erase(MDString *M) { - pImpl->erase(M); -} - -void LLVMContext::erase(MDNode *M) { - pImpl->erase(M); -} diff --git a/lib/VMCore/LLVMContextImpl.cpp b/lib/VMCore/LLVMContextImpl.cpp index bba5861..b29868a 100644 --- a/lib/VMCore/LLVMContextImpl.cpp +++ b/lib/VMCore/LLVMContextImpl.cpp @@ -20,51 +20,4 @@ using namespace llvm; LLVMContextImpl::LLVMContextImpl(LLVMContext &C) : - Context(C), TheTrueVal(0), TheFalseVal(0) { } - -MDString *LLVMContextImpl::getMDString(const char *StrBegin, - unsigned StrLength) { - sys::SmartScopedWriter<true> Writer(ConstantsLock); - StringMapEntry<MDString *> &Entry = - MDStringCache.GetOrCreateValue(StringRef(StrBegin, StrLength)); - MDString *&S = Entry.getValue(); - if (!S) S = new MDString(Entry.getKeyData(), - Entry.getKeyLength()); - - return S; -} - -MDNode *LLVMContextImpl::getMDNode(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 MDNode(Vals, NumVals); - MDNodeSet.InsertNode(N, InsertPoint); - } - } - - return N; -} - -// *** erase methods *** - -void LLVMContextImpl::erase(MDString *M) { - sys::SmartScopedWriter<true> Writer(ConstantsLock); - MDStringCache.erase(MDStringCache.find(M->getString())); -} - -void LLVMContextImpl::erase(MDNode *M) { - sys::SmartScopedWriter<true> Writer(ConstantsLock); - MDNodeSet.RemoveNode(M); -} + Context(C), TheTrueVal(0), TheFalseVal(0) { }
\ No newline at end of file diff --git a/lib/VMCore/LLVMContextImpl.h b/lib/VMCore/LLVMContextImpl.h index b20b65d..7a29a84 100644 --- a/lib/VMCore/LLVMContextImpl.h +++ b/lib/VMCore/LLVMContextImpl.h @@ -462,15 +462,10 @@ class LLVMContextImpl { friend class ConstantArray; friend class ConstantVector; friend class ConstantAggregateZero; + friend class MDNode; + friend class MDString; public: LLVMContextImpl(LLVMContext &C); - - MDString *getMDString(const char *StrBegin, unsigned StrLength); - - MDNode *getMDNode(Value*const* Vals, unsigned NumVals); - - void erase(MDString *M); - void erase(MDNode *M); }; } diff --git a/lib/VMCore/Metadata.cpp b/lib/VMCore/Metadata.cpp index 48db0b4..bf0611f 100644 --- a/lib/VMCore/Metadata.cpp +++ b/lib/VMCore/Metadata.cpp @@ -11,12 +11,29 @@ // //===----------------------------------------------------------------------===// +#include "LLVMContextImpl.h" #include "llvm/Metadata.h" +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "SymbolTableListTraitsImpl.h" using namespace llvm; //===----------------------------------------------------------------------===// +//MDString implementation +// +MDString *MDString::get(LLVMContext &Context, const StringRef &Str) { + LLVMContextImpl *pImpl = Context.pImpl; + sys::SmartScopedWriter<true> Writer(pImpl->ConstantsLock); + StringMapEntry<MDString *> &Entry = + pImpl->MDStringCache.GetOrCreateValue(Str); + MDString *&S = Entry.getValue(); + if (!S) S = new MDString(Entry.getKeyData(), + Entry.getKeyLength()); + + return S; +} + +//===----------------------------------------------------------------------===// //MDNode implementation // MDNode::MDNode(Value*const* Vals, unsigned NumVals) @@ -30,6 +47,30 @@ void MDNode::Profile(FoldingSetNodeID &ID) const { ID.AddPointer(*I); } +MDNode *MDNode::get(LLVMContext &Context, Value*const* Vals, unsigned NumVals) { + LLVMContextImpl *pImpl = Context.pImpl; + FoldingSetNodeID ID; + for (unsigned i = 0; i != NumVals; ++i) + ID.AddPointer(Vals[i]); + + pImpl->ConstantsLock.reader_acquire(); + void *InsertPoint; + MDNode *N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint); + pImpl->ConstantsLock.reader_release(); + + if (!N) { + sys::SmartScopedWriter<true> Writer(pImpl->ConstantsLock); + N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint); + if (!N) { + // InsertPoint will have been set by the FindNodeOrInsertPos call. + N = new MDNode(Vals, NumVals); + pImpl->MDNodeSet.InsertNode(N, InsertPoint); + } + } + + return N; +} + //===----------------------------------------------------------------------===// //NamedMDNode implementation // |