mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-17 08:21:13 +00:00
[lldb] Adapt code to Python 3.13 (#70445)
1. Remove usage of PyEval_ThreadsInitialized and PyEval_InitThreads Both of these functions were removed in Python 3.13 [1] after being deprecated since Python 3.9. According to "What's new in Python 3.13" document [1]: Since Python 3.7, Py_Initialize() always creates the GIL: calling PyEval_InitThreads() did nothing and PyEval_ThreadsInitialized() always returned non-zero. 2. Replace _Py_IsFinalizing() with Py_IsFinalizing(). [1] https://docs.python.org/3.13/whatsnew/3.13.html
This commit is contained in:
parent
8483d18be5
commit
b2929bebb6
@ -71,7 +71,9 @@ Expected<std::string> python::As<std::string>(Expected<PythonObject> &&obj) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool python_is_finalizing() {
|
static bool python_is_finalizing() {
|
||||||
#if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 7
|
#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 13) || (PY_MAJOR_VERSION > 3)
|
||||||
|
return Py_IsFinalizing();
|
||||||
|
#elif PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 7
|
||||||
return _Py_Finalizing != nullptr;
|
return _Py_Finalizing != nullptr;
|
||||||
#else
|
#else
|
||||||
return _Py_IsFinalizing();
|
return _Py_IsFinalizing();
|
||||||
|
@ -179,18 +179,27 @@ private:
|
|||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// `PyEval_ThreadsInitialized` was deprecated in Python 3.9 and removed in
|
||||||
|
// Python 3.13. It has been returning `true` always since Python 3.7.
|
||||||
|
#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) || (PY_MAJOR_VERSION < 3)
|
||||||
if (PyEval_ThreadsInitialized()) {
|
if (PyEval_ThreadsInitialized()) {
|
||||||
|
#endif
|
||||||
Log *log = GetLog(LLDBLog::Script);
|
Log *log = GetLog(LLDBLog::Script);
|
||||||
|
|
||||||
m_was_already_initialized = true;
|
m_was_already_initialized = true;
|
||||||
m_gil_state = PyGILState_Ensure();
|
m_gil_state = PyGILState_Ensure();
|
||||||
LLDB_LOGV(log, "Ensured PyGILState. Previous state = {0}locked\n",
|
LLDB_LOGV(log, "Ensured PyGILState. Previous state = {0}locked\n",
|
||||||
m_gil_state == PyGILState_UNLOCKED ? "un" : "");
|
m_gil_state == PyGILState_UNLOCKED ? "un" : "");
|
||||||
|
|
||||||
|
// `PyEval_InitThreads` was deprecated in Python 3.9 and removed in
|
||||||
|
// Python 3.13.
|
||||||
|
#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) || (PY_MAJOR_VERSION < 3)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitThreads acquires the GIL if it hasn't been called before.
|
// InitThreads acquires the GIL if it hasn't been called before.
|
||||||
PyEval_InitThreads();
|
PyEval_InitThreads();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
PyGILState_STATE m_gil_state = PyGILState_UNLOCKED;
|
PyGILState_STATE m_gil_state = PyGILState_UNLOCKED;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user