diff options
author | Mark Shannon <mark@hotpy.org> | 2021-06-04 00:03:54 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-04 00:03:54 (GMT) |
commit | b2bf2bc1ece673d387341e06c8d3c2bc6e259747 (patch) | |
tree | 29217a2927ed27e71e6324876f279946219a25a9 /Objects/clinic | |
parent | 35002aa8f62dda1f79035e9904abdf476683e9be (diff) | |
download | cpython-b2bf2bc1ece673d387341e06c8d3c2bc6e259747.zip cpython-b2bf2bc1ece673d387341e06c8d3c2bc6e259747.tar.gz cpython-b2bf2bc1ece673d387341e06c8d3c2bc6e259747.tar.bz2 |
bpo-43693: Compute deref offsets in compiler (gh-25152)
Merges locals and cells into a single array.
Saves a pointer in the interpreter and means that we don't need the LOAD_CLOSURE opcode any more
https://bugs.python.org/issue43693
Diffstat (limited to 'Objects/clinic')
-rw-r--r-- | Objects/clinic/codeobject.c.h | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/Objects/clinic/codeobject.c.h b/Objects/clinic/codeobject.c.h index 629d265..c1ad09c 100644 --- a/Objects/clinic/codeobject.c.h +++ b/Objects/clinic/codeobject.c.h @@ -375,7 +375,7 @@ exit: } PyDoc_STRVAR(code__varname_from_oparg__doc__, -"_varname_from_oparg($self, /, oparg, *, cell=False)\n" +"_varname_from_oparg($self, /, oparg)\n" "--\n" "\n" "(internal-only) Return the local variable name for the given oparg.\n" @@ -386,18 +386,16 @@ PyDoc_STRVAR(code__varname_from_oparg__doc__, {"_varname_from_oparg", (PyCFunction)(void(*)(void))code__varname_from_oparg, METH_FASTCALL|METH_KEYWORDS, code__varname_from_oparg__doc__}, static PyObject * -code__varname_from_oparg_impl(PyCodeObject *self, int oparg, int cell); +code__varname_from_oparg_impl(PyCodeObject *self, int oparg); static PyObject * code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { PyObject *return_value = NULL; - static const char * const _keywords[] = {"oparg", "cell", NULL}; + static const char * const _keywords[] = {"oparg", NULL}; static _PyArg_Parser _parser = {NULL, _keywords, "_varname_from_oparg", 0}; - PyObject *argsbuf[2]; - Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; + PyObject *argsbuf[1]; int oparg; - int cell = 0; args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); if (!args) { @@ -407,17 +405,9 @@ code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t n if (oparg == -1 && PyErr_Occurred()) { goto exit; } - if (!noptargs) { - goto skip_optional_kwonly; - } - cell = PyObject_IsTrue(args[1]); - if (cell < 0) { - goto exit; - } -skip_optional_kwonly: - return_value = code__varname_from_oparg_impl(self, oparg, cell); + return_value = code__varname_from_oparg_impl(self, oparg); exit: return return_value; } -/*[clinic end generated code: output=43f4eef80d584fe0 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=ba4c5487e0364ce8 input=a9049054013a1b77]*/ |