Skip to content
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

gh-124153: Implement PyType_GetBaseByToken() and Py_tp_token slot #124163

Merged
merged 10 commits into from
Sep 18, 2024
Merged

gh-124153: Implement PyType_GetBaseByToken() and Py_tp_token slot #124163

merged 10 commits into from
Sep 18, 2024

Conversation

neonene
Copy link
Contributor

@neonene neonene commented Sep 17, 2024

@neonene
Copy link
Contributor Author

neonene commented Sep 17, 2024

I'll check this and PoC version again.

Copy link
Member

@encukou encukou left a comment

Choose a reason for hiding this comment

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

Looks great, thank you!
I have just one style suggestion. But if you'd like to keep it we can merge the PR as it is.

return -1;
}

if (!_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) {
Copy link
Contributor Author

@neonene neonene Sep 17, 2024

Choose a reason for hiding this comment

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

When I observed a good performance, the line had a typo (missing a NOT), though check_base_by_token() was unused during a PGO test. The telco got slower by 5-10% once I corrected, which was actually fixed by one of the following:

  • Use if-else statement

  • Replace _PyType_HasFeature() with the public PyType_HasFeature(), not with ineffective (type->tp_flags & Py_TPFLAGS_HEAPTYPE)

They are not used in PyType_GetBaseByToken().

This chains the branches in PyType_GetBaseByToken() as well, which is effective when MSVC is in better condition on PGO.
@neonene
Copy link
Contributor Author

neonene commented Sep 18, 2024

I think I've finished. When checking a type without a result, this may be a bit slower than the draft PR, not trained well for now.

@encukou encukou merged commit 646f16b into python:main Sep 18, 2024
37 checks passed
@neonene neonene deleted the tp_token branch September 18, 2024 15:02
savannahostrowski pushed a commit to savannahostrowski/cpython that referenced this pull request Sep 22, 2024
Sign up for free to 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.

2 participants