mirror of
https://github.com/python/cpython.git
synced 2025-10-21 06:02:21 +00:00
bpo-44525: Copy free variables in bytecode to allow calls to inner functions to be specialized (GH-29595)
* Make internal APIs that take PyFrameConstructor take a PyFunctionObject instead. * Add reference to function to frame, borrow references to builtins and globals. * Add COPY_FREE_VARS instruction to allow specialization of calls to inner functions.
This commit is contained in:
parent
d82f2caf94
commit
135cabd328
25 changed files with 268 additions and 156 deletions
|
@ -212,9 +212,8 @@ builtin___build_class__(PyObject *self, PyObject *const *args, Py_ssize_t nargs,
|
|||
Py_TYPE(ns)->tp_name);
|
||||
goto error;
|
||||
}
|
||||
PyFrameConstructor *f = PyFunction_AS_FRAME_CONSTRUCTOR(func);
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
cell = _PyEval_Vector(tstate, f, ns, NULL, 0, NULL);
|
||||
cell = _PyEval_Vector(tstate, (PyFunctionObject *)func, ns, NULL, 0, NULL);
|
||||
if (cell != NULL) {
|
||||
if (bases != orig_bases) {
|
||||
if (PyMapping_SetItemString(ns, "__orig_bases__", orig_bases) < 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue