JDevlieghere created this revision.
JDevlieghere added reviewers: zturner, davide.
Herald added a subscriber: abidh.
Herald added a project: LLDB.
This patch limits the scope of the python header to the python script
interpreter plugin by removing the include from ScriptInterpreterPython.h. To
make that possible I had to forward declare the PythonDataObjects and move the
PythonScriptInterpreterLocker into ScriptInterpreterPython.cpp.
Repository:
rLLDB LLDB
https://reviews.llvm.org/D59976
Files:
lldb/source/API/SBHostOS.cpp
lldb/source/API/SystemInitializerFull.cpp
lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h
lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h
Index: lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h
===================================================================
--- lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h
+++ lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h
@@ -32,6 +32,12 @@
#undef _XOPEN_SOURCE
#endif
+// Include locale before Python so _PY_PORT_CTYPE_UTF8_ISSUE doesn't cause
+// macro redefinitions.
+#if defined(__APPLE__)
+#include <locale>
+#endif
+
// Include python for non windows machines
#include <Python.h>
#endif // LLDB_DISABLE_PYTHON
Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h
===================================================================
--- lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h
+++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h
@@ -19,16 +19,23 @@
#include <string>
#include <vector>
-#include "PythonDataObjects.h"
#include "lldb/Breakpoint/BreakpointOptions.h"
#include "lldb/Core/IOHandler.h"
#include "lldb/Host/Terminal.h"
#include "lldb/Interpreter/ScriptInterpreter.h"
#include "lldb/lldb-private.h"
+// Python forward declarations
+struct _ts;
+typedef _ts PyThreadState;
+
class IOHandlerPythonInterpreter;
namespace lldb_private {
+class PythonScriptInterpreterLocker;
+class PythonFile;
+class PythonObject;
+class PythonDictionary;
class ScriptInterpreterPython : public ScriptInterpreter,
public IOHandlerDelegateMultiline {
@@ -41,6 +48,7 @@
};
friend class ::IOHandlerPythonInterpreter;
+ friend class lldb_private::PythonScriptInterpreterLocker;
ScriptInterpreterPython(CommandInterpreter &interpreter);
@@ -324,46 +332,6 @@
uint32_t GetPluginVersion() override;
- class Locker : public ScriptInterpreterLocker {
- public:
- enum OnEntry {
- AcquireLock = 0x0001,
- InitSession = 0x0002,
- InitGlobals = 0x0004,
- NoSTDIN = 0x0008
- };
-
- enum OnLeave {
- FreeLock = 0x0001,
- FreeAcquiredLock = 0x0002, // do not free the lock if we already held it
- // when calling constructor
- TearDownSession = 0x0004
- };
-
- Locker(ScriptInterpreterPython *py_interpreter = nullptr,
- uint16_t on_entry = AcquireLock | InitSession,
- uint16_t on_leave = FreeLock | TearDownSession, FILE *in = nullptr,
- FILE *out = nullptr, FILE *err = nullptr);
-
- ~Locker() override;
-
- private:
- bool DoAcquireLock();
-
- bool DoInitSession(uint16_t on_entry_flags, FILE *in, FILE *out, FILE *err);
-
- bool DoFreeLock();
-
- bool DoTearDownSession();
-
- static void ReleasePythonLock();
-
- bool m_teardown_session;
- ScriptInterpreterPython *m_python_interpreter;
- // FILE* m_tmp_fh;
- PyGILState_STATE m_GILState;
- };
-
protected:
static void InitializePrivate();
@@ -422,15 +390,16 @@
bool SetStdHandle(File &file, const char *py_name, PythonFile &save_file,
const char *mode);
- PythonFile m_saved_stdin;
- PythonFile m_saved_stdout;
- PythonFile m_saved_stderr;
- PythonObject m_main_module;
- PythonObject m_lldb_module;
- PythonDictionary m_session_dict;
- PythonDictionary m_sys_module_dict;
- PythonObject m_run_one_line_function;
- PythonObject m_run_one_line_str_global;
+ // Unique pointers so the corresponding class can be forward declared.
+ std::unique_ptr<PythonFile> m_saved_stdin;
+ std::unique_ptr<PythonFile> m_saved_stdout;
+ std::unique_ptr<PythonFile> m_saved_stderr;
+ std::unique_ptr<PythonObject> m_main_module;
+ std::unique_ptr<PythonObject> m_lldb_module;
+ std::unique_ptr<PythonDictionary> m_session_dict;
+ std::unique_ptr<PythonDictionary> m_sys_module_dict;
+ std::unique_ptr<PythonObject> m_run_one_line_function;
+ std::unique_ptr<PythonObject> m_run_one_line_str_global;
std::string m_dictionary_name;
TerminalState m_terminal_state;
ActiveIOHandler m_active_io_handler;
Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
===================================================================
--- lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -193,6 +193,111 @@
static bool g_initialized = false;
+namespace lldb_private {
+class PythonScriptInterpreterLocker : public ScriptInterpreterLocker {
+public:
+ enum OnEntry {
+ AcquireLock = 0x0001,
+ InitSession = 0x0002,
+ InitGlobals = 0x0004,
+ NoSTDIN = 0x0008
+ };
+
+ enum OnLeave {
+ FreeLock = 0x0001,
+ FreeAcquiredLock = 0x0002, // do not free the lock if we already held it
+ // when calling constructor
+ TearDownSession = 0x0004
+ };
+
+ PythonScriptInterpreterLocker(
+ ScriptInterpreterPython *py_interpreter = nullptr,
+ uint16_t on_entry = AcquireLock | InitSession,
+ uint16_t on_leave = FreeLock | TearDownSession, FILE *in = nullptr,
+ FILE *out = nullptr, FILE *err = nullptr);
+
+ ~PythonScriptInterpreterLocker() override;
+
+private:
+ bool DoAcquireLock();
+
+ bool DoInitSession(uint16_t on_entry_flags, FILE *in, FILE *out, FILE *err);
+
+ bool DoFreeLock();
+
+ bool DoTearDownSession();
+
+ static void ReleasePythonLock();
+
+ bool m_teardown_session;
+ ScriptInterpreterPython *m_python_interpreter;
+ // FILE* m_tmp_fh;
+ PyGILState_STATE m_GILState;
+};
+
+PythonScriptInterpreterLocker::PythonScriptInterpreterLocker(
+ ScriptInterpreterPython *py_interpreter, uint16_t on_entry,
+ uint16_t on_leave, FILE *in, FILE *out, FILE *err)
+ : ScriptInterpreterLocker(),
+ m_teardown_session((on_leave & TearDownSession) == TearDownSession),
+ m_python_interpreter(py_interpreter) {
+ DoAcquireLock();
+ if ((on_entry & InitSession) == InitSession) {
+ if (!DoInitSession(on_entry, in, out, err)) {
+ // Don't teardown the session if we didn't init it.
+ m_teardown_session = false;
+ }
+ }
+}
+
+bool PythonScriptInterpreterLocker::DoAcquireLock() {
+ Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT));
+ m_GILState = PyGILState_Ensure();
+ LLDB_LOGV(log, "Ensured PyGILState. Previous state = {0}locked",
+ m_GILState == PyGILState_UNLOCKED ? "un" : "");
+
+ // we need to save the thread state when we first start the command because
+ // we might decide to interrupt it while some action is taking place outside
+ // of Python (e.g. printing to screen, waiting for the network, ...) in that
+ // case, _PyThreadState_Current will be NULL - and we would be unable to set
+ // the asynchronous exception - not a desirable situation
+ m_python_interpreter->SetThreadState(PyThreadState_Get());
+ m_python_interpreter->IncrementLockCount();
+ return true;
+}
+
+bool PythonScriptInterpreterLocker::DoInitSession(uint16_t on_entry_flags,
+ FILE *in, FILE *out,
+ FILE *err) {
+ if (!m_python_interpreter)
+ return false;
+ return m_python_interpreter->EnterSession(on_entry_flags, in, out, err);
+}
+
+bool PythonScriptInterpreterLocker::DoFreeLock() {
+ Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT));
+ LLDB_LOGV(log, "Releasing PyGILState. Returning to state = {0}locked",
+ m_GILState == PyGILState_UNLOCKED ? "un" : "");
+ PyGILState_Release(m_GILState);
+ m_python_interpreter->DecrementLockCount();
+ return true;
+}
+
+bool PythonScriptInterpreterLocker::DoTearDownSession() {
+ if (!m_python_interpreter)
+ return false;
+ m_python_interpreter->LeaveSession();
+ return true;
+}
+
+PythonScriptInterpreterLocker::~PythonScriptInterpreterLocker() {
+ if (m_teardown_session)
+ DoTearDownSession();
+ DoFreeLock();
+}
+
+} // namespace lldb_private
+
namespace {
// Initializing Python is not a straightforward process. We cannot control
@@ -296,75 +401,20 @@
};
}
-ScriptInterpreterPython::Locker::Locker(ScriptInterpreterPython *py_interpreter,
- uint16_t on_entry, uint16_t on_leave,
- FILE *in, FILE *out, FILE *err)
- : ScriptInterpreterLocker(),
- m_teardown_session((on_leave & TearDownSession) == TearDownSession),
- m_python_interpreter(py_interpreter) {
- DoAcquireLock();
- if ((on_entry & InitSession) == InitSession) {
- if (!DoInitSession(on_entry, in, out, err)) {
- // Don't teardown the session if we didn't init it.
- m_teardown_session = false;
- }
- }
-}
-
-bool ScriptInterpreterPython::Locker::DoAcquireLock() {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT));
- m_GILState = PyGILState_Ensure();
- LLDB_LOGV(log, "Ensured PyGILState. Previous state = {0}locked",
- m_GILState == PyGILState_UNLOCKED ? "un" : "");
-
- // we need to save the thread state when we first start the command because
- // we might decide to interrupt it while some action is taking place outside
- // of Python (e.g. printing to screen, waiting for the network, ...) in that
- // case, _PyThreadState_Current will be NULL - and we would be unable to set
- // the asynchronous exception - not a desirable situation
- m_python_interpreter->SetThreadState(PyThreadState_Get());
- m_python_interpreter->IncrementLockCount();
- return true;
-}
-
-bool ScriptInterpreterPython::Locker::DoInitSession(uint16_t on_entry_flags,
- FILE *in, FILE *out,
- FILE *err) {
- if (!m_python_interpreter)
- return false;
- return m_python_interpreter->EnterSession(on_entry_flags, in, out, err);
-}
-
-bool ScriptInterpreterPython::Locker::DoFreeLock() {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SCRIPT));
- LLDB_LOGV(log, "Releasing PyGILState. Returning to state = {0}locked",
- m_GILState == PyGILState_UNLOCKED ? "un" : "");
- PyGILState_Release(m_GILState);
- m_python_interpreter->DecrementLockCount();
- return true;
-}
-
-bool ScriptInterpreterPython::Locker::DoTearDownSession() {
- if (!m_python_interpreter)
- return false;
- m_python_interpreter->LeaveSession();
- return true;
-}
-
-ScriptInterpreterPython::Locker::~Locker() {
- if (m_teardown_session)
- DoTearDownSession();
- DoFreeLock();
-}
-
ScriptInterpreterPython::ScriptInterpreterPython(
CommandInterpreter &interpreter)
: ScriptInterpreter(interpreter, eScriptLanguagePython),
- IOHandlerDelegateMultiline("DONE"), m_saved_stdin(), m_saved_stdout(),
- m_saved_stderr(), m_main_module(), m_lldb_module(),
- m_session_dict(PyInitialValue::Invalid),
- m_sys_module_dict(PyInitialValue::Invalid), m_run_one_line_function(),
- m_run_one_line_str_global(),
+ IOHandlerDelegateMultiline("DONE"),
+ m_saved_stdin(llvm::make_unique<PythonFile>()),
+ m_saved_stdout(llvm::make_unique<PythonFile>()),
+ m_saved_stderr(llvm::make_unique<PythonFile>()),
+ m_main_module(llvm::make_unique<PythonObject>()),
+ m_session_dict(
+ llvm::make_unique<PythonDictionary>(PyInitialValue::Invalid)),
+ m_sys_module_dict(
+ llvm::make_unique<PythonDictionary>(PyInitialValue::Invalid)),
+ m_run_one_line_function(llvm::make_unique<PythonObject>()),
+ m_run_one_line_str_global(llvm::make_unique<PythonObject>()),
m_dictionary_name(
interpreter.GetDebugger().GetInstanceName().AsCString()),
m_terminal_state(), m_active_io_handler(eIOHandlerNone),
@@ -376,8 +426,9 @@
StreamString run_string;
run_string.Printf("%s = dict()", m_dictionary_name.c_str());
- Locker locker(this, ScriptInterpreterPython::Locker::AcquireLock,
- ScriptInterpreterPython::Locker::FreeAcquiredLock);
+ PythonScriptInterpreterLocker locker(
+ this, PythonScriptInterpreterLocker::AcquireLock,
+ PythonScriptInterpreterLocker::FreeAcquiredLock);
PyRun_SimpleString(run_string.GetData());
run_string.Clear();
@@ -425,7 +476,7 @@
// thread state, nuke the session dictionary and then release it for others
// to use and proceed with the rest of the shutdown
auto gil_state = PyGILState_Ensure();
- m_session_dict.Reset();
+ m_session_dict->Reset();
PyGILState_Release(gil_state);
}
@@ -650,17 +701,17 @@
if (PyThreadState_GetDict()) {
PythonDictionary &sys_module_dict = GetSysModuleDictionary();
if (sys_module_dict.IsValid()) {
- if (m_saved_stdin.IsValid()) {
- sys_module_dict.SetItemForKey(PythonString("stdin"), m_saved_stdin);
- m_saved_stdin.Reset();
+ if (m_saved_stdin->IsValid()) {
+ sys_module_dict.SetItemForKey(PythonString("stdin"), *m_saved_stdin);
+ m_saved_stdin->Reset();
}
- if (m_saved_stdout.IsValid()) {
- sys_module_dict.SetItemForKey(PythonString("stdout"), m_saved_stdout);
- m_saved_stdout.Reset();
+ if (m_saved_stdout->IsValid()) {
+ sys_module_dict.SetItemForKey(PythonString("stdout"), *m_saved_stdout);
+ m_saved_stdout->Reset();
}
- if (m_saved_stderr.IsValid()) {
- sys_module_dict.SetItemForKey(PythonString("stderr"), m_saved_stderr);
- m_saved_stderr.Reset();
+ if (m_saved_stderr->IsValid()) {
+ sys_module_dict.SetItemForKey(PythonString("stderr"), *m_saved_stderr);
+ m_saved_stderr->Reset();
}
}
}
@@ -711,7 +762,7 @@
StreamString run_string;
- if (on_entry_flags & Locker::InitGlobals) {
+ if (on_entry_flags & PythonScriptInterpreterLocker::InitGlobals) {
run_string.Printf("run_one_line (%s, 'lldb.debugger_unique_id = %" PRIu64,
m_dictionary_name.c_str(),
GetCommandInterpreter().GetDebugger().GetID());
@@ -751,23 +802,23 @@
m_interpreter.GetDebugger().AdoptTopIOHandlerFilesIfInvalid(in_sp, out_sp,
err_sp);
- if (on_entry_flags & Locker::NoSTDIN) {
- m_saved_stdin.Reset();
+ if (on_entry_flags & PythonScriptInterpreterLocker::NoSTDIN) {
+ m_saved_stdin->Reset();
} else {
- if (!SetStdHandle(in_file, "stdin", m_saved_stdin, "r")) {
+ if (!SetStdHandle(in_file, "stdin", *m_saved_stdin, "r")) {
if (in_sp)
- SetStdHandle(in_sp->GetFile(), "stdin", m_saved_stdin, "r");
+ SetStdHandle(in_sp->GetFile(), "stdin", *m_saved_stdin, "r");
}
}
- if (!SetStdHandle(out_file, "stdout", m_saved_stdout, "w")) {
+ if (!SetStdHandle(out_file, "stdout", *m_saved_stdout, "w")) {
if (out_sp)
- SetStdHandle(out_sp->GetFile(), "stdout", m_saved_stdout, "w");
+ SetStdHandle(out_sp->GetFile(), "stdout", *m_saved_stdout, "w");
}
- if (!SetStdHandle(err_file, "stderr", m_saved_stderr, "w")) {
+ if (!SetStdHandle(err_file, "stderr", *m_saved_stderr, "w")) {
if (err_sp)
- SetStdHandle(err_sp->GetFile(), "stderr", m_saved_stderr, "w");
+ SetStdHandle(err_sp->GetFile(), "stderr", *m_saved_stderr, "w");
}
}
@@ -778,38 +829,38 @@
}
PythonObject &ScriptInterpreterPython::GetMainModule() {
- if (!m_main_module.IsValid())
- m_main_module.Reset(PyRefType::Borrowed, PyImport_AddModule("__main__"));
- return m_main_module;
+ if (!m_main_module->IsValid())
+ m_main_module->Reset(PyRefType::Borrowed, PyImport_AddModule("__main__"));
+ return *m_main_module;
}
PythonDictionary &ScriptInterpreterPython::GetSessionDictionary() {
- if (m_session_dict.IsValid())
- return m_session_dict;
+ if (m_session_dict->IsValid())
+ return *m_session_dict;
PythonObject &main_module = GetMainModule();
if (!main_module.IsValid())
- return m_session_dict;
+ return *m_session_dict;
PythonDictionary main_dict(PyRefType::Borrowed,
PyModule_GetDict(main_module.get()));
if (!main_dict.IsValid())
- return m_session_dict;
+ return *m_session_dict;
PythonObject item = main_dict.GetItemForKey(PythonString(m_dictionary_name));
- m_session_dict.Reset(PyRefType::Borrowed, item.get());
- return m_session_dict;
+ m_session_dict->Reset(PyRefType::Borrowed, item.get());
+ return *m_session_dict;
}
PythonDictionary &ScriptInterpreterPython::GetSysModuleDictionary() {
- if (m_sys_module_dict.IsValid())
- return m_sys_module_dict;
+ if (m_sys_module_dict->IsValid())
+ return *m_sys_module_dict;
PythonObject sys_module(PyRefType::Borrowed, PyImport_AddModule("sys"));
if (sys_module.IsValid())
- m_sys_module_dict.Reset(PyRefType::Borrowed,
- PyModule_GetDict(sys_module.get()));
- return m_sys_module_dict;
+ m_sys_module_dict->Reset(PyRefType::Borrowed,
+ PyModule_GetDict(sys_module.get()));
+ return *m_sys_module_dict;
}
static std::string GenerateUniqueName(const char *base_name_wanted,
@@ -829,7 +880,7 @@
}
bool ScriptInterpreterPython::GetEmbeddedInterpreterModuleObjects() {
- if (m_run_one_line_function.IsValid())
+ if (m_run_one_line_function->IsValid())
return true;
PythonObject module(PyRefType::Borrowed,
@@ -842,11 +893,11 @@
if (!module_dict.IsValid())
return false;
- m_run_one_line_function =
+ *m_run_one_line_function =
module_dict.GetItemForKey(PythonString("run_one_line"));
- m_run_one_line_str_global =
+ *m_run_one_line_str_global =
module_dict.GetItemForKey(PythonString("g_run_one_line_str"));
- return m_run_one_line_function.IsValid();
+ return m_run_one_line_function->IsValid();
}
static void ReadThreadBytesReceived(void *baton, const void *src,
@@ -950,30 +1001,32 @@
// below will redirect Python's stdio to use this same handle. If we
// close the handle while Python is still using it, bad things will
// happen.
- Locker locker(
+ PythonScriptInterpreterLocker locker(
this,
- ScriptInterpreterPython::Locker::AcquireLock |
- ScriptInterpreterPython::Locker::InitSession |
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
(options.GetSetLLDBGlobals()
- ? ScriptInterpreterPython::Locker::InitGlobals
+ ? PythonScriptInterpreterLocker::InitGlobals
: 0) |
- ((result && result->GetInteractive()) ? 0 : Locker::NoSTDIN),
- ScriptInterpreterPython::Locker::FreeAcquiredLock |
- ScriptInterpreterPython::Locker::TearDownSession,
+ ((result && result->GetInteractive())
+ ? 0
+ : PythonScriptInterpreterLocker::NoSTDIN),
+ PythonScriptInterpreterLocker::FreeAcquiredLock |
+ PythonScriptInterpreterLocker::TearDownSession,
in_file, out_file, err_file);
// Find the correct script interpreter dictionary in the main module.
PythonDictionary &session_dict = GetSessionDictionary();
if (session_dict.IsValid()) {
if (GetEmbeddedInterpreterModuleObjects()) {
- if (PyCallable_Check(m_run_one_line_function.get())) {
+ if (PyCallable_Check(m_run_one_line_function->get())) {
PythonObject pargs(
PyRefType::Owned,
Py_BuildValue("(Os)", session_dict.get(), command_str.c_str()));
if (pargs.IsValid()) {
PythonObject return_value(
PyRefType::Owned,
- PyObject_CallObject(m_run_one_line_function.get(),
+ PyObject_CallObject(m_run_one_line_function->get(),
pargs.get()));
if (return_value.IsValid())
success = true;
@@ -1049,12 +1102,13 @@
terminal.SetEcho(true);
}
- ScriptInterpreterPython::Locker locker(
- m_python, ScriptInterpreterPython::Locker::AcquireLock |
- ScriptInterpreterPython::Locker::InitSession |
- ScriptInterpreterPython::Locker::InitGlobals,
- ScriptInterpreterPython::Locker::FreeAcquiredLock |
- ScriptInterpreterPython::Locker::TearDownSession);
+ PythonScriptInterpreterLocker locker(
+ m_python,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::InitGlobals,
+ PythonScriptInterpreterLocker::FreeAcquiredLock |
+ PythonScriptInterpreterLocker::TearDownSession);
// The following call drops into the embedded interpreter loop and
// stays there until the user chooses to exit from the Python
@@ -1139,14 +1193,16 @@
llvm::StringRef in_string, ScriptInterpreter::ScriptReturnType return_type,
void *ret_value, const ExecuteScriptOptions &options) {
- Locker locker(this, ScriptInterpreterPython::Locker::AcquireLock |
- ScriptInterpreterPython::Locker::InitSession |
- (options.GetSetLLDBGlobals()
- ? ScriptInterpreterPython::Locker::InitGlobals
- : 0) |
- Locker::NoSTDIN,
- ScriptInterpreterPython::Locker::FreeAcquiredLock |
- ScriptInterpreterPython::Locker::TearDownSession);
+ PythonScriptInterpreterLocker locker(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ (options.GetSetLLDBGlobals()
+ ? PythonScriptInterpreterLocker::InitGlobals
+ : 0) |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeAcquiredLock |
+ PythonScriptInterpreterLocker::TearDownSession);
PythonObject py_return;
PythonObject &main_module = GetMainModule();
@@ -1295,14 +1351,16 @@
const char *in_string, const ExecuteScriptOptions &options) {
Status error;
- Locker locker(this, ScriptInterpreterPython::Locker::AcquireLock |
- ScriptInterpreterPython::Locker::InitSession |
- (options.GetSetLLDBGlobals()
- ? ScriptInterpreterPython::Locker::InitGlobals
- : 0) |
- Locker::NoSTDIN,
- ScriptInterpreterPython::Locker::FreeAcquiredLock |
- ScriptInterpreterPython::Locker::TearDownSession);
+ PythonScriptInterpreterLocker locker(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ (options.GetSetLLDBGlobals()
+ ? PythonScriptInterpreterLocker::InitGlobals
+ : 0) |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeAcquiredLock |
+ PythonScriptInterpreterLocker::TearDownSession);
PythonObject return_value;
PythonObject &main_module = GetMainModule();
@@ -1611,8 +1669,11 @@
void *ret_val;
{
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN,
- Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
ret_val = LLDBSWIGPython_CreateFrameRecognizer(class_name,
m_dictionary_name.c_str());
}
@@ -1623,7 +1684,11 @@
lldb::ValueObjectListSP ScriptInterpreterPython::GetRecognizedArguments(
const StructuredData::ObjectSP &os_plugin_object_sp,
lldb::StackFrameSP frame_sp) {
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
if (!os_plugin_object_sp) return ValueObjectListSP();
@@ -1670,8 +1735,11 @@
void *ret_val;
{
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN,
- Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
ret_val = LLDBSWIGPythonCreateOSPlugin(
class_name, m_dictionary_name.c_str(), process_sp);
}
@@ -1681,7 +1749,11 @@
StructuredData::DictionarySP ScriptInterpreterPython::OSPlugin_RegisterInfo(
StructuredData::ObjectSP os_plugin_object_sp) {
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
static char callee_name[] = "get_register_info";
@@ -1736,7 +1808,11 @@
StructuredData::ArraySP ScriptInterpreterPython::OSPlugin_ThreadsInfo(
StructuredData::ObjectSP os_plugin_object_sp) {
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
static char callee_name[] = "get_thread_info";
@@ -1821,7 +1897,11 @@
StructuredData::StringSP ScriptInterpreterPython::OSPlugin_RegisterContextData(
StructuredData::ObjectSP os_plugin_object_sp, lldb::tid_t tid) {
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
static char callee_name[] = "get_register_data";
static char *param_format =
@@ -1878,7 +1958,11 @@
StructuredData::DictionarySP ScriptInterpreterPython::OSPlugin_CreateThread(
StructuredData::ObjectSP os_plugin_object_sp, lldb::tid_t tid,
lldb::addr_t context) {
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
static char callee_name[] = "create_thread";
std::string param_format;
@@ -1954,8 +2038,10 @@
void *ret_val;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPythonCreateScriptedThreadPlan(
class_name, python_interpreter->m_dictionary_name.c_str(),
@@ -1972,8 +2058,10 @@
if (implementor_sp)
generic = implementor_sp->GetAsGeneric();
if (generic) {
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
explains_stop = LLDBSWIGPythonCallThreadPlan(
generic->GetValue(), "explains_stop", event, script_error);
if (script_error)
@@ -1989,8 +2077,10 @@
if (implementor_sp)
generic = implementor_sp->GetAsGeneric();
if (generic) {
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
should_stop = LLDBSWIGPythonCallThreadPlan(
generic->GetValue(), "should_stop", event, script_error);
if (script_error)
@@ -2006,8 +2096,10 @@
if (implementor_sp)
generic = implementor_sp->GetAsGeneric();
if (generic) {
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
is_stale = LLDBSWIGPythonCallThreadPlan(generic->GetValue(), "is_stale",
nullptr, script_error);
if (script_error)
@@ -2023,8 +2115,10 @@
if (implementor_sp)
generic = implementor_sp->GetAsGeneric();
if (generic) {
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
should_step = LLDBSWIGPythonCallThreadPlan(
generic->GetValue(), "should_step", NULL, script_error);
if (script_error)
@@ -2060,8 +2154,10 @@
void *ret_val;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPythonCreateScriptedBreakpointResolver(
class_name, python_interpreter->m_dictionary_name.c_str(), args_data,
@@ -2078,8 +2174,10 @@
bool should_continue = false;
if (implementor_sp) {
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
should_continue = LLDBSwigPythonCallBreakpointResolver(
implementor_sp->GetValue(), "__callback__", sym_ctx);
if (PyErr_Occurred()) {
@@ -2095,8 +2193,10 @@
StructuredData::GenericSP implementor_sp) {
int depth_as_int = lldb::eSearchDepthModule;
if (implementor_sp) {
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
depth_as_int = LLDBSwigPythonCallBreakpointResolver(
implementor_sp->GetValue(), "__get_depth__", nullptr);
if (PyErr_Occurred()) {
@@ -2140,8 +2240,10 @@
return StructuredData::DictionarySP();
PythonObject reply_pyobj;
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
TargetSP target_sp(target->shared_from_this());
reply_pyobj.Reset(PyRefType::Owned,
(PyObject *)LLDBSWIGPython_GetDynamicSetting(
@@ -2178,8 +2280,10 @@
void *ret_val = nullptr;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPythonCreateSyntheticProvider(
class_name, python_interpreter->m_dictionary_name.c_str(), valobj);
}
@@ -2201,8 +2305,10 @@
void *ret_val;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPythonCreateCommandObject(
class_name, m_dictionary_name.c_str(), debugger_sp);
}
@@ -2297,8 +2403,10 @@
bool ret_val;
if (python_function_name && *python_function_name) {
{
- Locker py_lock(this, Locker::AcquireLock | Locker::InitSession |
- Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
{
TypeSummaryOptionsSP options_sp(new TypeSummaryOptions(options));
@@ -2323,8 +2431,9 @@
void ScriptInterpreterPython::Clear() {
// Release any global variables that might have strong references to
// LLDB objects when clearing the python script interpreter.
- Locker locker(this, ScriptInterpreterPython::Locker::AcquireLock,
- ScriptInterpreterPython::Locker::FreeAcquiredLock);
+ PythonScriptInterpreterLocker locker(
+ this, PythonScriptInterpreterLocker::AcquireLock,
+ PythonScriptInterpreterLocker::FreeAcquiredLock);
// This may be called as part of Py_Finalize. In that case the modules are
// destroyed in random order and we can't guarantee that we can access these.
@@ -2367,9 +2476,11 @@
if (stop_frame_sp && bp_loc_sp) {
bool ret_val = true;
{
- Locker py_lock(python_interpreter, Locker::AcquireLock |
- Locker::InitSession |
- Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ python_interpreter,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPythonBreakpointCallbackFunction(
python_function_name,
python_interpreter->m_dictionary_name.c_str(), stop_frame_sp,
@@ -2415,9 +2526,11 @@
if (stop_frame_sp && wp_sp) {
bool ret_val = true;
{
- Locker py_lock(python_interpreter, Locker::AcquireLock |
- Locker::InitSession |
- Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ python_interpreter,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPythonWatchpointCallbackFunction(
python_function_name,
python_interpreter->m_dictionary_name.c_str(), stop_frame_sp,
@@ -2446,8 +2559,10 @@
size_t ret_val = 0;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPython_CalculateNumChildren(implementor, max);
}
@@ -2469,8 +2584,10 @@
lldb::ValueObjectSP ret_val;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
void *child_ptr = LLDBSwigPython_GetChildAtIndex(implementor, idx);
if (child_ptr != nullptr && child_ptr != Py_None) {
lldb::SBValue *sb_value_ptr =
@@ -2502,8 +2619,10 @@
int ret_val = UINT32_MAX;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPython_GetIndexOfChildWithName(implementor, child_name);
}
@@ -2525,8 +2644,10 @@
return ret_val;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSwigPython_UpdateSynthProviderInstance(implementor);
}
@@ -2549,8 +2670,10 @@
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val =
LLDBSwigPython_MightHaveChildrenSynthProviderInstance(implementor);
}
@@ -2573,8 +2696,10 @@
return ret_val;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
void *child_ptr = LLDBSwigPython_GetValueSynthProviderInstance(implementor);
if (child_ptr != nullptr && child_ptr != Py_None) {
lldb::SBValue *sb_value_ptr =
@@ -2593,8 +2718,10 @@
ConstString ScriptInterpreterPython::GetSyntheticTypeName(
const StructuredData::ObjectSP &implementor_sp) {
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
static char callee_name[] = "get_type_name";
@@ -2673,8 +2800,10 @@
{
ProcessSP process_sp(process->shared_from_this());
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSWIGPythonRunScriptKeywordProcess(
impl_function, m_dictionary_name.c_str(), process_sp, output);
if (!ret_val)
@@ -2699,8 +2828,10 @@
{
ThreadSP thread_sp(thread->shared_from_this());
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSWIGPythonRunScriptKeywordThread(
impl_function, m_dictionary_name.c_str(), thread_sp, output);
if (!ret_val)
@@ -2725,8 +2856,10 @@
{
TargetSP target_sp(target->shared_from_this());
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSWIGPythonRunScriptKeywordTarget(
impl_function, m_dictionary_name.c_str(), target_sp, output);
if (!ret_val)
@@ -2751,8 +2884,10 @@
{
StackFrameSP frame_sp(frame->shared_from_this());
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSWIGPythonRunScriptKeywordFrame(
impl_function, m_dictionary_name.c_str(), frame_sp, output);
if (!ret_val)
@@ -2777,8 +2912,10 @@
{
ValueObjectSP value_sp(value->GetSP());
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
+ PythonScriptInterpreterLocker py_lock(
+ this, PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN);
ret_val = LLDBSWIGPythonRunScriptKeywordValue(
impl_function, m_dictionary_name.c_str(), value_sp, output);
if (!ret_val)
@@ -2817,11 +2954,14 @@
StreamString command_stream;
// Before executing Python code, lock the GIL.
- Locker py_lock(this, Locker::AcquireLock |
- (init_session ? Locker::InitSession : 0) |
- Locker::NoSTDIN,
- Locker::FreeAcquiredLock |
- (init_session ? Locker::TearDownSession : 0));
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ (init_session ? PythonScriptInterpreterLocker::InitSession : 0) |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeAcquiredLock |
+ (init_session ? PythonScriptInterpreterLocker::TearDownSession
+ : 0));
namespace fs = llvm::sys::fs;
fs::file_status st;
std::error_code ec = status(target_file.GetPath(), st);
@@ -3012,10 +3152,15 @@
std::string err_msg;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession |
- (cmd_retobj.GetInteractive() ? 0 : Locker::NoSTDIN),
- Locker::FreeLock | Locker::TearDownSession);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ (cmd_retobj.GetInteractive()
+ ? 0
+ : PythonScriptInterpreterLocker::NoSTDIN),
+ PythonScriptInterpreterLocker::FreeLock |
+ PythonScriptInterpreterLocker::TearDownSession);
SynchronicityHandler synch_handler(debugger_sp, synchronicity);
@@ -3056,10 +3201,15 @@
std::string err_msg;
{
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession |
- (cmd_retobj.GetInteractive() ? 0 : Locker::NoSTDIN),
- Locker::FreeLock | Locker::TearDownSession);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ (cmd_retobj.GetInteractive()
+ ? 0
+ : PythonScriptInterpreterLocker::NoSTDIN),
+ PythonScriptInterpreterLocker::FreeLock |
+ PythonScriptInterpreterLocker::TearDownSession);
SynchronicityHandler synch_handler(debugger_sp, synchronicity);
@@ -3112,7 +3262,11 @@
bool got_string = false;
dest.clear();
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
static char callee_name[] = "get_short_help";
@@ -3167,7 +3321,11 @@
StructuredData::GenericSP cmd_obj_sp) {
uint32_t result = 0;
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
static char callee_name[] = "get_flags";
@@ -3222,7 +3380,11 @@
bool got_string = false;
dest.clear();
- Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, Locker::FreeLock);
+ PythonScriptInterpreterLocker py_lock(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock);
static char callee_name[] = "get_long_help";
@@ -3277,9 +3439,14 @@
std::unique_ptr<ScriptInterpreterLocker>
ScriptInterpreterPython::AcquireInterpreterLock() {
- std::unique_ptr<ScriptInterpreterLocker> py_lock(new Locker(
- this, Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN,
- Locker::FreeLock | Locker::TearDownSession));
+ std::unique_ptr<ScriptInterpreterLocker> py_lock(
+ new PythonScriptInterpreterLocker(
+ this,
+ PythonScriptInterpreterLocker::AcquireLock |
+ PythonScriptInterpreterLocker::InitSession |
+ PythonScriptInterpreterLocker::NoSTDIN,
+ PythonScriptInterpreterLocker::FreeLock |
+ PythonScriptInterpreterLocker::TearDownSession));
return py_lock;
}
Index: lldb/source/API/SystemInitializerFull.cpp
===================================================================
--- lldb/source/API/SystemInitializerFull.cpp
+++ lldb/source/API/SystemInitializerFull.cpp
@@ -6,10 +6,6 @@
//
//===----------------------------------------------------------------------===//
-#if !defined(LLDB_DISABLE_PYTHON)
-#include "Plugins/ScriptInterpreter/Python/lldb-python.h"
-#endif
-
#include "SystemInitializerFull.h"
#include "lldb/API/SBCommandInterpreter.h"
Index: lldb/source/API/SBHostOS.cpp
===================================================================
--- lldb/source/API/SBHostOS.cpp
+++ lldb/source/API/SBHostOS.cpp
@@ -6,10 +6,6 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLDB_DISABLE_PYTHON
-#include "Plugins/ScriptInterpreter/Python/lldb-python.h"
-#endif
-
#include "SBReproducerPrivate.h"
#include "lldb/API/SBError.h"
#include "lldb/API/SBHostOS.h"
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits