From: Victor Stinner Date: Fri, 19 Aug 2016 23:34:44 +0000 (+0200) Subject: _elementtree: deepcopy() now uses fast call X-Git-Tag: v3.6.0b1~637 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7fbac45287e13cf721f363614f699ffcfbcee2af;p=python _elementtree: deepcopy() now uses fast call Issue #27128. --- diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index b32f2ad283..5d124b3b42 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -819,9 +819,8 @@ LOCAL(PyObject *) deepcopy(PyObject *object, PyObject *memo) { /* do a deep copy of the given object */ - PyObject *args; - PyObject *result; elementtreestate *st; + PyObject *stack[2]; /* Fast paths */ if (object == Py_None || PyUnicode_CheckExact(object)) { @@ -857,12 +856,9 @@ deepcopy(PyObject *object, PyObject *memo) return NULL; } - args = PyTuple_Pack(2, object, memo); - if (!args) - return NULL; - result = PyObject_CallObject(st->deepcopy_obj, args); - Py_DECREF(args); - return result; + stack[0] = object; + stack[1] = memo; + return _PyObject_FastCall(st->deepcopy_obj, stack, 2, NULL); }