Commit 2dba14ab authored by Stefan Behnel's avatar Stefan Behnel

Avoid using PySequence_ITEM() on METH_O calls as it involves much more...

Avoid using PySequence_ITEM() on METH_O calls as it involves much more overhead than PyTuple_GET_ITEM().
Also assume that we do not need to keep an extra reference to an item that we took from a call args tuple because someone else should at least hold a reference to that tuple.
parent 93440ae2
...@@ -599,10 +599,16 @@ static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, Py ...@@ -599,10 +599,16 @@ static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, Py
if (likely(kw == NULL || PyDict_Size(kw) == 0)) { if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
size = PyTuple_GET_SIZE(arg); size = PyTuple_GET_SIZE(arg);
if (likely(size == 1)) { if (likely(size == 1)) {
PyObject *result, *arg0 = PySequence_ITEM(arg, 0); PyObject *result, *arg0;
if (unlikely(!arg0)) return NULL; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
arg0 = PyTuple_GET_ITEM(arg, 0);
#else
arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
#endif
result = (*meth)(self, arg0); result = (*meth)(self, arg0);
#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
Py_DECREF(arg0); Py_DECREF(arg0);
#endif
return result; return result;
} }
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment