mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
bpo-46008: Add _PyInterpreterState_Main(). (gh-29978)
PyInterpreterState_Main() is a plain function exposed in the public C-API. For internal usage we can take the more efficient approach in this PR. https://bugs.python.org/issue46008
This commit is contained in:
parent
1f384e3184
commit
758b74e71e
4 changed files with 13 additions and 9 deletions
|
|
@ -21,19 +21,23 @@ _Py_IsMainThread(void)
|
|||
}
|
||||
|
||||
|
||||
static inline PyInterpreterState *
|
||||
_PyInterpreterState_Main(void)
|
||||
{
|
||||
return _PyRuntime.interpreters.main;
|
||||
}
|
||||
|
||||
static inline int
|
||||
_Py_IsMainInterpreter(PyInterpreterState *interp)
|
||||
{
|
||||
/* Use directly _PyRuntime rather than tstate->interp->runtime, since
|
||||
this function is used in performance critical code path (ceval) */
|
||||
return (interp == _PyRuntime.interpreters.main);
|
||||
return (interp == _PyInterpreterState_Main());
|
||||
}
|
||||
|
||||
|
||||
static inline const PyConfig *
|
||||
_Py_GetMainConfig(void)
|
||||
{
|
||||
PyInterpreterState *interp = _PyRuntime.interpreters.main;
|
||||
PyInterpreterState *interp = _PyInterpreterState_Main();
|
||||
if (interp == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -45,7 +49,7 @@ _Py_GetMainConfig(void)
|
|||
static inline int
|
||||
_Py_ThreadCanHandleSignals(PyInterpreterState *interp)
|
||||
{
|
||||
return (_Py_IsMainThread() && interp == _PyRuntime.interpreters.main);
|
||||
return (_Py_IsMainThread() && _Py_IsMainInterpreter(interp));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue