]> granicus.if.org Git - clang/commitdiff
Report memory usage for global code completion results in CXTUMemoryUsage.
authorTed Kremenek <kremenek@apple.com>
Mon, 18 Apr 2011 23:42:53 +0000 (23:42 +0000)
committerTed Kremenek <kremenek@apple.com>
Mon, 18 Apr 2011 23:42:53 +0000 (23:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129733 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang-c/Index.h
tools/c-index-test/c-index-test.c
tools/libclang/CIndex.cpp

index 11e060b27a4ebcf9ad5bc361f0f6b5405e40136d..728db9060075a222cc383607ba36feba0df85a6e 100644 (file)
@@ -1020,8 +1020,9 @@ enum CXTUMemoryUsageKind {
   CXTUMemoryUsage_AST = 1,
   CXTUMemoryUsage_Identifiers = 2,
   CXTUMemoryUsage_Selectors = 3,
+  CXTUMemoryUsage_GlobalCompletionResults = 4,
   CXTUMemoryUsage_First = CXTUMemoryUsage_AST,
-  CXTUMemoryUsage_Last = CXTUMemoryUsage_Selectors
+  CXTUMemoryUsage_Last = CXTUMemoryUsage_GlobalCompletionResults
 };
 
 /**
index b7025fc396586be90f395b2d81d17d7cbc39febd..a1065a832f4acdfda6f6687a53987ac16a8749d0 100644 (file)
@@ -371,19 +371,18 @@ void PrintDiagnostics(CXTranslationUnit TU) {
 }
 
 void PrintMemoryUsage(CXTranslationUnit TU) {
-  CXTUMemoryUsage usage = clang_getCXTUMemoryUsage(TU);
   unsigned long total = 0.0;
-  unsigned i, n;
-
+  unsigned i = 0;
+  CXTUMemoryUsage usage = clang_getCXTUMemoryUsage(TU);
   fprintf(stderr, "Memory usage:\n");
-  for (i = 0, n = usage.numEntries; i != n; ++i) {
+  for (i = 0 ; i != usage.numEntries; ++i) {
     const char *name = clang_getTUMemoryUsageName(usage.entries[i].kind);
     unsigned long amount = usage.entries[i].amount;
     total += amount;
-    fprintf(stderr, "  %s : %ld bytes (%lf MBytes)\n", name, amount,
+    fprintf(stderr, "  %s : %ld bytes (%f MBytes)\n", name, amount,
             ((double) amount)/(1024*1024));
   }
-  fprintf(stderr, "  TOTAL = %ld bytes (%lf MBytes)\n", total,
+  fprintf(stderr, "  TOTAL = %ld bytes (%f MBytes)\n", total,
           ((double) total)/(1024*1024));
   clang_disposeCXTUMemoryUsage(usage);  
 }
@@ -1548,9 +1547,9 @@ static void print_usage(void) {
           "<symbol filter> {<args>}*\n"
     "       c-index-test -test-annotate-tokens=<range> {<args>}*\n"
     "       c-index-test -test-inclusion-stack-source {<args>}*\n"
-    "       c-index-test -test-inclusion-stack-tu <AST file>\n"
-    "       c-index-test -test-print-linkage-source {<args>}*\n");
+    "       c-index-test -test-inclusion-stack-tu <AST file>\n");
   fprintf(stderr,
+    "       c-index-test -test-print-linkage-source {<args>}*\n"
     "       c-index-test -test-print-typekind {<args>}*\n"
     "       c-index-test -print-usr [<CursorKind> {<args>}]*\n"
     "       c-index-test -print-usr-file <file>\n"
index 2ac57bf2080cd7a61758b82bfa26b96af5e70874..0d0f08f4e111f588f209bab013f550f757777d88 100644 (file)
@@ -5202,6 +5202,8 @@ const char *clang_getTUMemoryUsageName(CXTUMemoryUsageKind kind) {
       break;
     case CXTUMemoryUsage_Selectors:
       str = "ASTContext: selectors";
+    case CXTUMemoryUsage_GlobalCompletionResults:
+      str = "Code completion: cached global results";
   }
   return str;
 }
@@ -5228,6 +5230,16 @@ CXTUMemoryUsage clang_getCXTUMemoryUsage(CXTranslationUnit TU) {
   createCXTUMemoryUsageEntry(*entries, CXTUMemoryUsage_Selectors,
     (unsigned long) astContext.Selectors.getTotalMemory());
   
+  // How much memory is used for caching global code completion results?
+  unsigned long completionBytes = 0;
+  if (GlobalCodeCompletionAllocator *completionAllocator =
+      astUnit->getCachedCompletionAllocator().getPtr()) {
+    completionBytes = completionAllocator-> getTotalMemory();
+  }
+  createCXTUMemoryUsageEntry(*entries, CXTUMemoryUsage_GlobalCompletionResults,
+    completionBytes);
+
+
   CXTUMemoryUsage usage = { (void*) entries.get(),
                             (unsigned) entries->size(),
                             entries->size() ? &(*entries)[0] : 0 };