From: Argyrios Kyrtzidis Date: Mon, 14 Apr 2008 00:09:21 +0000 (+0000) Subject: Move IdDeclInfoMap class in an anonymous namespace. Suggestion by Chris Lattner. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7bc198fb47a498e327a9ceb2d17612dcb3d15095;p=clang Move IdDeclInfoMap class in an anonymous namespace. Suggestion by Chris Lattner. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49628 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/IdentifierResolver.cpp b/lib/Sema/IdentifierResolver.cpp index 037802c640..c062e80875 100644 --- a/lib/Sema/IdentifierResolver.cpp +++ b/lib/Sema/IdentifierResolver.cpp @@ -69,13 +69,11 @@ public: void RemoveShadowed(NamedDecl *D); }; -} // end anonymous namespace - /// IdDeclInfoMap - Associates IdDeclInfos with Identifiers. /// Allocates 'pools' (vectors of IdDeclInfos) to avoid allocating each /// individual IdDeclInfo to heap. -class IdentifierResolver::IdDeclInfoMap { +class IdDeclInfoMap { static const unsigned int VECTOR_SIZE = 512; // Holds vectors of IdDeclInfos that serve as 'pools'. // New vectors are added when the current one is full. @@ -90,9 +88,13 @@ public: IdDeclInfo &operator[](IdentifierInfo *II); }; +} // end anonymous namespace -IdentifierResolver::IdentifierResolver() : IdDeclInfos(*new IdDeclInfoMap) {} -IdentifierResolver::~IdentifierResolver() { delete &IdDeclInfos; } + +IdentifierResolver::IdentifierResolver() : IdDeclInfos(new IdDeclInfoMap) {} +IdentifierResolver::~IdentifierResolver() { + delete static_cast(IdDeclInfos); +} /// AddDecl - Link the decl to its shadowed decl chain. void IdentifierResolver::AddDecl(NamedDecl *D, Scope *S) { @@ -109,7 +111,8 @@ void IdentifierResolver::AddDecl(NamedDecl *D, Scope *S) { if (isDeclPtr(Ptr)) { II->setFETokenInfo(NULL); - IDI = &IdDeclInfos[II]; + IdDeclInfoMap &Map = *static_cast(IdDeclInfos); + IDI = &Map[II]; IDI->PushShadowed(static_cast(Ptr)); } else IDI = toIdDeclInfo(Ptr); @@ -151,7 +154,8 @@ void IdentifierResolver::AddGlobalDecl(NamedDecl *D) { if (isDeclPtr(Ptr)) { II->setFETokenInfo(NULL); - IDI = &IdDeclInfos[II]; + IdDeclInfoMap &Map = *static_cast(IdDeclInfos); + IDI = &Map[II]; IDI->PushShadowed(static_cast(Ptr)); } else IDI = toIdDeclInfo(Ptr); @@ -231,7 +235,7 @@ void IdDeclInfo::RemoveShadowed(NamedDecl *D) { /// Returns the IdDeclInfo associated to the IdentifierInfo. /// It creates a new IdDeclInfo if one was not created before for this id. -IdDeclInfo &IdentifierResolver::IdDeclInfoMap::operator[](IdentifierInfo *II) { +IdDeclInfo &IdDeclInfoMap::operator[](IdentifierInfo *II) { assert (II && "null IdentifierInfo passed"); void *Ptr = II->getFETokenInfo(); diff --git a/lib/Sema/IdentifierResolver.h b/lib/Sema/IdentifierResolver.h index abe568d602..34b4764d14 100644 --- a/lib/Sema/IdentifierResolver.h +++ b/lib/Sema/IdentifierResolver.h @@ -43,8 +43,9 @@ public: NamedDecl *Lookup(const IdentifierInfo *II, unsigned NSI); private: - class IdDeclInfoMap; - IdDeclInfoMap &IdDeclInfos; + // An instance of IdDeclInfoMap class, that's hidden away in the + // implementation file. + void *IdDeclInfos; }; } // end namespace clang