From a9a4a24592a2164114a8a36717650e6341eb67a4 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Thu, 1 Nov 2007 18:11:32 +0000 Subject: [PATCH] Implemented serialization of QualTypes within ASTContext. Clarified ownership model of some type pointers. Added FIXMEs to serialization. Added comments to ASTContext indicating which variables we are intentionally *not* serializing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43618 91177308-0d34-0410-b5e6-96231b3b80d8 --- AST/ASTContext.cpp | 23 +++++++++++++++++++++-- include/clang/AST/ASTContext.h | 7 +++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/AST/ASTContext.cpp b/AST/ASTContext.cpp index acba398fb3..3ebc1af0cd 100644 --- a/AST/ASTContext.cpp +++ b/AST/ASTContext.cpp @@ -1419,9 +1419,17 @@ void ASTContext::Emit(llvm::Serializer& S) const { EmitSet(VectorTypes,S); EmitSet(FunctionTypeNoProtos,S); EmitSet(FunctionTypeProtos,S); - // FIXME: EmitSet(ObjcQualifiedInterfaceTypes,S); - // FIXME: RecourdLayoutInfo + + S.Emit(BuiltinVaListType); + S.Emit(ObjcIdType); + S.EmitPtr(IdStructType); + S.Emit(ObjcProtoType); + S.EmitPtr(ProtoStructType); + S.Emit(ObjcClassType); + S.EmitPtr(ClassStructType); + S.Emit(ObjcConstantStringType); + // FIXME: S.EmitOwnedPtr(CFConstantStringTypeDecl); } ASTContext* ASTContext::Materialize(llvm::Deserializer& D) { @@ -1466,6 +1474,17 @@ ASTContext* ASTContext::Materialize(llvm::Deserializer& D) { ReadSet(A->VectorTypes, A->Types, D); ReadSet(A->FunctionTypeNoProtos, A->Types, D); ReadSet(A->FunctionTypeProtos, A->Types, D); + // ReadSet(A->ObjcQualifiedInterfaceTypes,D); + + D.Read(A->BuiltinVaListType); + D.Read(A->ObjcIdType); + D.ReadPtr(A->IdStructType); + D.Read(A->ObjcProtoType); + D.ReadPtr(A->ProtoStructType); + D.Read(A->ObjcClassType); + D.ReadPtr(A->ClassStructType); + D.Read(A->ObjcConstantStringType); + // FIXME: A->CFConstantStringTypeDecl = D.ReadOwnedPtr(); return A; } diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index d8dc9d4992..e236f2a56b 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -42,6 +42,9 @@ class ASTContext { llvm::FoldingSet FunctionTypeNoProtos; llvm::FoldingSet FunctionTypeProtos; llvm::FoldingSet ObjcQualifiedInterfaceTypes; + + /// RecordLayoutInfo - A cache mapping from RecordDecls to RecordLayoutInfo. + /// This is lazily created. This is intentionally not serialized. llvm::DenseMap RecordLayoutInfo; /// BuiltinVaListType - built-in va list type. @@ -73,6 +76,10 @@ public: TargetInfo &Target; IdentifierTable &Idents; SelectorTable &Selectors; + + /// This is intentionally not serialized. It is populated by the + /// ASTContext ctor, and there are no external pointers/references to + /// internal variables of BuiltinInfo. Builtin::Context BuiltinInfo; // Builtin Types. -- 2.40.0