]> granicus.if.org Git - clang/commitdiff
allocate and dellocate objc decl list through AST Context instead of
authorChris Lattner <sabre@nondot.org>
Fri, 20 Feb 2009 21:44:01 +0000 (21:44 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 20 Feb 2009 21:44:01 +0000 (21:44 +0000)
with new/delete.  With disable-free, this reduces the number of 4/8 byte
mallocs from 4793/1541 to 865/456 and also drops other sizes as well.

This is a very small perf win, nothing major.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65171 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/DeclObjC.cpp

index 4e22ebea16b0c0696b2055cd407ddb229c53062d..461bb9697fe93fd2e5ddc37a7a4d170b8bd82396 100644 (file)
@@ -21,7 +21,7 @@ using namespace clang;
 //===----------------------------------------------------------------------===//
 
 void ObjCListBase::Destroy(ASTContext &Ctx) {
-  delete[] List;
+  Ctx.Deallocate(List);
   NumElts = 0;
   List = 0;
 }
@@ -30,7 +30,8 @@ void ObjCListBase::set(void *const* InList, unsigned Elts, ASTContext &Ctx) {
   assert(List == 0 && "Elements already set!");
   if (Elts == 0) return;  // Setting to an empty list is a noop.
   
-  List = new void*[Elts];
+  
+  List = new (Ctx) void*[Elts];
   NumElts = Elts;
   memcpy(List, InList, sizeof(void*)*Elts);
 }