summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-02-19 12:21:28 (GMT)
committerGitHub <noreply@github.com>2021-02-19 12:21:28 (GMT)
commit5592f2b9daa24bf74cc616abcc40a29da2bdccb2 (patch)
tree532d865e35e6a5338310bb093841f30a7897d964 /Include
parent2bb0bf4dd8c0bd4d23eb04afce1a5eeee8e07982 (diff)
downloadcpython-5592f2b9daa24bf74cc616abcc40a29da2bdccb2.zip
cpython-5592f2b9daa24bf74cc616abcc40a29da2bdccb2.tar.gz
cpython-5592f2b9daa24bf74cc616abcc40a29da2bdccb2.tar.bz2
bpo-43268: Replace _PyThreadState_GET() with _PyInterpreterState_GET() (GH-24576)
Replace _PyThreadState_GET() with _PyInterpreterState_GET() in functions which only need the current interpreter, but don't need the current Python thread state. Replace also _PyThreadState_UncheckedGet() with _PyThreadState_GET() in faulthandler.c, since _PyThreadState_UncheckedGet() is just an alias to _PyThreadState_GET() in practice.
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_long.h7
-rw-r--r--Include/internal/pycore_object.h10
2 files changed, 7 insertions, 10 deletions
diff --git a/Include/internal/pycore_long.h b/Include/internal/pycore_long.h
index ec95786..a785b23 100644
--- a/Include/internal/pycore_long.h
+++ b/Include/internal/pycore_long.h
@@ -14,13 +14,10 @@ extern "C" {
// Don't call this function but _PyLong_GetZero() and _PyLong_GetOne()
static inline PyObject* __PyLong_GetSmallInt_internal(int value)
{
- PyThreadState *tstate = _PyThreadState_GET();
-#ifdef Py_DEBUG
- _Py_EnsureTstateNotNULL(tstate);
-#endif
+ PyInterpreterState *interp = _PyInterpreterState_GET();
assert(-_PY_NSMALLNEGINTS <= value && value < _PY_NSMALLPOSINTS);
size_t index = _PY_NSMALLNEGINTS + value;
- PyObject *obj = (PyObject*)tstate->interp->small_ints[index];
+ PyObject *obj = (PyObject*)interp->small_ints[index];
// _PyLong_GetZero() and _PyLong_GetOne() must not be called
// before _PyLong_Init() nor after _PyLong_Fini()
assert(obj != NULL);
diff --git a/Include/internal/pycore_object.h b/Include/internal/pycore_object.h
index 3cd27b0..79c1c44 100644
--- a/Include/internal/pycore_object.h
+++ b/Include/internal/pycore_object.h
@@ -8,9 +8,9 @@ extern "C" {
# error "this header requires Py_BUILD_CORE define"
#endif
-#include "pycore_gc.h" // _PyObject_GC_IS_TRACKED()
-#include "pycore_interp.h" // PyInterpreterState.gc
-#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_gc.h" // _PyObject_GC_IS_TRACKED()
+#include "pycore_interp.h" // PyInterpreterState.gc
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
PyAPI_FUNC(int) _PyType_CheckConsistency(PyTypeObject *type);
PyAPI_FUNC(int) _PyDict_CheckConsistency(PyObject *mp, int check_content);
@@ -85,8 +85,8 @@ static inline void _PyObject_GC_TRACK(
"object is in generation which is garbage collected",
filename, lineno, __func__);
- PyThreadState *tstate = _PyThreadState_GET();
- PyGC_Head *generation0 = tstate->interp->gc.generation0;
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyGC_Head *generation0 = interp->gc.generation0;
PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
_PyGCHead_SET_NEXT(last, gc);
_PyGCHead_SET_PREV(gc, last);