This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG156b997251db: [lldb] Instrument SB API with signposts (authored by JDevlieghere). Herald added a project: LLDB.
Changed prior to commit: https://reviews.llvm.org/D117632?vs=401369&id=401833#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D117632/new/ https://reviews.llvm.org/D117632 Files: lldb/include/lldb/Utility/Instrumentation.h lldb/source/Utility/Instrumentation.cpp Index: lldb/source/Utility/Instrumentation.cpp =================================================================== --- lldb/source/Utility/Instrumentation.cpp +++ lldb/source/Utility/Instrumentation.cpp @@ -6,6 +6,8 @@ //===----------------------------------------------------------------------===// #include "lldb/Utility/Instrumentation.h" +#include "llvm/Support/Signposts.h" + #include <cstdio> #include <cstdlib> #include <limits> @@ -17,21 +19,25 @@ // Whether we're currently across the API boundary. static thread_local bool g_global_boundary = false; +// Instrument SB API calls with singposts when supported. +static llvm::ManagedStatic<llvm::SignpostEmitter> g_api_signposts; + Instrumenter::Instrumenter(llvm::StringRef pretty_func, std::string &&pretty_args) - : m_local_boundary(false) { + : m_pretty_func(pretty_func), m_local_boundary(false) { if (!g_global_boundary) { g_global_boundary = true; m_local_boundary = true; + g_api_signposts->startInterval(this, m_pretty_func); } LLDB_LOG(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API), "[{0}] {1} ({2})", - m_local_boundary ? "external" : "internal", pretty_func, + m_local_boundary ? "external" : "internal", m_pretty_func, pretty_args); } -Instrumenter::~Instrumenter() { UpdateBoundary(); } - -void Instrumenter::UpdateBoundary() { - if (m_local_boundary) +Instrumenter::~Instrumenter() { + if (m_local_boundary) { g_global_boundary = false; + g_api_signposts->endInterval(this, m_pretty_func); + } } Index: lldb/include/lldb/Utility/Instrumentation.h =================================================================== --- lldb/include/lldb/Utility/Instrumentation.h +++ lldb/include/lldb/Utility/Instrumentation.h @@ -86,6 +86,8 @@ private: void UpdateBoundary(); + llvm::StringRef m_pretty_func; + /// Whether this function call was the one crossing the API boundary. bool m_local_boundary = false; };
Index: lldb/source/Utility/Instrumentation.cpp =================================================================== --- lldb/source/Utility/Instrumentation.cpp +++ lldb/source/Utility/Instrumentation.cpp @@ -6,6 +6,8 @@ //===----------------------------------------------------------------------===// #include "lldb/Utility/Instrumentation.h" +#include "llvm/Support/Signposts.h" + #include <cstdio> #include <cstdlib> #include <limits> @@ -17,21 +19,25 @@ // Whether we're currently across the API boundary. static thread_local bool g_global_boundary = false; +// Instrument SB API calls with singposts when supported. +static llvm::ManagedStatic<llvm::SignpostEmitter> g_api_signposts; + Instrumenter::Instrumenter(llvm::StringRef pretty_func, std::string &&pretty_args) - : m_local_boundary(false) { + : m_pretty_func(pretty_func), m_local_boundary(false) { if (!g_global_boundary) { g_global_boundary = true; m_local_boundary = true; + g_api_signposts->startInterval(this, m_pretty_func); } LLDB_LOG(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API), "[{0}] {1} ({2})", - m_local_boundary ? "external" : "internal", pretty_func, + m_local_boundary ? "external" : "internal", m_pretty_func, pretty_args); } -Instrumenter::~Instrumenter() { UpdateBoundary(); } - -void Instrumenter::UpdateBoundary() { - if (m_local_boundary) +Instrumenter::~Instrumenter() { + if (m_local_boundary) { g_global_boundary = false; + g_api_signposts->endInterval(this, m_pretty_func); + } } Index: lldb/include/lldb/Utility/Instrumentation.h =================================================================== --- lldb/include/lldb/Utility/Instrumentation.h +++ lldb/include/lldb/Utility/Instrumentation.h @@ -86,6 +86,8 @@ private: void UpdateBoundary(); + llvm::StringRef m_pretty_func; + /// Whether this function call was the one crossing the API boundary. bool m_local_boundary = false; };
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits