]> granicus.if.org Git - python/commitdiff
Replace PyObject_CallFunctionObjArgs() with fastcall
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 1 Dec 2016 13:43:22 +0000 (14:43 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 1 Dec 2016 13:43:22 +0000 (14:43 +0100)
* PyObject_CallFunctionObjArgs(func, NULL) => _PyObject_CallNoArg(func)
* PyObject_CallFunctionObjArgs(func, arg, NULL) => _PyObject_CallArg1(func, arg)

PyObject_CallFunctionObjArgs() allocates 40 bytes on the C stack and requires
extra work to "parse" C arguments to build a C array of PyObject*.

_PyObject_CallNoArg() and _PyObject_CallArg1() are simpler and don't allocate
memory on the C stack.

This change is part of the fastcall project. The change on listsort() is
related to the issue #23507.

33 files changed:
Modules/_asynciomodule.c
Modules/_csv.c
Modules/_elementtree.c
Modules/_json.c
Modules/_ssl.c
Modules/_struct.c
Modules/_testbuffer.c
Modules/gcmodule.c
Modules/itertoolsmodule.c
Modules/mathmodule.c
Modules/posixmodule.c
Objects/abstract.c
Objects/bytearrayobject.c
Objects/bytesobject.c
Objects/complexobject.c
Objects/descrobject.c
Objects/dictobject.c
Objects/enumobject.c
Objects/floatobject.c
Objects/genobject.c
Objects/listobject.c
Objects/longobject.c
Objects/memoryobject.c
Objects/object.c
Objects/odictobject.c
Objects/typeobject.c
Objects/unicodeobject.c
Objects/weakrefobject.c
Python/_warnings.c
Python/bltinmodule.c
Python/ceval.c
Python/import.c
Python/sysmodule.c

index b65fc02ebd1f1e2f60eafd947ddbeacd4730e461..19503a86f2ee592cd90b1334c908a43c59090476 100644 (file)
@@ -721,8 +721,7 @@ static PyObject *
 _asyncio_Future__repr_info_impl(FutureObj *self)
 /*[clinic end generated code: output=fa69e901bd176cfb input=f21504d8e2ae1ca2]*/
 {
-    return PyObject_CallFunctionObjArgs(
-        asyncio_future_repr_info_func, self, NULL);
+    return _PyObject_CallArg1(asyncio_future_repr_info_func, self);
 }
 
 /*[clinic input]
@@ -1535,8 +1534,7 @@ static PyObject *
 _asyncio_Task__repr_info_impl(TaskObj *self)
 /*[clinic end generated code: output=6a490eb66d5ba34b input=3c6d051ed3ddec8b]*/
 {
-    return PyObject_CallFunctionObjArgs(
-        asyncio_task_repr_info_func, self, NULL);
+    return _PyObject_CallArg1(asyncio_task_repr_info_func, self);
 }
 
 /*[clinic input]
@@ -1896,7 +1894,7 @@ task_set_error_soon(TaskObj *task, PyObject *et, const char *format, ...)
         return NULL;
     }
 
-    PyObject *e = PyObject_CallFunctionObjArgs(et, msg, NULL);
+    PyObject *e = _PyObject_CallArg1(et, msg);
     Py_DECREF(msg);
     if (e == NULL) {
         return NULL;
@@ -1946,7 +1944,7 @@ task_step_impl(TaskObj *task, PyObject *exc)
 
         if (!exc) {
             /* exc was not a CancelledError */
-            exc = PyObject_CallFunctionObjArgs(asyncio_CancelledError, NULL);
+            exc = _PyObject_CallNoArg(asyncio_CancelledError);
             if (!exc) {
                 goto fail;
             }
@@ -2176,7 +2174,7 @@ task_step_impl(TaskObj *task, PyObject *exc)
     }
 
     /* Check if `result` is a generator */
-    o = PyObject_CallFunctionObjArgs(inspect_isgenerator, result, NULL);
+    o = _PyObject_CallArg1(inspect_isgenerator, result);
     if (o == NULL) {
         /* An exception in inspect.isgenerator */
         goto fail;
index e5324ae91a52143c2dcd6ceb0a49afc23b3cd18e..08907dbe3eae2df5cf1875a302302fcf71581f66 100644 (file)
@@ -1259,7 +1259,7 @@ csv_writerow(WriterObj *self, PyObject *seq)
                                      (void *) self->rec, self->rec_len);
     if (line == NULL)
         return NULL;
-    result = PyObject_CallFunctionObjArgs(self->writeline, line, NULL);
+    result = _PyObject_CallArg1(self->writeline, line);
     Py_DECREF(line);
     return result;
 }
index 71245c23d96c6508314a69cb47790059681e7e1d..f3e1e9f2272ee0f59ab32067f9eeb102eb3018bf 100644 (file)
@@ -2457,7 +2457,7 @@ treebuilder_append_event(TreeBuilderObject *self, PyObject *action,
         PyObject *event = PyTuple_Pack(2, action, node);
         if (event == NULL)
             return -1;
-        res = PyObject_CallFunctionObjArgs(self->events_append, event, NULL);
+        res = _PyObject_CallArg1(self->events_append, event);
         Py_DECREF(event);
         if (res == NULL)
             return -1;
index d3dbf98805d414624d76278be7e34a33c0600251..da7b2edeaae09a28fb524ddcdcd9923bb7bfcdeb 100644 (file)
@@ -813,14 +813,14 @@ _parse_object_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ss
     *next_idx_ptr = idx + 1;
 
     if (has_pairs_hook) {
-        val = PyObject_CallFunctionObjArgs(s->object_pairs_hook, rval, NULL);
+        val = _PyObject_CallArg1(s->object_pairs_hook, rval);
         Py_DECREF(rval);
         return val;
     }
 
     /* if object_hook is not None: rval = object_hook(rval) */
     if (s->object_hook != Py_None) {
-        val = PyObject_CallFunctionObjArgs(s->object_hook, rval, NULL);
+        val = _PyObject_CallArg1(s->object_hook, rval);
         Py_DECREF(rval);
         return val;
     }
@@ -924,7 +924,7 @@ _parse_constant(PyScannerObject *s, const char *constant, Py_ssize_t idx, Py_ssi
         return NULL;
 
     /* rval = parse_constant(constant) */
-    rval = PyObject_CallFunctionObjArgs(s->parse_constant, cstr, NULL);
+    rval = _PyObject_CallArg1(s->parse_constant, cstr);
     idx += PyUnicode_GET_LENGTH(cstr);
     Py_DECREF(cstr);
     *next_idx_ptr = idx;
@@ -1023,7 +1023,7 @@ _match_number_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t start, Py_
                                            idx - start);
         if (numstr == NULL)
             return NULL;
-        rval = PyObject_CallFunctionObjArgs(custom_func, numstr, NULL);
+        rval = _PyObject_CallArg1(custom_func, numstr);
     }
     else {
         Py_ssize_t i, n;
@@ -1475,7 +1475,7 @@ encoder_encode_string(PyEncoderObject *s, PyObject *obj)
     if (s->fast_encode)
         return s->fast_encode(NULL, obj);
     else
-        return PyObject_CallFunctionObjArgs(s->encoder, obj, NULL);
+        return _PyObject_CallArg1(s->encoder, obj);
 }
 
 static int
@@ -1553,7 +1553,7 @@ encoder_listencode_obj(PyEncoderObject *s, _PyAccu *acc,
                 return -1;
             }
         }
-        newobj = PyObject_CallFunctionObjArgs(s->defaultfn, obj, NULL);
+        newobj = _PyObject_CallArg1(s->defaultfn, obj);
         if (newobj == NULL) {
             Py_XDECREF(ident);
             return -1;
index b1988570604db15819d63dbc52e3b6a107cfdfb7..6003476052cea8391398e52e87c2616dfed28b11 100644 (file)
@@ -3197,7 +3197,7 @@ _password_callback(char *buf, int size, int rwflag, void *userdata)
     PySSL_END_ALLOW_THREADS_S(pw_info->thread_state);
 
     if (pw_info->callable) {
-        fn_ret = PyObject_CallFunctionObjArgs(pw_info->callable, NULL);
+        fn_ret = _PyObject_CallNoArg(pw_info->callable);
         if (!fn_ret) {
             /* TODO: It would be nice to move _ctypes_add_traceback() into the
                core python API, so we could use it to add a frame here */
index 1d7a935ac8c49a493060b7b2749c107463095161..4ef5c89e7d57460b677e13eec8a1c6d9db8e01ef 100644 (file)
@@ -2046,7 +2046,7 @@ cache_struct(PyObject *fmt)
         return s_object;
     }
 
-    s_object = PyObject_CallFunctionObjArgs((PyObject *)(&PyStructType), fmt, NULL);
+    s_object = _PyObject_CallArg1((PyObject *)(&PyStructType), fmt);
     if (s_object != NULL) {
         if (PyDict_Size(cache) >= MAXCACHE)
             PyDict_Clear(cache);
index 13d3cccfa4ff7fd91ae70d588f9288f9a402e9e2..bf22f29f6e871189c1add26d4bd2311db2e67ddf 100644 (file)
@@ -312,7 +312,7 @@ pack_from_list(PyObject *obj, PyObject *items, PyObject *format,
     assert(PyObject_CheckBuffer(obj));
     assert(PyList_Check(items) || PyTuple_Check(items));
 
-    structobj = PyObject_CallFunctionObjArgs(Struct, format, NULL);
+    structobj = _PyObject_CallArg1(Struct, format);
     if (structobj == NULL)
         return -1;
 
@@ -406,7 +406,7 @@ pack_single(char *ptr, PyObject *item, const char *fmt, Py_ssize_t itemsize)
     if (format == NULL)
         goto out;
 
-    structobj = PyObject_CallFunctionObjArgs(Struct, format, NULL);
+    structobj = _PyObject_CallArg1(Struct, format);
     if (structobj == NULL)
         goto out;
 
@@ -620,7 +620,7 @@ unpack_rec(PyObject *unpack_from, char *ptr, PyObject *mview, char *item,
 
     if (ndim == 0) {
         memcpy(item, ptr, itemsize);
-        x = PyObject_CallFunctionObjArgs(unpack_from, mview, NULL);
+        x = _PyObject_CallArg1(unpack_from, mview);
         if (x == NULL)
             return NULL;
         if (PyTuple_GET_SIZE(x) == 1) {
@@ -696,7 +696,7 @@ ndarray_as_list(NDArrayObject *nd)
     if (format == NULL)
         goto out;
 
-    structobj = PyObject_CallFunctionObjArgs(Struct, format, NULL);
+    structobj = _PyObject_CallArg1(Struct, format);
     Py_DECREF(format);
     if (structobj == NULL)
         goto out;
@@ -788,7 +788,7 @@ get_itemsize(PyObject *format)
     PyObject *tmp;
     Py_ssize_t itemsize;
 
-    tmp = PyObject_CallFunctionObjArgs(calcsize, format, NULL);
+    tmp = _PyObject_CallArg1(calcsize, format);
     if (tmp == NULL)
         return -1;
     itemsize = PyLong_AsSsize_t(tmp);
index 754348e20a92d0b9e08c35ace72e784d53eebcda..a53cf20dfc0bfa72e601e57488f73dafee470088 100644 (file)
@@ -709,7 +709,7 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old)
         assert(callback != NULL);
 
         /* copy-paste of weakrefobject.c's handle_callback() */
-        temp = PyObject_CallFunctionObjArgs(callback, wr, NULL);
+        temp = _PyObject_CallArg1(callback, wr);
         if (temp == NULL)
             PyErr_WriteUnraisable(callback);
         else
index 6bf04cbee31c35ce76e1b05887472d6ca716e728..5ea69a03ebbf0df546747273fad965d7dd7e1da1 100644 (file)
@@ -101,7 +101,7 @@ groupby_next(groupbyobject *gbo)
             newkey = newvalue;
             Py_INCREF(newvalue);
         } else {
-            newkey = PyObject_CallFunctionObjArgs(gbo->keyfunc, newvalue, NULL);
+            newkey = _PyObject_CallArg1(gbo->keyfunc, newvalue);
             if (newkey == NULL) {
                 Py_DECREF(newvalue);
                 return NULL;
@@ -293,7 +293,7 @@ _grouper_next(_grouperobject *igo)
             newkey = newvalue;
             Py_INCREF(newvalue);
         } else {
-            newkey = PyObject_CallFunctionObjArgs(gbo->keyfunc, newvalue, NULL);
+            newkey = _PyObject_CallArg1(gbo->keyfunc, newvalue);
             if (newkey == NULL) {
                 Py_DECREF(newvalue);
                 return NULL;
@@ -1130,7 +1130,7 @@ dropwhile_next(dropwhileobject *lz)
         if (lz->start == 1)
             return item;
 
-        good = PyObject_CallFunctionObjArgs(lz->func, item, NULL);
+        good = _PyObject_CallArg1(lz->func, item);
         if (good == NULL) {
             Py_DECREF(item);
             return NULL;
@@ -1296,7 +1296,7 @@ takewhile_next(takewhileobject *lz)
     if (item == NULL)
         return NULL;
 
-    good = PyObject_CallFunctionObjArgs(lz->func, item, NULL);
+    good = _PyObject_CallArg1(lz->func, item);
     if (good == NULL) {
         Py_DECREF(item);
         return NULL;
@@ -3824,7 +3824,7 @@ filterfalse_next(filterfalseobject *lz)
             ok = PyObject_IsTrue(item);
         } else {
             PyObject *good;
-            good = PyObject_CallFunctionObjArgs(lz->func, item, NULL);
+            good = _PyObject_CallArg1(lz->func, item);
             if (good == NULL) {
                 Py_DECREF(item);
                 return NULL;
index 95ea4f7fef83aa9a9e66165f53304414dfe3ae36..e7e34ef431839ac87c9893a8d4a23f95fb732bf5 100644 (file)
@@ -951,7 +951,7 @@ static PyObject * math_ceil(PyObject *self, PyObject *number) {
             return NULL;
         return math_1_to_int(number, ceil, 0);
     }
-    result = PyObject_CallFunctionObjArgs(method, NULL);
+    result = _PyObject_CallNoArg(method);
     Py_DECREF(method);
     return result;
 }
@@ -991,7 +991,7 @@ static PyObject * math_floor(PyObject *self, PyObject *number) {
             return NULL;
         return math_1_to_int(number, floor, 0);
     }
-    result = PyObject_CallFunctionObjArgs(method, NULL);
+    result = _PyObject_CallNoArg(method);
     Py_DECREF(method);
     return result;
 }
@@ -1542,7 +1542,7 @@ math_trunc(PyObject *self, PyObject *number)
                          Py_TYPE(number)->tp_name);
         return NULL;
     }
-    result = PyObject_CallFunctionObjArgs(trunc, NULL);
+    result = _PyObject_CallNoArg(trunc);
     Py_DECREF(trunc);
     return result;
 }
index 2e9eb9e126cb97988f814d7c1de0e589e123abb6..129ff1c65102cef149cc512dc44c61b76eb33624 100644 (file)
@@ -902,7 +902,7 @@ path_converter(PyObject *o, void *p)
             goto error_exit;
         }
 
-        o = to_cleanup = PyObject_CallFunctionObjArgs(func, NULL);
+        o = to_cleanup = _PyObject_CallNoArg(func);
         Py_DECREF(func);
         if (NULL == o) {
             goto error_exit;
@@ -12041,7 +12041,7 @@ PyOS_FSPath(PyObject *path)
                             Py_TYPE(path)->tp_name);
     }
 
-    path_repr = PyObject_CallFunctionObjArgs(func, NULL);
+    path_repr = _PyObject_CallNoArg(func);
     Py_DECREF(func);
     if (NULL == path_repr) {
         return NULL;
index beb12c98f6a11f690440cfc893cb85403cd623ba..2f238ed0f1e8f52e20c4c2362bcec8d7baa94bff 100644 (file)
@@ -103,7 +103,7 @@ PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue)
         }
         return defaultvalue;
     }
-    result = PyObject_CallFunctionObjArgs(hint, NULL);
+    result = _PyObject_CallNoArg(hint);
     Py_DECREF(hint);
     if (result == NULL) {
         if (PyErr_ExceptionMatches(PyExc_TypeError)) {
@@ -716,7 +716,7 @@ PyObject_Format(PyObject *obj, PyObject *format_spec)
     }
 
     /* And call it. */
-    result = PyObject_CallFunctionObjArgs(meth, format_spec, NULL);
+    result = _PyObject_CallArg1(meth, format_spec);
     Py_DECREF(meth);
 
     if (result && !PyUnicode_Check(result)) {
@@ -3011,7 +3011,7 @@ PyObject_IsInstance(PyObject *inst, PyObject *cls)
             Py_DECREF(checker);
             return ok;
         }
-        res = PyObject_CallFunctionObjArgs(checker, inst, NULL);
+        res = _PyObject_CallArg1(checker, inst);
         Py_LeaveRecursiveCall();
         Py_DECREF(checker);
         if (res != NULL) {
@@ -3085,7 +3085,7 @@ PyObject_IsSubclass(PyObject *derived, PyObject *cls)
             Py_DECREF(checker);
             return ok;
         }
-        res = PyObject_CallFunctionObjArgs(checker, derived, NULL);
+        res = _PyObject_CallArg1(checker, derived);
         Py_LeaveRecursiveCall();
         Py_DECREF(checker);
         if (res != NULL) {
index 16b4fd7a900c17c7e7e70c3456e94882e3d3a226..853156eabcb1af55261e1169bed86640675c1f9a 100644 (file)
@@ -98,8 +98,7 @@ _canresize(PyByteArrayObject *self)
 PyObject *
 PyByteArray_FromObject(PyObject *input)
 {
-    return PyObject_CallFunctionObjArgs((PyObject *)&PyByteArray_Type,
-                                        input, NULL);
+    return _PyObject_CallArg1((PyObject *)&PyByteArray_Type, input);
 }
 
 PyObject *
@@ -1985,8 +1984,7 @@ bytearray_fromhex_impl(PyTypeObject *type, PyObject *string)
 {
     PyObject *result = _PyBytes_FromHex(string, type == &PyByteArray_Type);
     if (type != &PyByteArray_Type && result != NULL) {
-        Py_SETREF(result, PyObject_CallFunctionObjArgs((PyObject *)type,
-                                                       result, NULL));
+        Py_SETREF(result, _PyObject_CallArg1((PyObject *)type, result));
     }
     return result;
 }
index 5cdc2ca30e81a1592a4d401a8fd85ef40ec8c199..b82945ab1d63f162ac3e0ee93c7637ec84060d26 100644 (file)
@@ -549,7 +549,7 @@ format_obj(PyObject *v, const char **pbuf, Py_ssize_t *plen)
     /* does it support __bytes__? */
     func = _PyObject_LookupSpecial(v, &PyId___bytes__);
     if (func != NULL) {
-        result = PyObject_CallFunctionObjArgs(func, NULL);
+        result = _PyObject_CallNoArg(func);
         Py_DECREF(func);
         if (result == NULL)
             return NULL;
@@ -2331,8 +2331,7 @@ bytes_fromhex_impl(PyTypeObject *type, PyObject *string)
 {
     PyObject *result = _PyBytes_FromHex(string, 0);
     if (type != &PyBytes_Type && result != NULL) {
-        Py_SETREF(result, PyObject_CallFunctionObjArgs((PyObject *)type,
-                                                       result, NULL));
+        Py_SETREF(result, _PyObject_CallArg1((PyObject *)type, result));
     }
     return result;
 }
@@ -2569,7 +2568,7 @@ bytes_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
        PyObject_Bytes doesn't do. */
     func = _PyObject_LookupSpecial(x, &PyId___bytes__);
     if (func != NULL) {
-        new = PyObject_CallFunctionObjArgs(func, NULL);
+        new = _PyObject_CallNoArg(func);
         Py_DECREF(func);
         if (new == NULL)
             return NULL;
index 31e12784cc34f94f8c780aa51f199c8b328a4524..0d391e5208cc77453167cac3e7f296314f5ce6c6 100644 (file)
@@ -273,7 +273,7 @@ try_complex_special_method(PyObject *op) {
 
     f = _PyObject_LookupSpecial(op, &PyId___complex__);
     if (f) {
-        PyObject *res = PyObject_CallFunctionObjArgs(f, NULL);
+        PyObject *res = _PyObject_CallNoArg(f);
         Py_DECREF(f);
         if (res != NULL && !PyComplex_Check(res)) {
             PyErr_SetString(PyExc_TypeError,
index 076e74148148254333f91eadb78417e296a3d682..82cc181029fc97bf5278954ed83e22890bd498b7 100644 (file)
@@ -1414,7 +1414,7 @@ property_descr_set(PyObject *self, PyObject *obj, PyObject *value)
         return -1;
     }
     if (value == NULL)
-        res = PyObject_CallFunctionObjArgs(func, obj, NULL);
+        res = _PyObject_CallArg1(func, obj);
     else
         res = PyObject_CallFunctionObjArgs(func, obj, value, NULL);
     if (res == NULL)
index 2a01f70b718ae8d58f1d68bab94e386055dfbbfb..b74941ac2973f29ec70c475eaf801561d5d982c9 100644 (file)
@@ -2066,8 +2066,7 @@ dict_subscript(PyDictObject *mp, PyObject *key)
             _Py_IDENTIFIER(__missing__);
             missing = _PyObject_LookupSpecial((PyObject *)mp, &PyId___missing__);
             if (missing != NULL) {
-                res = PyObject_CallFunctionObjArgs(missing,
-                                                   key, NULL);
+                res = _PyObject_CallArg1(missing, key);
                 Py_DECREF(missing);
                 return res;
             }
index dae166d5adf4687f1b68de68280ad0b9748fccf2..72d31b16af968bb11b0dc81d115d6d61d6a90063 100644 (file)
@@ -258,7 +258,7 @@ reversed_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
         return NULL;
     }
     if (reversed_meth != NULL) {
-        PyObject *res = PyObject_CallFunctionObjArgs(reversed_meth, NULL);
+        PyObject *res = _PyObject_CallNoArg(reversed_meth);
         Py_DECREF(reversed_meth);
         return res;
     }
index 17a55dd114d42e27a1215b84f4463083fb271e07..997d1f9665df7b43a91e640d73577216ae1d12f8 100644 (file)
@@ -1439,7 +1439,7 @@ float_fromhex(PyObject *cls, PyObject *arg)
         goto parse_error;
     result = PyFloat_FromDouble(negate ? -x : x);
     if (cls != (PyObject *)&PyFloat_Type && result != NULL) {
-        Py_SETREF(result, PyObject_CallFunctionObjArgs(cls, result, NULL));
+        Py_SETREF(result, _PyObject_CallArg1(cls, result));
     }
     return result;
 
index 2680ab0e129da4bf8966156987032db5cc78400e..1db83c9d64bd070ea24619d194ff7f7cc6284fa2 100644 (file)
@@ -43,7 +43,7 @@ _PyGen_Finalize(PyObject *self)
             /* Save the current exception, if any. */
             PyErr_Fetch(&error_type, &error_value, &error_traceback);
 
-            res = PyObject_CallFunctionObjArgs(finalizer, self, NULL);
+            res = _PyObject_CallArg1(finalizer, self);
 
             if (res == NULL) {
                 PyErr_WriteUnraisable(self);
@@ -591,7 +591,7 @@ _PyGen_SetStopIterationValue(PyObject *value)
      *
      * (See PyErr_SetObject/_PyErr_CreateException code for details.)
      */
-    e = PyObject_CallFunctionObjArgs(PyExc_StopIteration, value, NULL);
+    e = _PyObject_CallArg1(PyExc_StopIteration, value);
     if (e == NULL) {
         return -1;
     }
index dcd7b5efe5b0fe7bb0e4c4b20b233f7e7a92b6ed..81b6c485572829ef3142c4501889cf91f6450ce1 100644 (file)
@@ -1970,8 +1970,7 @@ listsort(PyListObject *self, PyObject *args, PyObject *kwds)
         }
 
         for (i = 0; i < saved_ob_size ; i++) {
-            keys[i] = PyObject_CallFunctionObjArgs(keyfunc, saved_ob_item[i],
-                                                   NULL);
+            keys[i] = _PyObject_CallArg1(keyfunc, saved_ob_item[i]);
             if (keys[i] == NULL) {
                 for (i=i-1 ; i>=0 ; i--)
                     Py_DECREF(keys[i]);
index c95f9467ad20df231df2ce8a55a248573234927e..b9f6327759d7f354cacb063054f24c825d3780db 100644 (file)
@@ -5282,8 +5282,7 @@ long_from_bytes(PyTypeObject *type, PyObject *args, PyObject *kwds)
     Py_DECREF(bytes);
 
     if (type != &PyLong_Type) {
-        Py_SETREF(long_obj, PyObject_CallFunctionObjArgs((PyObject *)type,
-                                                         long_obj, NULL));
+        Py_SETREF(long_obj, _PyObject_CallArg1((PyObject *)type, long_obj));
     }
 
     return long_obj;
index 428d83c9874233713374a9fa70079173c47c3378..eac07fbc036edc7bfb8ad6c3139d8eb838421ba6 100644 (file)
@@ -1939,7 +1939,7 @@ struct_get_unpacker(const char *fmt, Py_ssize_t itemsize)
     if (format == NULL)
         goto error;
 
-    structobj = PyObject_CallFunctionObjArgs(Struct, format, NULL);
+    structobj = _PyObject_CallArg1(Struct, format);
     if (structobj == NULL)
         goto error;
 
@@ -1978,7 +1978,7 @@ struct_unpack_single(const char *ptr, struct unpacker *x)
     PyObject *v;
 
     memcpy(x->item, ptr, x->itemsize);
-    v = PyObject_CallFunctionObjArgs(x->unpack_from, x->mview, NULL);
+    v = _PyObject_CallArg1(x->unpack_from, x->mview);
     if (v == NULL)
         return NULL;
 
index d88ae3b94f3e7d49928a4dfe5d3ba4adfa3c902b..4844bd766911cb88f2b3d6161364e7ffe42d8a4a 100644 (file)
@@ -596,7 +596,7 @@ PyObject_Bytes(PyObject *v)
 
     func = _PyObject_LookupSpecial(v, &PyId___bytes__);
     if (func != NULL) {
-        result = PyObject_CallFunctionObjArgs(func, NULL);
+        result = _PyObject_CallNoArg(func);
         Py_DECREF(func);
         if (result == NULL)
             return NULL;
@@ -1314,7 +1314,7 @@ _dir_object(PyObject *obj)
         return NULL;
     }
     /* use __dir__ */
-    result = PyObject_CallFunctionObjArgs(dirfunc, NULL);
+    result = _PyObject_CallNoArg(dirfunc);
     Py_DECREF(dirfunc);
     if (result == NULL)
         return NULL;
index 22b1f1dfed9cce63219a869a5c65cbc857077361..77fb3a181dc2b3ce92d97565d3544ad366cfb1b5 100644 (file)
@@ -1256,7 +1256,7 @@ odict_copy(register PyODictObject *od)
     if (PyODict_CheckExact(od))
         od_copy = PyODict_New();
     else
-        od_copy = PyObject_CallFunctionObjArgs((PyObject *)Py_TYPE(od), NULL);
+        od_copy = _PyObject_CallNoArg((PyObject *)Py_TYPE(od));
     if (od_copy == NULL)
         return NULL;
 
index 186c57016c5613a5db34563157808cd7a22f6608..a9f352046cf639b9449fc3cdfe7e6b18dd987777 100644 (file)
@@ -3487,9 +3487,7 @@ object_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
         sorted = _PyDict_GetItemId(builtins, &PyId_sorted);
         if (sorted == NULL)
             goto error;
-        sorted_methods = PyObject_CallFunctionObjArgs(sorted,
-                                                      abstract_methods,
-                                                      NULL);
+        sorted_methods = _PyObject_CallArg1(sorted, abstract_methods);
         if (sorted_methods == NULL)
             goto error;
         comma = _PyUnicode_FromId(&comma_id);
@@ -6193,7 +6191,7 @@ call_attribute(PyObject *self, PyObject *attr, PyObject *name)
         else
             attr = descr;
     }
-    res = PyObject_CallFunctionObjArgs(attr, name, NULL);
+    res = _PyObject_CallArg1(attr, name);
     Py_XDECREF(descr);
     return res;
 }
index 1c2257e141b2d3d902a587a6b90d19973118eaca..8f6f6c675fb369187734fe557473936195260c54 100644 (file)
@@ -4269,7 +4269,7 @@ unicode_decode_call_errorhandler_wchar(
     if (*exceptionObject == NULL)
         goto onError;
 
-    restuple = PyObject_CallFunctionObjArgs(*errorHandler, *exceptionObject, NULL);
+    restuple = _PyObject_CallArg1(*errorHandler, *exceptionObject);
     if (restuple == NULL)
         goto onError;
     if (!PyTuple_Check(restuple)) {
@@ -4368,7 +4368,7 @@ unicode_decode_call_errorhandler_writer(
     if (*exceptionObject == NULL)
         goto onError;
 
-    restuple = PyObject_CallFunctionObjArgs(*errorHandler, *exceptionObject, NULL);
+    restuple = _PyObject_CallArg1(*errorHandler, *exceptionObject);
     if (restuple == NULL)
         goto onError;
     if (!PyTuple_Check(restuple)) {
@@ -6649,8 +6649,7 @@ unicode_encode_call_errorhandler(const char *errors,
     if (*exceptionObject == NULL)
         return NULL;
 
-    restuple = PyObject_CallFunctionObjArgs(
-        *errorHandler, *exceptionObject, NULL);
+    restuple = _PyObject_CallArg1(*errorHandler, *exceptionObject);
     if (restuple == NULL)
         return NULL;
     if (!PyTuple_Check(restuple)) {
@@ -8644,8 +8643,7 @@ unicode_translate_call_errorhandler(const char *errors,
     if (*exceptionObject == NULL)
         return NULL;
 
-    restuple = PyObject_CallFunctionObjArgs(
-        *errorHandler, *exceptionObject, NULL);
+    restuple = _PyObject_CallArg1(*errorHandler, *exceptionObject);
     if (restuple == NULL)
         return NULL;
     if (!PyTuple_Check(restuple)) {
index ab6b23525552b83b2f8a51c633d0694eb155dda3..2f33aed0261685700d6804446ecb559dc64cb571 100644 (file)
@@ -867,7 +867,7 @@ PyWeakref_GetObject(PyObject *ref)
 static void
 handle_callback(PyWeakReference *ref, PyObject *callback)
 {
-    PyObject *cbresult = PyObject_CallFunctionObjArgs(callback, ref, NULL);
+    PyObject *cbresult = _PyObject_CallArg1(callback, ref);
 
     if (cbresult == NULL)
         PyErr_WriteUnraisable(callback);
index 6cfae77f126bdd260d8430c517f7e4995887fe56..a4ce7d19251e4c06063d75cf5cf8c29a11a035f7 100644 (file)
@@ -415,7 +415,7 @@ call_show_warning(PyObject *category, PyObject *text, PyObject *message,
     if (msg == NULL)
         goto error;
 
-    res = PyObject_CallFunctionObjArgs(show_fn, msg, NULL);
+    res = _PyObject_CallArg1(show_fn, msg);
     Py_DECREF(show_fn);
     Py_DECREF(msg);
 
index 5c925452e66b18a22bc529a6142491ff1da6115f..1b53897e2dbc96564d3ca21f207b631870458d44 100644 (file)
@@ -469,7 +469,7 @@ filter_next(filterobject *lz)
             ok = PyObject_IsTrue(item);
         } else {
             PyObject *good;
-            good = PyObject_CallFunctionObjArgs(lz->func, item, NULL);
+            good = _PyObject_CallArg1(lz->func, item);
             if (good == NULL) {
                 Py_DECREF(item);
                 return NULL;
@@ -1519,7 +1519,7 @@ min_max(PyObject *args, PyObject *kwds, int op)
     while (( item = PyIter_Next(it) )) {
         /* get the value from the key function */
         if (keyfunc != NULL) {
-            val = PyObject_CallFunctionObjArgs(keyfunc, item, NULL);
+            val = _PyObject_CallArg1(keyfunc, item);
             if (val == NULL)
                 goto Fail_it_item;
         }
@@ -2044,9 +2044,9 @@ builtin_round(PyObject *self, PyObject *args, PyObject *kwds)
     }
 
     if (ndigits == NULL || ndigits == Py_None)
-        result = PyObject_CallFunctionObjArgs(round, NULL);
+        result = _PyObject_CallNoArg(round);
     else
-        result = PyObject_CallFunctionObjArgs(round, ndigits, NULL);
+        result = _PyObject_CallArg1(round, ndigits);
     Py_DECREF(round);
     return result;
 }
index 42c0c614b1d7086831694f46795ded4d6cecda33..d4a90c4fc99305d2b4156589aa3f268631edbf69 100644 (file)
@@ -1756,7 +1756,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
                 Py_DECREF(value);
                 goto error;
             }
-            res = PyObject_CallFunctionObjArgs(hook, value, NULL);
+            res = _PyObject_CallArg1(hook, value);
             Py_DECREF(value);
             if (res == NULL)
                 goto error;
@@ -3062,7 +3062,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
             Py_DECREF(mgr);
             if (enter == NULL)
                 goto error;
-            res = PyObject_CallFunctionObjArgs(enter, NULL);
+            res = _PyObject_CallNoArg(enter);
             Py_DECREF(enter);
             if (res == NULL)
                 goto error;
@@ -3096,7 +3096,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
             }
             SET_TOP(exit);
             Py_DECREF(mgr);
-            res = PyObject_CallFunctionObjArgs(enter, NULL);
+            res = _PyObject_CallNoArg(enter);
             Py_DECREF(enter);
             if (res == NULL)
                 goto error;
index 6bcb1d79fda429c1f1decf532379b1c2eb9af4e9..a12b9e238973096ed39738fea09ac1abf754c199 100644 (file)
@@ -985,7 +985,7 @@ get_path_importer(PyObject *path_importer_cache, PyObject *path_hooks,
         PyObject *hook = PyList_GetItem(path_hooks, j);
         if (hook == NULL)
             return NULL;
-        importer = PyObject_CallFunctionObjArgs(hook, p, NULL);
+        importer = _PyObject_CallArg1(hook, p);
         if (importer != NULL)
             break;
 
index 79068304ab77b0c00d5d7902d2d0abff487b1ff5..2a3f36c6ddd6e4d31839f93e1ee9ee3f68d7981b 100644 (file)
@@ -1098,7 +1098,7 @@ _PySys_GetSizeOf(PyObject *o)
                          Py_TYPE(o)->tp_name);
     }
     else {
-        res = PyObject_CallFunctionObjArgs(method, NULL);
+        res = _PyObject_CallNoArg(method);
         Py_DECREF(method);
     }