diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2024-11-21 11:08:38 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-21 11:08:38 -0700 |
commit | 9dabace39d118ec7a204b6970f8a3f475a11522c (patch) | |
tree | e03d07af2bcfcd399b993b1e0faf5dae67fc4e39 /Objects/codeobject.c | |
parent | bf542f8bb9f12f0df9481f2222b21545806dd9e1 (diff) | |
download | cpython-9dabace39d118ec7a204b6970f8a3f475a11522c.tar.gz cpython-9dabace39d118ec7a204b6970f8a3f475a11522c.zip |
gh-114940: Add _Py_FOR_EACH_TSTATE_UNLOCKED(), and Friends (gh-127077)
This is a precursor to the actual fix for gh-114940, where we will change these macros to use the new lock. This change is almost entirely mechanical; the exceptions are the loops in codeobject.c and ceval.c, which now hold the "head" lock. Note that almost all of the uses of _Py_FOR_EACH_TSTATE_UNLOCKED() here will change to _Py_FOR_EACH_TSTATE_BEGIN() once we add the new per-interpreter lock.
Diffstat (limited to 'Objects/codeobject.c')
-rw-r--r-- | Objects/codeobject.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Objects/codeobject.c b/Objects/codeobject.c index ec5d8a5ed0b..148350cc4b9 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -2895,20 +2895,22 @@ get_indices_in_use(PyInterpreterState *interp, struct flag_set *in_use) assert(interp->stoptheworld.world_stopped); assert(in_use->flags == NULL); int32_t max_index = 0; - for (PyThreadState *p = interp->threads.head; p != NULL; p = p->next) { + _Py_FOR_EACH_TSTATE_BEGIN(interp, p) { int32_t idx = ((_PyThreadStateImpl *) p)->tlbc_index; if (idx > max_index) { max_index = idx; } } + _Py_FOR_EACH_TSTATE_END(interp); in_use->size = (size_t) max_index + 1; in_use->flags = PyMem_Calloc(in_use->size, sizeof(*in_use->flags)); if (in_use->flags == NULL) { return -1; } - for (PyThreadState *p = interp->threads.head; p != NULL; p = p->next) { + _Py_FOR_EACH_TSTATE_BEGIN(interp, p) { in_use->flags[((_PyThreadStateImpl *) p)->tlbc_index] = 1; } + _Py_FOR_EACH_TSTATE_END(interp); return 0; } |