зеркало из https://github.com/microsoft/clang-1.git
Implemented serialization of FunctionTypeProto.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43419 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
e81e24c84b
Коммит
4340bfa9f4
|
@ -172,3 +172,34 @@ FunctionTypeNoProto* FunctionTypeNoProto::Materialize(llvm::Deserializer& D) {
|
|||
T->ReadFunctionTypeInternal(D);
|
||||
return T;
|
||||
}
|
||||
|
||||
void FunctionTypeProto::Emit(llvm::Serializer& S) const {
|
||||
S.EmitInt(NumArgs);
|
||||
EmitFunctionTypeInternal(S);
|
||||
|
||||
for (arg_type_iterator i = arg_type_begin(), e = arg_type_end(); i!=e; ++i)
|
||||
S.Emit(*i);
|
||||
}
|
||||
|
||||
FunctionTypeProto* FunctionTypeProto::Materialize(llvm::Deserializer& D) {
|
||||
unsigned NumArgs = D.ReadInt();
|
||||
|
||||
FunctionTypeProto *FTP =
|
||||
(FunctionTypeProto*)malloc(sizeof(FunctionTypeProto) +
|
||||
NumArgs*sizeof(QualType));
|
||||
|
||||
// Default construct. Internal fields will be populated using
|
||||
// deserialization.
|
||||
new (FTP) FunctionTypeProto();
|
||||
|
||||
FTP->NumArgs = NumArgs;
|
||||
FTP->ReadFunctionTypeInternal(D);
|
||||
|
||||
// Fill in the trailing argument array.
|
||||
QualType *ArgInfo = reinterpret_cast<QualType *>(FTP+1);;
|
||||
|
||||
for (unsigned i = 0; i != NumArgs; ++i)
|
||||
D.Read(ArgInfo[i]);
|
||||
|
||||
return FTP;
|
||||
}
|
||||
|
|
|
@ -790,6 +790,14 @@ public:
|
|||
static void Profile(llvm::FoldingSetNodeID &ID, QualType Result,
|
||||
arg_type_iterator ArgTys, unsigned NumArgs,
|
||||
bool isVariadic);
|
||||
|
||||
void Emit(llvm::Serializer& S) const;
|
||||
static FunctionTypeProto* Materialize(llvm::Deserializer& D);
|
||||
|
||||
protected:
|
||||
// Used by deserialization.
|
||||
FunctionTypeProto()
|
||||
: FunctionType(FunctionProto, QualType(), false, QualType()) {}
|
||||
};
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче