-
-
Notifications
You must be signed in to change notification settings - Fork 31.6k
bpo-42917: Made block stack for frame objects dynamically sizable #24204
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Hello, and thanks for your contribution! I'm a bot set up to make sure that the project can legally accept this contribution by verifying everyone involved has signed the PSF contributor agreement (CLA). Recognized GitHub usernameWe couldn't find a bugs.python.org (b.p.o) account corresponding to the following GitHub usernames: This might be simply due to a missing "GitHub Name" entry in one's b.p.o account settings. This is necessary for legal reasons before we can look at this contribution. Please follow the steps outlined in the CPython devguide to rectify this issue. You can check yourself to see if the CLA has been received. Thanks again for the contribution, we look forward to reviewing it! |
6c641a1
to
496c869
Compare
It looks like this PR includes a fix for block handling for Could you put that fix in a separate PR? Thanks. |
This PR is stale because it has been open for 30 days with no activity. |
@tomKPZ any progress on this? |
Sorry for the late response. ASYNC_COMPREHENSION_GENERATOR PR uploaded: #24865 Are there any changes I need to make on this PR (besides rebasing)? It would be nice to know if it will be merged or not. |
This removes the hardcoded block stack size of 20 since typical functions have far less than 20 nested blocks. When running an empty program, 256 frame objects get created with an old average size of 420.281 bytes. This change reduces the average size to less than half: 197.000 bytes on x86_64. The goal is not necessarily to reduce memory usage, but to make it more likely for stack frames to stay in L1 cache. In addition, the maximum of 20 blocks is removed. This should make it easier to write code generators that produce deeply nested code.
This is now obsolete. There is no block stack: #25729 |
This removes the hardcoded block stack size of 20 since typical
functions have far less than 20 nested blocks. When running an empty
program, 256 frame objects get created with an old average size of
420.281 bytes. This change reduces the average size to less than
half: 197.000 bytes on x86_64. The goal is not necessarily to reduce
memory usage, but to make it more likely for stack frames to stay in
L1 cache.
In addition, the maximum of 20 blocks is removed. This should make it
easier to write code generators that produce deeply nested code.
https://bugs.python.org/issue42917