From 9c1efff14b0e001f73c875ed5b184fb3569d641d Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Tue, 4 Dec 2007 00:38:30 +0000 Subject: [PATCH] Implemented serialization of ObjcAtTryStmt. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44566 91177308-0d34-0410-b5e6-96231b3b80d8 --- AST/StmtSerialization.cpp | 17 ++++++++++++++++- include/clang/AST/Stmt.h | 7 ++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index a32e5b992b..ab639d9ade 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -162,6 +162,9 @@ Stmt* Stmt::Create(Deserializer& D) { case ObjcAtFinallyStmtClass: return ObjcAtFinallyStmt::CreateImpl(D); + case ObjcAtTryStmtClass: + return ObjcAtTryStmt::CreateImpl(D); + case ObjCIvarRefExprClass: return ObjCIvarRefExpr::CreateImpl(D); } @@ -861,12 +864,24 @@ ObjcAtFinallyStmt* ObjcAtFinallyStmt::CreateImpl(Deserializer& D) { return new ObjcAtFinallyStmt(Loc,AtFinallyStmt); } +void ObjcAtTryStmt::EmitImpl(Serializer& S) const { + S.Emit(AtTryLoc); + S.BatchEmitOwnedPtrs((unsigned) END_EXPR, &SubStmts[0]); +} + +ObjcAtTryStmt* ObjcAtTryStmt::CreateImpl(Deserializer& D) { + SourceLocation L = SourceLocation::ReadVal(D); + ObjcAtTryStmt* stmt = new ObjcAtTryStmt(L,NULL,NULL,NULL); + D.BatchReadOwnedPtrs((unsigned) END_EXPR, &stmt->SubStmts[0]); + return stmt; +} + void ObjCIvarRefExpr::EmitImpl(Serializer& S) const { S.Emit(Loc); S.Emit(getType()); S.EmitPtr(getDecl()); } - + ObjCIvarRefExpr* ObjCIvarRefExpr::CreateImpl(Deserializer& D) { SourceLocation Loc = SourceLocation::ReadVal(D); QualType T = QualType::ReadVal(D); diff --git a/include/clang/AST/Stmt.h b/include/clang/AST/Stmt.h index 0cfc5c3d6b..fa877ccf94 100644 --- a/include/clang/AST/Stmt.h +++ b/include/clang/AST/Stmt.h @@ -866,8 +866,7 @@ private: enum { TRY, CATCH, FINALLY, END_EXPR }; Stmt* SubStmts[END_EXPR]; - SourceLocation AtTryLoc; - + SourceLocation AtTryLoc; public: ObjcAtTryStmt(SourceLocation atTryLoc, Stmt *atTryStmt, Stmt *atCatchStmt, @@ -904,7 +903,9 @@ public: virtual child_iterator child_begin(); virtual child_iterator child_end(); - + + virtual void EmitImpl(llvm::Serializer& S) const; + static ObjcAtTryStmt* CreateImpl(llvm::Deserializer& D); }; /// ObjcAtThrowStmt - This represents objective-c's @throw statement. -- 2.40.0