From: Jeroen Demeyer Date: Wed, 3 Jul 2019 10:52:21 +0000 (+0200) Subject: bpo-37484: use _PyObject_Vectorcall for __exit__ (GH-14557) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=469d1a70cecc918499c288fc0e5e3d79711bc5e5;p=python bpo-37484: use _PyObject_Vectorcall for __exit__ (GH-14557) --- diff --git a/Python/ceval.c b/Python/ceval.c index 5d29d41cf8..888749b699 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3314,7 +3314,6 @@ main_loop: Finally we push the result of the call. */ - PyObject *stack[3]; PyObject *exit_func; PyObject *exc, *val, *tb, *res; @@ -3351,10 +3350,9 @@ main_loop: block->b_level--; } - stack[0] = exc; - stack[1] = val; - stack[2] = tb; - res = _PyObject_FastCall(exit_func, stack, 3); + PyObject *stack[4] = {NULL, exc, val, tb}; + res = _PyObject_Vectorcall(exit_func, stack + 1, + 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); Py_DECREF(exit_func); if (res == NULL) goto error;