mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
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.
This commit is contained in:
parent
feb51f3a64
commit
8571b271e7
9 changed files with 86 additions and 70 deletions
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue