diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-11-01 18:11:32 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-11-01 18:11:32 +0000 |
commit | a9a4a24592a2164114a8a36717650e6341eb67a4 (patch) | |
tree | 6184fd9a449e421b0b38e1a2766cecaafb669db5 | |
parent | ecb01e666665efabd2aa76a76f6080e2a78965fa (diff) |
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
-rw-r--r-- | AST/ASTContext.cpp | 23 | ||||
-rw-r--r-- | 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<RecordDecl>(); 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<FunctionTypeNoProto> FunctionTypeNoProtos; llvm::FoldingSet<FunctionTypeProto> FunctionTypeProtos; llvm::FoldingSet<ObjcQualifiedInterfaceType> ObjcQualifiedInterfaceTypes; + + /// RecordLayoutInfo - A cache mapping from RecordDecls to RecordLayoutInfo. + /// This is lazily created. This is intentionally not serialized. llvm::DenseMap<const RecordDecl*, const RecordLayout*> 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. |