mirror of
https://github.com/python/cpython.git
synced 2025-08-31 22:18:28 +00:00
bpo-40521: Always create the empty tuple singleton (GH-21116)
Py_InitializeFromConfig() now always creates the empty tuple singleton as soon as possible. Optimize PyTuple_New(0): it no longer has to check if the empty tuple was created or not, it is always creatd. * Add tuple_create_empty_tuple_singleton() function. * Add tuple_get_empty() function. * Remove state parameter of tuple_alloc().
This commit is contained in:
parent
80526f6841
commit
0430dfac62
3 changed files with 105 additions and 49 deletions
|
@ -583,6 +583,14 @@ pycore_init_types(PyThreadState *tstate)
|
|||
return status;
|
||||
}
|
||||
|
||||
// Create the empty tuple singleton. It must be created before the first
|
||||
// PyType_Ready() call since PyType_Ready() creates tuples, for tp_bases
|
||||
// for example.
|
||||
status = _PyTuple_Init(tstate);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
if (is_main_interp) {
|
||||
status = _PyTypes_Init();
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
|
@ -590,7 +598,6 @@ pycore_init_types(PyThreadState *tstate)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if (!_PyLong_Init(tstate)) {
|
||||
return _PyStatus_ERR("can't init longs");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue