diff options
| author | Ted Kremenek <kremenek@apple.com> | 2011-05-04 01:38:46 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2011-05-04 01:38:46 +0000 |
| commit | 2160a0d3d740082407730537b12ad925e36f9a5f (patch) | |
| tree | 5be2eeaa04ed7492852558e318fdebb53f24e7d4 /clang/tools/libclang/CIndex.cpp | |
| parent | 37a477f7eb484aaaf3f714d119412f5ab46b6b6d (diff) | |
| download | bcm5719-llvm-2160a0d3d740082407730537b12ad925e36f9a5f.tar.gz bcm5719-llvm-2160a0d3d740082407730537b12ad925e36f9a5f.zip | |
Enhance clang_getCXTUResourceUsage() to return the amount of memory used by the Preprocessor's bump allocator as well as those from the PreprocessingRecord.
llvm-svn: 130823
Diffstat (limited to 'clang/tools/libclang/CIndex.cpp')
| -rw-r--r-- | clang/tools/libclang/CIndex.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index e6774dc895c..7e697a7c07f 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -5246,6 +5246,12 @@ const char *clang_getTUResourceUsageName(CXTUResourceUsageKind kind) { case CXTUResourceUsage_ExternalASTSource_Membuffer_MMap: str = "ExternalASTSource: mmap'ed memory buffers"; break; + case CXTUResourceUsage_Preprocessor: + str = "Preprocessor: malloc'ed memory"; + break; + case CXTUResourceUsage_PreprocessingRecord: + str = "Preprocessor: PreprocessingRecord"; + break; } return str; } @@ -5280,7 +5286,7 @@ CXTUResourceUsage clang_getCXTUResourceUsage(CXTranslationUnit TU) { unsigned long completionBytes = 0; if (GlobalCodeCompletionAllocator *completionAllocator = astUnit->getCachedCompletionAllocator().getPtr()) { - completionBytes = completionAllocator-> getTotalMemory(); + completionBytes = completionAllocator->getTotalMemory(); } createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_GlobalCompletionResults, @@ -5314,7 +5320,21 @@ CXTUResourceUsage clang_getCXTUResourceUsage(CXTranslationUnit TU) { CXTUResourceUsage_ExternalASTSource_Membuffer_MMap, (unsigned long) sizes.mmap_bytes); } - + + // How much memory is being used by the Preprocessor? + Preprocessor &pp = astUnit->getPreprocessor(); + const llvm::BumpPtrAllocator &ppAlloc = pp.getPreprocessorAllocator(); + createCXTUResourceUsageEntry(*entries, + CXTUResourceUsage_Preprocessor, + ppAlloc.getTotalMemory()); + + if (PreprocessingRecord *pRec = pp.getPreprocessingRecord()) { + createCXTUResourceUsageEntry(*entries, + CXTUResourceUsage_PreprocessingRecord, + pRec->getTotalMemory()); + } + + CXTUResourceUsage usage = { (void*) entries.get(), (unsigned) entries->size(), entries->size() ? &(*entries)[0] : 0 }; |

