mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +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
|
@ -479,7 +479,7 @@ initial_counter_value(void) {
|
|||
#define SPEC_FAIL_WRONG_NUMBER_ARGUMENTS 9
|
||||
#define SPEC_FAIL_CO_NOT_OPTIMIZED 10
|
||||
/* SPEC_FAIL_METHOD defined as 11 above */
|
||||
#define SPEC_FAIL_FREE_VARS 12
|
||||
|
||||
#define SPEC_FAIL_PYCFUNCTION 13
|
||||
#define SPEC_FAIL_PYCFUNCTION_WITH_KEYWORDS 14
|
||||
#define SPEC_FAIL_PYCFUNCTION_FAST_WITH_KEYWORDS 15
|
||||
|
@ -1158,9 +1158,6 @@ function_kind(PyCodeObject *code) {
|
|||
if ((flags & CO_OPTIMIZED) == 0) {
|
||||
return SPEC_FAIL_CO_NOT_OPTIMIZED;
|
||||
}
|
||||
if (code->co_nfreevars) {
|
||||
return SPEC_FAIL_FREE_VARS;
|
||||
}
|
||||
return SIMPLE_FUNCTION;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue