SF patch #659536: Use PyArg_UnpackTuple where possible.

Obtain cleaner coding and a system wide
performance boost by using the fast, pre-parsed
PyArg_Unpack function instead of PyArg_ParseTuple
function which is driven by a format string.
This commit is contained in:
Raymond Hettinger 2002-12-29 16:33:45 +00:00
parent f8bcfb13f1
commit ea3fdf44a2
11 changed files with 41 additions and 41 deletions

View file

@ -2178,7 +2178,7 @@ instancemethod_new(PyTypeObject* type, PyObject* args, PyObject *kw)
PyObject *self;
PyObject *classObj;
if (!PyArg_ParseTuple(args, "OOO:instancemethod",
if (!PyArg_UnpackTuple(args, "instancemethod", 3, 3,
&func, &self, &classObj))
return NULL;
if (!PyCallable_Check(func)) {

View file

@ -686,7 +686,7 @@ proxy_get(proxyobject *pp, PyObject *args)
{
PyObject *key, *def = Py_None;
if (!PyArg_ParseTuple(args, "O|O:get", &key, &def))
if (!PyArg_UnpackTuple(args, "get", 1, 2, &key, &def))
return NULL;
return PyObject_CallMethod(pp->dict, "get", "(OO)", key, def);
}

View file

@ -972,7 +972,7 @@ dict_fromkeys(PyObject *cls, PyObject *args)
PyObject *d;
int status;
if (!PyArg_ParseTuple(args, "O|O:fromkeys", &seq, &value))
if (!PyArg_UnpackTuple(args, "fromkeys", 1, 2, &seq, &value))
return NULL;
d = PyObject_CallObject(cls, NULL);
@ -1479,7 +1479,7 @@ dict_get(register dictobject *mp, PyObject *args)
PyObject *val = NULL;
long hash;
if (!PyArg_ParseTuple(args, "O|O:get", &key, &failobj))
if (!PyArg_UnpackTuple(args, "get", 1, 2, &key, &failobj))
return NULL;
if (!PyString_CheckExact(key) ||
@ -1505,7 +1505,7 @@ dict_setdefault(register dictobject *mp, PyObject *args)
PyObject *val = NULL;
long hash;
if (!PyArg_ParseTuple(args, "O|O:setdefault", &key, &failobj))
if (!PyArg_UnpackTuple(args, "setdefault", 1, 2, &key, &failobj))
return NULL;
if (!PyString_CheckExact(key) ||
@ -1834,7 +1834,7 @@ dict_init(PyObject *self, PyObject *args, PyObject *kwds)
PyObject *arg = NULL;
int result = 0;
if (!PyArg_ParseTuple(args, "|O:dict", &arg))
if (!PyArg_UnpackTuple(args, "dict", 0, 1, &arg))
result = -1;
else if (arg != NULL) {

View file

@ -503,7 +503,7 @@ file_truncate(PyFileObject *f, PyObject *args)
if (f->f_fp == NULL)
return err_closed();
newsizeobj = NULL;
if (!PyArg_ParseTuple(args, "|O:truncate", &newsizeobj))
if (!PyArg_UnpackTuple(args, "truncate", 0, 1, &newsizeobj))
return NULL;
/* Set newsize to current postion if newsizeobj NULL, else to the

View file

@ -588,7 +588,7 @@ cm_init(PyObject *self, PyObject *args, PyObject *kwds)
classmethod *cm = (classmethod *)self;
PyObject *callable;
if (!PyArg_ParseTuple(args, "O:classmethod", &callable))
if (!PyArg_UnpackTuple(args, "classmethod", 1, 1, &callable))
return -1;
Py_INCREF(callable);
cm->cm_callable = callable;
@ -720,7 +720,7 @@ sm_init(PyObject *self, PyObject *args, PyObject *kwds)
staticmethod *sm = (staticmethod *)self;
PyObject *callable;
if (!PyArg_ParseTuple(args, "O:staticmethod", &callable))
if (!PyArg_UnpackTuple(args, "staticmethod", 1, 1, &callable))
return -1;
Py_INCREF(callable);
sm->sm_callable = callable;

View file

@ -1654,7 +1654,7 @@ listsort(PyListObject *self, PyObject *args)
assert(self != NULL);
if (args != NULL) {
if (!PyArg_ParseTuple(args, "|O:sort", &compare))
if (!PyArg_UnpackTuple(args, "sort", 0, 1, &compare))
return NULL;
}
merge_init(&ms, compare);

View file

@ -174,7 +174,7 @@ slice_new(PyTypeObject *type, PyObject *args, PyObject *kw)
start = stop = step = NULL;
if (!PyArg_ParseTuple(args, "O|OO:slice", &start, &stop, &step))
if (!PyArg_UnpackTuple(args, "slice", 1, 3, &start, &stop, &step))
return NULL;
/* This swapping of stop and start is to maintain similarity with

View file

@ -2046,7 +2046,7 @@ string_translate(PyStringObject *self, PyObject *args)
int trans_table[256];
PyObject *tableobj, *delobj = NULL;
if (!PyArg_ParseTuple(args, "O|O:translate",
if (!PyArg_UnpackTuple(args, "translate", 1, 2,
&tableobj, &delobj))
return NULL;