mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
bpo-29737: Optimize concatenating with empty tuple. (#524)
This commit is contained in:
parent
be487a65f1
commit
98e80c2bab
1 changed files with 8 additions and 0 deletions
|
|
@ -446,6 +446,10 @@ tupleconcat(PyTupleObject *a, PyObject *bb)
|
|||
Py_ssize_t i;
|
||||
PyObject **src, **dest;
|
||||
PyTupleObject *np;
|
||||
if (Py_SIZE(a) == 0 && PyTuple_CheckExact(bb)) {
|
||||
Py_INCREF(bb);
|
||||
return bb;
|
||||
}
|
||||
if (!PyTuple_Check(bb)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"can only concatenate tuple (not \"%.200s\") to tuple",
|
||||
|
|
@ -453,6 +457,10 @@ tupleconcat(PyTupleObject *a, PyObject *bb)
|
|||
return NULL;
|
||||
}
|
||||
#define b ((PyTupleObject *)bb)
|
||||
if (Py_SIZE(b) == 0 && PyTuple_CheckExact(a)) {
|
||||
Py_INCREF(a);
|
||||
return (PyObject *)a;
|
||||
}
|
||||
if (Py_SIZE(a) > PY_SSIZE_T_MAX - Py_SIZE(b))
|
||||
return PyErr_NoMemory();
|
||||
size = Py_SIZE(a) + Py_SIZE(b);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue