aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-11-07 22:32:23 +0000
committerTed Kremenek <kremenek@apple.com>2007-11-07 22:32:23 +0000
commit28f3d80c661c8de51856cfb91131939c866e533c (patch)
treeb494ac9896c221d1157d5369736a77f53fd3e11d
parentb70a88e67491d41877aab3a56947866e70435d64 (diff)
Modified serialization of BinaryOperator and CaseStmt to use the new
BatchEmitOwnedPtrs() and BatchReadOwnedPtrs() methods. Modified serialization of all Stmts to start their own record in the bitstream. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43846 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--AST/StmtSerialization.cpp22
1 files changed, 10 insertions, 12 deletions
diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp
index 7c671c6a31..5314dacd61 100644
--- a/AST/StmtSerialization.cpp
+++ b/AST/StmtSerialization.cpp
@@ -19,6 +19,7 @@
using namespace clang;
void Stmt::Emit(llvm::Serializer& S) const {
+ S.FlushRecord();
S.EmitInt(getStmtClass());
directEmit(S);
}
@@ -112,16 +113,16 @@ void BinaryOperator::directEmit(llvm::Serializer& S) const {
S.EmitInt(Opc);
S.Emit(OpLoc);;
S.Emit(getType());
- S.EmitOwnedPtr(getLHS());
- S.EmitOwnedPtr(getRHS());
+ S.BatchEmitOwnedPtrs(getLHS(),getRHS());
}
BinaryOperator* BinaryOperator::directMaterialize(llvm::Deserializer& D) {
Opcode Opc = static_cast<Opcode>(D.ReadInt());
SourceLocation OpLoc = SourceLocation::ReadVal(D);
QualType Result = QualType::ReadVal(D);
- Expr* LHS = D.ReadOwnedPtr<Expr>();
- Expr* RHS = D.ReadOwnedPtr<Expr>();
+ Expr *LHS, *RHS;
+ D.BatchReadOwnedPtrs(LHS,RHS);
+
return new BinaryOperator(LHS,RHS,Opc,Result,OpLoc);
}
@@ -136,21 +137,18 @@ BreakStmt* BreakStmt::directMaterialize(llvm::Deserializer& D) {
void CaseStmt::directEmit(llvm::Serializer& S) const {
S.Emit(CaseLoc);
- S.EmitOwnedPtr(getLHS());
- S.EmitOwnedPtr(getRHS());
- S.EmitOwnedPtr(getSubStmt());
S.EmitPtr(getNextSwitchCase());
+ S.BatchEmitOwnedPtrs(getLHS(),getRHS(),getSubStmt());
}
CaseStmt* CaseStmt::directMaterialize(llvm::Deserializer& D) {
SourceLocation CaseLoc = SourceLocation::ReadVal(D);
- Expr* LHS = D.ReadOwnedPtr<Expr>();
- Expr* RHS = D.ReadOwnedPtr<Expr>();
- Stmt* SubStmt = D.ReadOwnedPtr<Stmt>();
+ Expr *LHS, *RHS;
+ Stmt* SubStmt;
+ D.BatchReadOwnedPtrs(LHS,RHS,SubStmt);
CaseStmt* stmt = new CaseStmt(LHS,RHS,SubStmt,CaseLoc);
- stmt->setNextSwitchCase(D.ReadPtr<SwitchCase>());
-
+ stmt->setNextSwitchCase(D.ReadPtr<SwitchCase>());
return stmt;
}