This revision was automatically updated to reflect the committed changes. Closed by commit rG5861234e72c0: [lldb] Track the API boundary using a thread_local variable. (authored by JDevlieghere). Herald added a project: LLDB.
Changed prior to commit: https://reviews.llvm.org/D92811?vs=310082&id=310557#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D92811/new/ https://reviews.llvm.org/D92811 Files: lldb/include/lldb/Utility/ReproducerInstrumentation.h lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp lldb/source/Utility/ReproducerInstrumentation.cpp Index: lldb/source/Utility/ReproducerInstrumentation.cpp =================================================================== --- lldb/source/Utility/ReproducerInstrumentation.cpp +++ lldb/source/Utility/ReproducerInstrumentation.cpp @@ -227,4 +227,4 @@ return g_instrumentation_data; } -bool lldb_private::repro::Recorder::g_global_boundary; +thread_local bool lldb_private::repro::Recorder::g_global_boundary = false; Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp =================================================================== --- lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -33,6 +33,7 @@ #include "lldb/Interpreter/CommandReturnObject.h" #include "lldb/Target/Thread.h" #include "lldb/Target/ThreadPlan.h" +#include "lldb/Utility/ReproducerInstrumentation.h" #include "lldb/Utility/Timer.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringRef.h" @@ -437,6 +438,7 @@ : ScriptInterpreterLocker(), m_teardown_session((on_leave & TearDownSession) == TearDownSession), m_python_interpreter(py_interpreter) { + repro::Recorder::PrivateThread(); DoAcquireLock(); if ((on_entry & InitSession) == InitSession) { if (!DoInitSession(on_entry, in, out, err)) { Index: lldb/include/lldb/Utility/ReproducerInstrumentation.h =================================================================== --- lldb/include/lldb/Utility/ReproducerInstrumentation.h +++ lldb/include/lldb/Utility/ReproducerInstrumentation.h @@ -841,6 +841,10 @@ bool ShouldCapture() { return m_local_boundary; } + /// Mark the current thread as a private thread and pretend that everything + /// on this thread is behind happening behind the API boundary. + static void PrivateThread() { g_global_boundary = true; } + private: template <typename T> friend struct replay; void UpdateBoundary() { @@ -868,7 +872,7 @@ bool m_result_recorded; /// Whether we're currently across the API boundary. - static bool g_global_boundary; + static thread_local bool g_global_boundary; }; /// To be used as the "Runtime ID" of a constructor. It also invokes the
Index: lldb/source/Utility/ReproducerInstrumentation.cpp =================================================================== --- lldb/source/Utility/ReproducerInstrumentation.cpp +++ lldb/source/Utility/ReproducerInstrumentation.cpp @@ -227,4 +227,4 @@ return g_instrumentation_data; } -bool lldb_private::repro::Recorder::g_global_boundary; +thread_local bool lldb_private::repro::Recorder::g_global_boundary = false; Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp =================================================================== --- lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -33,6 +33,7 @@ #include "lldb/Interpreter/CommandReturnObject.h" #include "lldb/Target/Thread.h" #include "lldb/Target/ThreadPlan.h" +#include "lldb/Utility/ReproducerInstrumentation.h" #include "lldb/Utility/Timer.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringRef.h" @@ -437,6 +438,7 @@ : ScriptInterpreterLocker(), m_teardown_session((on_leave & TearDownSession) == TearDownSession), m_python_interpreter(py_interpreter) { + repro::Recorder::PrivateThread(); DoAcquireLock(); if ((on_entry & InitSession) == InitSession) { if (!DoInitSession(on_entry, in, out, err)) { Index: lldb/include/lldb/Utility/ReproducerInstrumentation.h =================================================================== --- lldb/include/lldb/Utility/ReproducerInstrumentation.h +++ lldb/include/lldb/Utility/ReproducerInstrumentation.h @@ -841,6 +841,10 @@ bool ShouldCapture() { return m_local_boundary; } + /// Mark the current thread as a private thread and pretend that everything + /// on this thread is behind happening behind the API boundary. + static void PrivateThread() { g_global_boundary = true; } + private: template <typename T> friend struct replay; void UpdateBoundary() { @@ -868,7 +872,7 @@ bool m_result_recorded; /// Whether we're currently across the API boundary. - static bool g_global_boundary; + static thread_local bool g_global_boundary; }; /// To be used as the "Runtime ID" of a constructor. It also invokes the
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits