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(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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue