summaryrefslogtreecommitdiffstats
path: root/Python/pystate.c
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2024-06-25 20:35:12 (GMT)
committerGitHub <noreply@github.com>2024-06-25 20:35:12 (GMT)
commita905721b9c5c15279e67c2f7785034b7356b2d46 (patch)
tree128afaafee27cac1e55fe22e552a2e41ac8921ef /Python/pystate.c
parent769aea332940f03c3e5b1ad9badd6635c1ac992a (diff)
downloadcpython-a905721b9c5c15279e67c2f7785034b7356b2d46.zip
cpython-a905721b9c5c15279e67c2f7785034b7356b2d46.tar.gz
cpython-a905721b9c5c15279e67c2f7785034b7356b2d46.tar.bz2
gh-120838: Add _PyThreadState_WHENCE_FINI (gh-121010)
We also add _PyThreadState_NewBound() and drop _PyThreadState_SetWhence(). This change only affects internal API.
Diffstat (limited to 'Python/pystate.c')
-rw-r--r--Python/pystate.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/Python/pystate.c b/Python/pystate.c
index 8d31a4d..602b13e 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -1293,9 +1293,8 @@ _PyInterpreterState_IDDecref(PyInterpreterState *interp)
PyThread_release_lock(interp->id_mutex);
if (refcount == 0 && interp->requires_idref) {
- PyThreadState *tstate = _PyThreadState_New(interp,
- _PyThreadState_WHENCE_INTERP);
- _PyThreadState_Bind(tstate);
+ PyThreadState *tstate =
+ _PyThreadState_NewBound(interp, _PyThreadState_WHENCE_FINI);
// XXX Possible GILState issues?
PyThreadState *save_tstate = _PyThreadState_Swap(runtime, tstate);
@@ -1603,8 +1602,13 @@ new_threadstate(PyInterpreterState *interp, int whence)
PyThreadState *
PyThreadState_New(PyInterpreterState *interp)
{
- PyThreadState *tstate = new_threadstate(interp,
- _PyThreadState_WHENCE_UNKNOWN);
+ return _PyThreadState_NewBound(interp, _PyThreadState_WHENCE_UNKNOWN);
+}
+
+PyThreadState *
+_PyThreadState_NewBound(PyInterpreterState *interp, int whence)
+{
+ PyThreadState *tstate = new_threadstate(interp, whence);
if (tstate) {
bind_tstate(tstate);
// This makes sure there's a gilstate tstate bound