Reorder serialization methods.
When serializing DeclStmt, encode a bit indicating whether or not the DeclStmt owns the Decl. This is an interim solution. llvm-svn: 54410
This commit is contained in:
parent
44a15697ad
commit
8d78a09a56
|
@ -470,11 +470,33 @@ ContinueStmt* ContinueStmt::CreateImpl(Deserializer& D, ASTContext& C) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeclStmt::EmitImpl(Serializer& S) const {
|
void DeclStmt::EmitImpl(Serializer& S) const {
|
||||||
// FIXME: special handling for struct decls.
|
|
||||||
S.EmitOwnedPtr(getDecl());
|
|
||||||
S.Emit(StartLoc);
|
S.Emit(StartLoc);
|
||||||
S.Emit(EndLoc);
|
S.Emit(EndLoc);
|
||||||
|
|
||||||
|
// FIXME: Clean up ownership of the Decl.
|
||||||
|
const ScopedDecl* d = getDecl();
|
||||||
|
|
||||||
|
if (!S.isRegistered(d)) {
|
||||||
|
S.EmitBool(true);
|
||||||
|
S.EmitOwnedPtr(d);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
S.EmitBool(false);
|
||||||
|
S.EmitPtr(d);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DeclStmt* DeclStmt::CreateImpl(Deserializer& D, ASTContext& C) {
|
||||||
|
SourceLocation StartLoc = SourceLocation::ReadVal(D);
|
||||||
|
SourceLocation EndLoc = SourceLocation::ReadVal(D);
|
||||||
|
|
||||||
|
bool OwnsDecl = D.ReadBool();
|
||||||
|
ScopedDecl* decl = cast<ScopedDecl>(OwnsDecl ? D.ReadOwnedPtr<Decl>(C)
|
||||||
|
: D.ReadPtr<Decl>());
|
||||||
|
|
||||||
|
return new DeclStmt(decl, StartLoc, EndLoc);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void DeclRefExpr::EmitImpl(Serializer& S) const {
|
void DeclRefExpr::EmitImpl(Serializer& S) const {
|
||||||
S.Emit(Loc);
|
S.Emit(Loc);
|
||||||
|
@ -520,24 +542,6 @@ DeclRefExpr* DeclRefExpr::CreateImpl(Deserializer& D, ASTContext& C) {
|
||||||
return new DeclRefExpr(decl,T,Loc);
|
return new DeclRefExpr(decl,T,Loc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjCSuperRefExpr::EmitImpl(Serializer& S) const {
|
|
||||||
S.Emit(Loc);
|
|
||||||
S.Emit(getType());
|
|
||||||
}
|
|
||||||
|
|
||||||
ObjCSuperRefExpr* ObjCSuperRefExpr::CreateImpl(Deserializer& D, ASTContext& C) {
|
|
||||||
SourceLocation Loc = SourceLocation::ReadVal(D);
|
|
||||||
QualType T = QualType::ReadVal(D);
|
|
||||||
return new ObjCSuperRefExpr(T, Loc);
|
|
||||||
}
|
|
||||||
|
|
||||||
DeclStmt* DeclStmt::CreateImpl(Deserializer& D, ASTContext& C) {
|
|
||||||
ScopedDecl* decl = cast<ScopedDecl>(D.ReadOwnedPtr<Decl>(C));
|
|
||||||
SourceLocation StartLoc = SourceLocation::ReadVal(D);
|
|
||||||
SourceLocation EndLoc = SourceLocation::ReadVal(D);
|
|
||||||
return new DeclStmt(decl, StartLoc, EndLoc);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DefaultStmt::EmitImpl(Serializer& S) const {
|
void DefaultStmt::EmitImpl(Serializer& S) const {
|
||||||
S.Emit(DefaultLoc);
|
S.Emit(DefaultLoc);
|
||||||
S.EmitOwnedPtr(getSubStmt());
|
S.EmitOwnedPtr(getSubStmt());
|
||||||
|
@ -1101,6 +1105,17 @@ ObjCStringLiteral* ObjCStringLiteral::CreateImpl(Deserializer& D, ASTContext& C)
|
||||||
return new ObjCStringLiteral(String,T,L);
|
return new ObjCStringLiteral(String,T,L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObjCSuperRefExpr::EmitImpl(Serializer& S) const {
|
||||||
|
S.Emit(Loc);
|
||||||
|
S.Emit(getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
ObjCSuperRefExpr* ObjCSuperRefExpr::CreateImpl(Deserializer& D, ASTContext& C) {
|
||||||
|
SourceLocation Loc = SourceLocation::ReadVal(D);
|
||||||
|
QualType T = QualType::ReadVal(D);
|
||||||
|
return new ObjCSuperRefExpr(T, Loc);
|
||||||
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// C++ Serialization
|
// C++ Serialization
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
Loading…
Reference in New Issue