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.

llvm-svn: 43618
This commit is contained in:
Ted Kremenek 2007-11-01 18:11:32 +00:00
parent ac73ff8868
commit 26a7f3fd56
2 changed files with 28 additions and 2 deletions

View File

@ -1419,9 +1419,17 @@ void ASTContext::Emit(llvm::Serializer& S) const {
EmitSet(VectorTypes,S); EmitSet(VectorTypes,S);
EmitSet(FunctionTypeNoProtos,S); EmitSet(FunctionTypeNoProtos,S);
EmitSet(FunctionTypeProtos,S); EmitSet(FunctionTypeProtos,S);
// FIXME: EmitSet(ObjcQualifiedInterfaceTypes,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) { ASTContext* ASTContext::Materialize(llvm::Deserializer& D) {
@ -1466,6 +1474,17 @@ ASTContext* ASTContext::Materialize(llvm::Deserializer& D) {
ReadSet(A->VectorTypes, A->Types, D); ReadSet(A->VectorTypes, A->Types, D);
ReadSet(A->FunctionTypeNoProtos, A->Types, D); ReadSet(A->FunctionTypeNoProtos, A->Types, D);
ReadSet(A->FunctionTypeProtos, 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; return A;
} }

View File

@ -42,6 +42,9 @@ class ASTContext {
llvm::FoldingSet<FunctionTypeNoProto> FunctionTypeNoProtos; llvm::FoldingSet<FunctionTypeNoProto> FunctionTypeNoProtos;
llvm::FoldingSet<FunctionTypeProto> FunctionTypeProtos; llvm::FoldingSet<FunctionTypeProto> FunctionTypeProtos;
llvm::FoldingSet<ObjcQualifiedInterfaceType> ObjcQualifiedInterfaceTypes; 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; llvm::DenseMap<const RecordDecl*, const RecordLayout*> RecordLayoutInfo;
/// BuiltinVaListType - built-in va list type. /// BuiltinVaListType - built-in va list type.
@ -73,6 +76,10 @@ public:
TargetInfo &Target; TargetInfo &Target;
IdentifierTable &Idents; IdentifierTable &Idents;
SelectorTable &Selectors; 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::Context BuiltinInfo;
// Builtin Types. // Builtin Types.