-
Notifications
You must be signed in to change notification settings - Fork 13.3k
[lldb][TypeSystem][NFCI] Log creation of new TypeSystem instances to expression log #91985
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…expression log We emit `ASTContext` and `TypeSystem` pointers into the `expr` log but there is no easy way (that I know of) to correlate the pointer value back to an easily readible form. This patch simply logs the name of the `TypeSystem` and the associated `ASTContext` into the `expr` channel whenever we create a new `TypeSystemClang`.
@llvm/pr-subscribers-lldb Author: Michael Buch (Michael137) ChangesWe emit The following is an example of the new log entries:
Full diff: https://github.com/llvm/llvm-project/pull/91985.diff 2 Files Affected:
diff --git a/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp b/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
index d0033fcd9cdfc..a7b5c55098de2 100644
--- a/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
+++ b/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
@@ -501,6 +501,8 @@ TypeSystemClang::TypeSystemClang(llvm::StringRef name,
// The caller didn't pass an ASTContext so create a new one for this
// TypeSystemClang.
CreateASTContext();
+
+ LogCreation();
}
TypeSystemClang::TypeSystemClang(llvm::StringRef name,
@@ -510,6 +512,8 @@ TypeSystemClang::TypeSystemClang(llvm::StringRef name,
m_ast_up.reset(&existing_ctxt);
GetASTMap().Insert(&existing_ctxt, this);
+
+ LogCreation();
}
// Destructor
@@ -544,13 +548,16 @@ lldb::TypeSystemSP TypeSystemClang::CreateInstance(lldb::LanguageType language,
}
}
+ lldb::TypeSystemSP instance;
+
if (module) {
std::string ast_name =
"ASTContext for '" + module->GetFileSpec().GetPath() + "'";
- return std::make_shared<TypeSystemClang>(ast_name, triple);
+ instance = std::make_shared<TypeSystemClang>(ast_name, triple);
} else if (target && target->IsValid())
- return std::make_shared<ScratchTypeSystemClang>(*target, triple);
- return lldb::TypeSystemSP();
+ instance = std::make_shared<ScratchTypeSystemClang>(*target, triple);
+
+ return instance;
}
LanguageSet TypeSystemClang::GetSupportedLanguagesForTypes() {
@@ -630,7 +637,7 @@ void TypeSystemClang::SetExternalSource(
ast.setExternalSource(ast_source_up);
}
-ASTContext &TypeSystemClang::getASTContext() {
+ASTContext &TypeSystemClang::getASTContext() const {
assert(m_ast_up);
return *m_ast_up;
}
@@ -9750,3 +9757,9 @@ bool TypeSystemClang::SetDeclIsForcefullyCompleted(const clang::TagDecl *td) {
metadata->SetIsForcefullyCompleted();
return true;
}
+
+void TypeSystemClang::LogCreation() const {
+ if (auto *log = GetLog(LLDBLog::Expressions))
+ LLDB_LOG(log, "Created new TypeSystem for (ASTContext*){0:x} '{1}'",
+ &getASTContext(), getDisplayName());
+}
diff --git a/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h b/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
index 59ca69622d9e8..6ba2c44c36584 100644
--- a/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
+++ b/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
@@ -162,7 +162,7 @@ class TypeSystemClang : public TypeSystem {
llvm::StringRef getDisplayName() const { return m_display_name; }
/// Returns the clang::ASTContext instance managed by this TypeSystemClang.
- clang::ASTContext &getASTContext();
+ clang::ASTContext &getASTContext() const;
clang::MangleContext *getMangleContext();
@@ -1166,6 +1166,8 @@ class TypeSystemClang : public TypeSystem {
bool IsTypeImpl(lldb::opaque_compiler_type_t type,
llvm::function_ref<bool(clang::QualType)> predicate) const;
+ void LogCreation() const;
+
// Classes that inherit from TypeSystemClang can see and modify these
std::string m_target_triple;
std::unique_ptr<clang::ASTContext> m_ast_up;
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
We emit
ASTContext
andTypeSystem
pointers into theexpr
log but there is no easy way (that I know of) to correlate the pointer value back to an easily readible form. This patch simply logs the name of theTypeSystem
and the associatedASTContext
into theexpr
channel whenever we create a newTypeSystemClang
.The following is an example of the new log entries: