summaryrefslogtreecommitdiffstats
path: root/Python/pystate.c
diff options
context:
space:
mode:
authorKumar Aditya <59607654+kumaraditya303@users.noreply.github.com>2022-11-15 00:35:37 (GMT)
committerGitHub <noreply@github.com>2022-11-15 00:35:37 (GMT)
commitdc3e4350a5580bcc956312d1b20ca877d8f63215 (patch)
treee6bad39db71859742257c1f267e3785bb7bbd110 /Python/pystate.c
parente874c2f1986ee01f53a9d9bdf26fa6979d8a6d35 (diff)
downloadcpython-dc3e4350a5580bcc956312d1b20ca877d8f63215.zip
cpython-dc3e4350a5580bcc956312d1b20ca877d8f63215.tar.gz
cpython-dc3e4350a5580bcc956312d1b20ca877d8f63215.tar.bz2
GH-99205: remove `_static` field from `PyThreadState` and `PyInterpreterState` (GH-99385)
Diffstat (limited to 'Python/pystate.c')
-rw-r--r--Python/pystate.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/Python/pystate.c b/Python/pystate.c
index 5d1814f..5c9e4ff 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -275,7 +275,9 @@ alloc_interpreter(void)
static void
free_interpreter(PyInterpreterState *interp)
{
- if (!interp->_static) {
+ // The main interpreter is statically allocated so
+ // should not be freed.
+ if (interp != &_PyRuntime._main_interpreter) {
PyMem_RawFree(interp);
}
}
@@ -359,7 +361,6 @@ PyInterpreterState_New(void)
interp = &runtime->_main_interpreter;
assert(interp->id == 0);
assert(interp->next == NULL);
- assert(interp->_static);
interpreters->main = interp;
}
@@ -374,9 +375,6 @@ PyInterpreterState_New(void)
// Set to _PyInterpreterState_INIT.
memcpy(interp, &initial._main_interpreter,
sizeof(*interp));
- // We need to adjust any fields that are different from the initial
- // interpreter (as defined in _PyInterpreterState_INIT):
- interp->_static = false;
if (id < 0) {
/* overflow or Py_Initialize() not called yet! */
@@ -762,7 +760,9 @@ alloc_threadstate(void)
static void
free_threadstate(PyThreadState *tstate)
{
- if (!tstate->_static) {
+ // The initial thread state of the interpreter is allocated
+ // as part of the interpreter state so should not be freed.
+ if (tstate != &tstate->interp->_initial_thread) {
PyMem_RawFree(tstate);
}
}
@@ -845,7 +845,6 @@ new_threadstate(PyInterpreterState *interp)
assert(id == 1);
used_newtstate = 0;
tstate = &interp->_initial_thread;
- assert(tstate->_static);
}
else {
// Every valid interpreter must have at least one thread.
@@ -857,9 +856,6 @@ new_threadstate(PyInterpreterState *interp)
memcpy(tstate,
&initial._main_interpreter._initial_thread,
sizeof(*tstate));
- // We need to adjust any fields that are different from the initial
- // thread (as defined in _PyThreadState_INIT):
- tstate->_static = false;
}
interp->threads.head = tstate;