From: Argyrios Kyrtzidis Date: Mon, 13 Sep 2010 11:45:41 +0000 (+0000) Subject: Avoid setters in ASTDeclReader::VisitClassTemplatePartialSpecializationDecl. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8fed4b4bc93cce4d15bdb79f9e30cc25a93c8143;p=clang Avoid setters in ASTDeclReader::VisitClassTemplatePartialSpecializationDecl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113743 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/DeclTemplate.h b/include/clang/AST/DeclTemplate.h index a868b9c6a4..930da22a66 100644 --- a/include/clang/AST/DeclTemplate.h +++ b/include/clang/AST/DeclTemplate.h @@ -1513,18 +1513,11 @@ public: return TemplateParams; } - void initTemplateParameters(TemplateParameterList *Params) { - assert(TemplateParams == 0 && "TemplateParams already set"); - TemplateParams = Params; - } - /// Get the template arguments as written. TemplateArgumentLoc *getTemplateArgsAsWritten() const { return ArgsAsWritten; } - void initTemplateArgsAsWritten(const TemplateArgumentListInfo &ArgInfos); - /// Get the number of template arguments as written. unsigned getNumTemplateArgsAsWritten() const { return NumArgsAsWritten; @@ -1533,8 +1526,7 @@ public: /// \brief Get the sequence number for this class template partial /// specialization. unsigned getSequenceNumber() const { return SequenceNumber; } - void setSequenceNumber(unsigned N) { SequenceNumber = N; } - + /// \brief Retrieve the member class template partial specialization from /// which this particular class template partial specialization was /// instantiated. @@ -1618,6 +1610,9 @@ public: static bool classof(const ClassTemplatePartialSpecializationDecl *) { return true; } + + friend class ASTDeclReader; + friend class ASTDeclWriter; }; /// Declaration of a class template. diff --git a/lib/AST/DeclTemplate.cpp b/lib/AST/DeclTemplate.cpp index 66321d3ec2..d96b830d17 100644 --- a/lib/AST/DeclTemplate.cpp +++ b/lib/AST/DeclTemplate.cpp @@ -577,19 +577,6 @@ ClassTemplatePartialSpecializationDecl::Create(ASTContext &Context, return new (Context)ClassTemplatePartialSpecializationDecl(); } -void ClassTemplatePartialSpecializationDecl:: -initTemplateArgsAsWritten(const TemplateArgumentListInfo &ArgInfos) { - assert(ArgsAsWritten == 0 && "ArgsAsWritten already set"); - unsigned N = ArgInfos.size(); - TemplateArgumentLoc *ClonedArgs - = new (getASTContext()) TemplateArgumentLoc[N]; - for (unsigned I = 0; I != N; ++I) - ClonedArgs[I] = ArgInfos[I]; - - ArgsAsWritten = ClonedArgs; - NumArgsAsWritten = N; -} - //===----------------------------------------------------------------------===// // FriendTemplateDecl Implementation //===----------------------------------------------------------------------===// diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp index fe07217574..77cd426b6e 100644 --- a/lib/Serialization/ASTReaderDecl.cpp +++ b/lib/Serialization/ASTReaderDecl.cpp @@ -1011,23 +1011,25 @@ void ASTDeclReader::VisitClassTemplatePartialSpecializationDecl( ClassTemplatePartialSpecializationDecl *D) { VisitClassTemplateSpecializationDecl(D); - D->initTemplateParameters(Reader.ReadTemplateParameterList(Record, Idx)); - - TemplateArgumentListInfo ArgInfos; + ASTContext &C = *Reader.getContext(); + D->TemplateParams = Reader.ReadTemplateParameterList(Record, Idx); + unsigned NumArgs = Record[Idx++]; - while (NumArgs--) - ArgInfos.addArgument(Reader.ReadTemplateArgumentLoc(Cursor, Record, Idx)); - D->initTemplateArgsAsWritten(ArgInfos); - - D->setSequenceNumber(Record[Idx++]); + if (NumArgs) { + D->NumArgsAsWritten = NumArgs; + D->ArgsAsWritten = new (C) TemplateArgumentLoc[NumArgs]; + for (unsigned i=0; i != NumArgs; ++i) + D->ArgsAsWritten[i] = Reader.ReadTemplateArgumentLoc(Cursor, Record, Idx); + } + + D->SequenceNumber = Record[Idx++]; // These are read/set from/to the first declaration. if (D->getPreviousDeclaration() == 0) { - D->setInstantiatedFromMember( + D->InstantiatedFromMember.setPointer( cast_or_null( Reader.GetDecl(Record[Idx++]))); - if (Record[Idx++]) - D->setMemberSpecialization(); + D->InstantiatedFromMember.setInt(Record[Idx++]); } }