From 135cabd328504e1648d17242b42b675cdbd0193b Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Tue, 23 Nov 2021 09:53:24 +0000 Subject: 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. --- Python/frame.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'Python/frame.c') diff --git a/Python/frame.c b/Python/frame.c index a5c93eaaa5..79b0f77a06 100644 --- a/Python/frame.c +++ b/Python/frame.c @@ -8,9 +8,8 @@ int _PyFrame_Traverse(InterpreterFrame *frame, visitproc visit, void *arg) { Py_VISIT(frame->frame_obj); - Py_VISIT(frame->f_globals); - Py_VISIT(frame->f_builtins); Py_VISIT(frame->f_locals); + Py_VISIT(frame->f_func); Py_VISIT(frame->f_code); /* locals */ PyObject **locals = _PyFrame_GetLocalsArray(frame); @@ -62,8 +61,7 @@ clear_specials(InterpreterFrame *frame) frame->generator = NULL; Py_XDECREF(frame->frame_obj); Py_XDECREF(frame->f_locals); - Py_DECREF(frame->f_globals); - Py_DECREF(frame->f_builtins); + Py_DECREF(frame->f_func); Py_DECREF(frame->f_code); } -- cgit v1.2.1