aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-11-01 18:11:32 +0000
committerTed Kremenek <kremenek@apple.com>2007-11-01 18:11:32 +0000
commita9a4a24592a2164114a8a36717650e6341eb67a4 (patch)
tree6184fd9a449e421b0b38e1a2766cecaafb669db5
parentecb01e666665efabd2aa76a76f6080e2a78965fa (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.cpp23
-rw-r--r--include/clang/AST/ASTContext.h7
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.