mirror of
https://github.com/python/cpython.git
synced 2025-10-09 08:31:26 +00:00
bpo-46008: Make runtime-global object/type lifecycle functions and state consistent. (gh-29998)
This change is strictly renames and moving code around. It helps in the following ways: * ensures type-related init functions focus strictly on one of the three aspects (state, objects, types) * passes in PyInterpreterState * to all those functions, simplifying work on moving types/objects/state to the interpreter * consistent naming conventions help make what's going on more clear * keeping API related to a type in the corresponding header file makes it more obvious where to look for it https://bugs.python.org/issue46008
This commit is contained in:
parent
d8a464ef03
commit
c8749b5783
38 changed files with 818 additions and 361 deletions
|
@ -7,6 +7,7 @@
|
|||
#include "pycore_initconfig.h" // _PyStatus_OK()
|
||||
#include "pycore_object.h" // _PyObject_GC_TRACK()
|
||||
#include "pycore_pyerrors.h" // _Py_FatalRefcountError()
|
||||
#include "pycore_tuple.h" // struct _Py_tuple_state()
|
||||
|
||||
/*[clinic input]
|
||||
class tuple "PyTupleObject *" "&PyTuple_Type"
|
||||
|
@ -1066,7 +1067,7 @@ _PyTuple_ClearFreeList(PyInterpreterState *interp)
|
|||
|
||||
|
||||
PyStatus
|
||||
_PyTuple_Init(PyInterpreterState *interp)
|
||||
_PyTuple_InitGlobalObjects(PyInterpreterState *interp)
|
||||
{
|
||||
struct _Py_tuple_state *state = &interp->tuple;
|
||||
if (tuple_create_empty_tuple_singleton(state) < 0) {
|
||||
|
@ -1076,6 +1077,24 @@ _PyTuple_Init(PyInterpreterState *interp)
|
|||
}
|
||||
|
||||
|
||||
PyStatus
|
||||
_PyTuple_InitTypes(PyInterpreterState *interp)
|
||||
{
|
||||
if (!_Py_IsMainInterpreter(interp)) {
|
||||
return _PyStatus_OK();
|
||||
}
|
||||
|
||||
if (PyType_Ready(&PyTuple_Type) < 0) {
|
||||
return _PyStatus_ERR("Can't initialize tuple type");
|
||||
}
|
||||
|
||||
if (PyType_Ready(&PyTupleIter_Type) < 0) {
|
||||
return _PyStatus_ERR("Can't initialize tuple iterator type");
|
||||
}
|
||||
|
||||
return _PyStatus_OK();
|
||||
}
|
||||
|
||||
void
|
||||
_PyTuple_Fini(PyInterpreterState *interp)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue