diff --git a/lldb/include/lldb/Interpreter/ScriptedProcessInterface.h b/lldb/include/lldb/Interpreter/ScriptedProcessInterface.h index efdea6df2d417..d62767417f339 100644 --- a/lldb/include/lldb/Interpreter/ScriptedProcessInterface.h +++ b/lldb/include/lldb/Interpreter/ScriptedProcessInterface.h @@ -68,11 +68,9 @@ class ScriptedProcessInterface : virtual public ScriptedInterface { protected: friend class ScriptedThread; - virtual lldb::ScriptedThreadInterfaceSP GetScriptedThreadInterface() { + virtual lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface() { return nullptr; } - - lldb::ScriptedThreadInterfaceSP m_scripted_thread_interface_sp = nullptr; }; class ScriptedThreadInterface : virtual public ScriptedInterface { diff --git a/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp b/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp index 959b8c5818852..4185e1b67587b 100644 --- a/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp +++ b/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp @@ -29,7 +29,9 @@ void ScriptedThread::CheckInterpreterAndScriptObject() const { } ScriptedThread::ScriptedThread(ScriptedProcess &process, Status &error) - : Thread(process, LLDB_INVALID_THREAD_ID), m_scripted_process(process) { + : Thread(process, LLDB_INVALID_THREAD_ID), m_scripted_process(process), + m_scripted_thread_interface_sp( + m_scripted_process.GetInterface().CreateScriptedThreadInterface()) { if (!process.IsValid()) { error.SetErrorString("Invalid scripted process"); return; @@ -190,7 +192,7 @@ void ScriptedThread::RefreshStateAfterStop() { } lldb::ScriptedThreadInterfaceSP ScriptedThread::GetInterface() const { - return m_scripted_process.GetInterface().GetScriptedThreadInterface(); + return m_scripted_thread_interface_sp; } std::shared_ptr ScriptedThread::GetDynamicRegisterInfo() { diff --git a/lldb/source/Plugins/Process/scripted/ScriptedThread.h b/lldb/source/Plugins/Process/scripted/ScriptedThread.h index cdcd543702a48..54b095777ab73 100644 --- a/lldb/source/Plugins/Process/scripted/ScriptedThread.h +++ b/lldb/source/Plugins/Process/scripted/ScriptedThread.h @@ -59,6 +59,7 @@ class ScriptedThread : public lldb_private::Thread { std::shared_ptr GetDynamicRegisterInfo(); const ScriptedProcess &m_scripted_process; + lldb::ScriptedThreadInterfaceSP m_scripted_thread_interface_sp = nullptr; std::shared_ptr m_register_info_sp = nullptr; lldb_private::StructuredData::ObjectSP m_script_object_sp = nullptr; }; diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.cpp index 447bceebb00b4..29516c4c4501e 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.cpp @@ -165,12 +165,8 @@ ScriptedProcessPythonInterface::GetScriptedThreadPluginName() { } lldb::ScriptedThreadInterfaceSP -ScriptedProcessPythonInterface::GetScriptedThreadInterface() { - if (!m_scripted_thread_interface_sp) - m_scripted_thread_interface_sp = - std::make_shared(m_interpreter); - - return m_scripted_thread_interface_sp; +ScriptedProcessPythonInterface::CreateScriptedThreadInterface() { + return std::make_shared(m_interpreter); } #endif diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h index ac4e768b2d31b..83507a93bb973 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h @@ -57,7 +57,7 @@ class ScriptedProcessPythonInterface : public ScriptedProcessInterface, llvm::Optional GetScriptedThreadPluginName() override; private: - lldb::ScriptedThreadInterfaceSP GetScriptedThreadInterface() override; + lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface() override; }; } // namespace lldb_private