Feature or enhancement
Proposal:
We currently only defer functions that do not have the CO_NESTED flag set:
| if ((code_obj->co_flags&CO_NESTED) ==0) { |
| // Use deferred reference counting for top-level functions, but not |
| // nested functions because they are more likely to capture variables, |
| // which makes prompt deallocation more important. |
| _PyObject_SetDeferredRefcount((PyObject*)op); |
| } |
This also excludes functions defined on nested classes. In the example below, the Foo.__init__ function will not use deferred reference counting because the __init__ method's code object has the CO_NESTED flag set.
deffunc():
classFoo:
def__init__(self):
pass
We would like to relax the restriction on CO_NESTED to allow functions that are defined on nested classes to use deferred reference counting.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
Feature or enhancement
Proposal:
We currently only defer functions that do not have the
CO_NESTEDflag set:cpython/Objects/funcobject.c
Lines 213 to 218 in 26ff32b
This also excludes functions defined on nested classes. In the example below, the
Foo.__init__function will not use deferred reference counting because the__init__method's code object has theCO_NESTEDflag set.We would like to relax the restriction on
CO_NESTEDto allow functions that are defined on nested classes to use deferred reference counting.Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs