diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-12-04 00:50:10 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-12-04 00:50:10 +0000 |
commit | dc0d909f0f6684159c8475db1a15967e5613cb27 (patch) | |
tree | c718ba2b64295bdd9581a92f1d5393e1b2392ed1 /lib/Analysis/AnalysisContext.cpp | |
parent | 9aef7263d84d9224575e113878cfbb06b8343cbf (diff) |
Refactor FoldingSet profiling code for LocationContexts, and add a new BlockInvocationContext to represent the invocation of a block.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90506 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/AnalysisContext.cpp')
-rw-r--r-- | lib/Analysis/AnalysisContext.cpp | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/lib/Analysis/AnalysisContext.cpp b/lib/Analysis/AnalysisContext.cpp index 339e2c93ce..d79b4e7fe5 100644 --- a/lib/Analysis/AnalysisContext.cpp +++ b/lib/Analysis/AnalysisContext.cpp @@ -80,6 +80,10 @@ AnalysisContext *AnalysisContextManager::getContext(const Decl *D) { return AC; } +//===----------------------------------------------------------------------===// +// FoldingSet profiling. +//===----------------------------------------------------------------------===// + void LocationContext::Profile(llvm::FoldingSetNodeID &ID, ContextKind k, AnalysisContext *ctx, const LocationContext *parent) { @@ -88,18 +92,31 @@ void LocationContext::Profile(llvm::FoldingSetNodeID &ID, ContextKind k, ID.AddPointer(parent); } -void StackFrameContext::Profile(llvm::FoldingSetNodeID &ID,AnalysisContext *ctx, - const LocationContext *parent, const Stmt *s) { - LocationContext::Profile(ID, StackFrame, ctx, parent); - ID.AddPointer(s); +void LocationContext::ProfileCommon(llvm::FoldingSetNodeID &ID, + ContextKind ck, + AnalysisContext *ctx, + const LocationContext *parent, + const void* data) { + LocationContext::Profile(ID, ck, ctx, parent); + ID.AddPointer(data); } -void ScopeContext::Profile(llvm::FoldingSetNodeID &ID, AnalysisContext *ctx, - const LocationContext *parent, const Stmt *s) { - LocationContext::Profile(ID, Scope, ctx, parent); - ID.AddPointer(s); +void StackFrameContext::Profile(llvm::FoldingSetNodeID &ID) { + Profile(ID, getAnalysisContext(), getParent(), CallSite); } +void ScopeContext::Profile(llvm::FoldingSetNodeID &ID) { + Profile(ID, getAnalysisContext(), getParent(), Enter); +} + +void BlockInvocationContext::Profile(llvm::FoldingSetNodeID &ID) { + Profile(ID, getAnalysisContext(), getParent(), BD); +} + +//===----------------------------------------------------------------------===// +// Cleanup. +//===----------------------------------------------------------------------===// + LocationContextManager::~LocationContextManager() { clear(); } |