summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-07-02 01:39:38 (GMT)
committerGitHub <noreply@github.com>2023-07-02 01:39:38 (GMT)
commit8571b271e7d16fe87d669a2e1e50f5ae3732bb31 (patch)
treeeb2adf17a72bab4efbb439fa2f74cacdaa4ca5e9 /Modules
parentfeb51f3a6443d7c0148e2e7be2ed58b4c69fa265 (diff)
downloadcpython-8571b271e7d16fe87d669a2e1e50f5ae3732bb31.zip
cpython-8571b271e7d16fe87d669a2e1e50f5ae3732bb31.tar.gz
cpython-8571b271e7d16fe87d669a2e1e50f5ae3732bb31.tar.bz2
gh-106320: Remove private _PyInterpreterState functions (#106325)
Remove private _PyThreadState and _PyInterpreterState C API functions: move them to the internal C API (pycore_pystate.h and pycore_interp.h). Don't export most of these functions anymore, but still export functions used by tests. Remove _PyThreadState_Prealloc() and _PyThreadState_Init() from the C API, but keep it in the stable API.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_testcapimodule.c5
-rw-r--r--Modules/_testinternalcapi.c22
-rw-r--r--Modules/_xxsubinterpretersmodule.c6
3 files changed, 27 insertions, 6 deletions
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index ec2e64f..398450d 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -2714,11 +2714,6 @@ test_tstate_capi(PyObject *self, PyObject *Py_UNUSED(args))
assert(PyDict_Check(dict));
// dict is a borrowed reference
- // private _PyThreadState_GetDict()
- PyObject *dict2 = _PyThreadState_GetDict(tstate);
- assert(dict2 == dict);
- // dict2 is a borrowed reference
-
// PyThreadState_GetInterpreter()
PyInterpreterState *interp = PyThreadState_GetInterpreter(tstate);
assert(interp != NULL);
diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c
index f6ae389..2e0609d 100644
--- a/Modules/_testinternalcapi.c
+++ b/Modules/_testinternalcapi.c
@@ -1234,6 +1234,27 @@ tracemalloc_get_traceback(PyObject *self, PyObject *args)
}
+// Test PyThreadState C API
+static PyObject *
+test_tstate_capi(PyObject *self, PyObject *Py_UNUSED(args))
+{
+ // PyThreadState_Get()
+ PyThreadState *tstate = PyThreadState_Get();
+ assert(tstate != NULL);
+
+ // test _PyThreadState_GetDict()
+ PyObject *dict = PyThreadState_GetDict();
+ assert(dict != NULL);
+ // dict is a borrowed reference
+
+ PyObject *dict2 = _PyThreadState_GetDict(tstate);
+ assert(dict2 == dict);
+ // dict2 is a borrowed reference
+
+ Py_RETURN_NONE;
+}
+
+
static PyMethodDef module_functions[] = {
{"get_configs", get_configs, METH_NOARGS},
{"get_recursion_depth", get_recursion_depth, METH_NOARGS},
@@ -1284,6 +1305,7 @@ static PyMethodDef module_functions[] = {
{"_PyTime_ObjectToTimespec", test_pytime_object_to_timespec, METH_VARARGS},
{"_PyTime_ObjectToTimeval", test_pytime_object_to_timeval, METH_VARARGS},
{"_PyTraceMalloc_GetTraceback", tracemalloc_get_traceback, METH_VARARGS},
+ {"test_tstate_capi", test_tstate_capi, METH_NOARGS, NULL},
{NULL, NULL} /* sentinel */
};
diff --git a/Modules/_xxsubinterpretersmodule.c b/Modules/_xxsubinterpretersmodule.c
index 4801f37..40dea17 100644
--- a/Modules/_xxsubinterpretersmodule.c
+++ b/Modules/_xxsubinterpretersmodule.c
@@ -1,8 +1,12 @@
-
/* interpreters module */
/* low-level access to interpreter primitives */
+#ifndef Py_BUILD_CORE_BUILTIN
+# define Py_BUILD_CORE_MODULE 1
+#endif
+
#include "Python.h"
+#include "pycore_interp.h" // _PyInterpreterState_GetMainModule()
#include "interpreteridobject.h"