]> granicus.if.org Git - clang/commitdiff
Enhance clang_getCXTUResourceUsage() to report the amount of memory used by SourceMan...
authorTed Kremenek <kremenek@apple.com>
Thu, 28 Apr 2011 04:10:31 +0000 (04:10 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 28 Apr 2011 04:10:31 +0000 (04:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130380 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang-c/Index.h
include/clang/Basic/SourceManager.h
tools/libclang/CIndex.cpp

index 341e49a5129baa201b05d02117fe2e7681620219..6b6e7bf242104208b5f3e3b23547780991e44617 100644 (file)
@@ -1021,13 +1021,14 @@ enum CXTUResourceUsageKind {
   CXTUResourceUsage_Identifiers = 2,
   CXTUResourceUsage_Selectors = 3,
   CXTUResourceUsage_GlobalCompletionResults = 4,
+  CXTUResourceUsage_SourceManagerContentCache = 5,
 
   CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN = CXTUResourceUsage_AST,
   CXTUResourceUsage_MEMORY_IN_BYTES_END =
-    CXTUResourceUsage_GlobalCompletionResults,
+    CXTUResourceUsage_SourceManagerContentCache,
 
   CXTUResourceUsage_First = CXTUResourceUsage_AST,
-  CXTUResourceUsage_Last = CXTUResourceUsage_GlobalCompletionResults
+  CXTUResourceUsage_Last = CXTUResourceUsage_SourceManagerContentCache
 };
 
 /**
index 653142dbee38c01082810eb429dc11ed53fe3253..1907ed5cc676480dc1b2d528b63795f78536efbf 100644 (file)
@@ -849,6 +849,16 @@ public:
   /// \brief Retrieve the stored line table.
   LineTableInfo &getLineTable();
 
+  //===--------------------------------------------------------------------===//
+  // Queries for performance analysis.
+  //===--------------------------------------------------------------------===//
+
+  /// Return the total amount of physical memory allocated by the
+  /// ContentCache allocator.
+  size_t getContentCacheSize() const {
+    return ContentCacheAlloc.getTotalMemory();
+  }
+
   //===--------------------------------------------------------------------===//
   // Other miscellaneous methods.
   //===--------------------------------------------------------------------===//
index 673f3eb5091d0398b744227baab0a54c23422608..c72d49634bd13a0f5db70926749cd36235a53e40 100644 (file)
@@ -5220,6 +5220,9 @@ const char *clang_getTUResourceUsageName(CXTUResourceUsageKind kind) {
     case CXTUResourceUsage_GlobalCompletionResults:
       str = "Code completion: cached global results";
       break;
+    case CXTUResourceUsage_SourceManagerContentCache:
+      str = "SourceManager: content cache allocator";
+      break;
   }
   return str;
 }
@@ -5252,8 +5255,14 @@ CXTUResourceUsage clang_getCXTUResourceUsage(CXTranslationUnit TU) {
       astUnit->getCachedCompletionAllocator().getPtr()) {
     completionBytes = completionAllocator-> getTotalMemory();
   }
-  createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_GlobalCompletionResults,
-    completionBytes);
+  createCXTUResourceUsageEntry(*entries,
+                               CXTUResourceUsage_GlobalCompletionResults,
+                               completionBytes);
+  
+  // How much memory is being used by SourceManager's content cache?
+  createCXTUResourceUsageEntry(*entries,
+          CXTUResourceUsage_SourceManagerContentCache,
+          (unsigned long) astContext.getSourceManager().getContentCacheSize());
 
 
   CXTUResourceUsage usage = { (void*) entries.get(),