diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-06-06 20:11:53 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-06-06 20:11:53 +0000 |
commit | 400d95fb7bb9fac609f8613862b84f3a2a7d510f (patch) | |
tree | f496098847865f208b099e6369a615f13c97c636 /lib/AST/DeclObjC.cpp | |
parent | 1c8a413c1e00636c77666ddf1e3b0311f3fa8c81 (diff) |
Implement "Destroy" and destructor for ObjCClassDecl, allowing us to reclaim its memory and the memory of the Decls it owns.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52059 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/DeclObjC.cpp')
-rw-r--r-- | lib/AST/DeclObjC.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp index a0d281808e..08df62d5b9 100644 --- a/lib/AST/DeclObjC.cpp +++ b/lib/AST/DeclObjC.cpp @@ -134,6 +134,23 @@ ObjCClassDecl *ObjCClassDecl::Create(ASTContext &C, return new (Mem) ObjCClassDecl(L, Elts, nElts); } +ObjCClassDecl::~ObjCClassDecl() { + delete [] ForwardDecls; +} + +void ObjCClassDecl::Destroy(ASTContext& C) { + + // FIXME: There is no clear ownership policy now for referenced + // ObjCInterfaceDecls. Some of them can be forward declarations that + // are never later defined (in which case the ObjCClassDecl owns them) + // or the ObjCInterfaceDecl later becomes a real definition later. Ideally + // we should have separate objects for forward declarations and definitions, + // obviating this problem. Because of this situation, referenced + // ObjCInterfaceDecls are destroyed in ~TranslationUnit. + + Decl::Destroy(C); +} + ObjCForwardProtocolDecl * ObjCForwardProtocolDecl::Create(ASTContext &C, SourceLocation L, |