Skip to content

gh-127274: Defer nested methods - #128012

Merged
mpage merged 5 commits into
python:mainfrom
mpage:gh-127274-method-flag
Dec 19, 2024
Merged

gh-127274: Defer nested methods#128012
mpage merged 5 commits into
python:mainfrom
mpage:gh-127274-method-flag

Conversation

@mpage

@mpagempage commented Dec 17, 2024

Copy link
Copy Markdown
Contributor

Methods (functions defined in class scope) are likely to be cleaned up by the GC anyway, so deferring nested methods will not prolong their lifetime.

Add a new code flag, CO_METHOD, that is set for functions defined in a class scope. Use that when deciding to defer functions.

Methods (functions defined in class scope) are likely to be cleaned
up by the GC anyway.
Add a new code flag, `CO_METHOD`, that is set for functions defined
in a class scope. Use that when deciding to defer functions.

@colesburycolesbury left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment threadInclude/cpython/code.h
@JelleZijlstra

Copy link
Copy Markdown
Member

The other CO_* constants are documented and exposed in the inspect module (e.g. https://docs.python.org/3.14/library/inspect.html#inspect.CO_HAS_DOCSTRING); we'll have to do that for this one too.

@mpage

Copy link
Copy Markdown
ContributorAuthor

The other CO_* constants are documented and exposed in the inspect module

Should that be done for CO_NO_MONITORING_EVENTS as well (in a separate PR)?

@JelleZijlstra

Copy link
Copy Markdown
Member

Should that be done for CO_NO_MONITORING_EVENTS as well (in a separate PR)?

Wasn't aware of that flag, but if we also added that one recently, then yes.

@mpage

Copy link
Copy Markdown
ContributorAuthor

MacOS-13 build failure looks like an issue with homebrew that is unrelated to this PR.

@mpage

Copy link
Copy Markdown
ContributorAuthor

@JelleZijlstra - would you please have another look?

@JelleZijlstraJelleZijlstra left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.

Could also add tests that look directly at the flags of a code object, but flags are documented as internal and an implementation detail and CO_HAS_DOCSTRINGS doesn't have tests either, so I think it's fine not to test this.

@mpage
mpage merged commit 255762c into python:mainDec 19, 2024
@mpage
mpage deleted the gh-127274-method-flag branch December 19, 2024 21:03
srinivasreddy pushed a commit to srinivasreddy/cpython that referenced this pull request Dec 23, 2024
Methods (functions defined in class scope) are likely to be cleaned
up by the GC anyway.
Add a new code flag, `CO_METHOD`, that is set for functions defined
in a class scope. Use that when deciding to defer functions.
srinivasreddy pushed a commit to srinivasreddy/cpython that referenced this pull request Jan 8, 2025
Methods (functions defined in class scope) are likely to be cleaned
up by the GC anyway.
Add a new code flag, `CO_METHOD`, that is set for functions defined
in a class scope. Use that when deciding to defer functions.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@mpage@JelleZijlstra@colesbury