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:
parent
ac73ff8868
commit
26a7f3fd56
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue