{{ message }}
GH-101291: Rearrange the size bits in PyLongObject#102464
Merged
markshannon merged 37 commits intoMar 22, 2023
Merged
Conversation
…Long_SignedDigitCount which might not be optimal, but is safe.
…ion of immortal ints and tagged medium ints.
52 hidden items
Load more…
gvanrossum
reviewed
Mar 17, 2023
gvanrossum
left a comment
Member
There was a problem hiding this comment.
As my flight might depart soon here's a first batch of review comments. Still to do longobject.c, and some modules.
Sorry, something went wrong.
1 hidden conversation
Load more…
lpereira
reviewed
Mar 21, 2023
gvanrossum
reviewed
Mar 21, 2023
gvanrossum
left a comment
Member
There was a problem hiding this comment.
Here's the rest. I went over every diff chunk in longobject.c. Let's get this merged...
Sorry, something went wrong.
5 hidden conversations
Load more…
gvanrossum
approved these changes
Mar 22, 2023
gvanrossum
left a comment
Member
There was a problem hiding this comment.
Go for it!
Sorry, something went wrong.
Fidget-Spinner
pushed a commit
to Fidget-Spinner/cpython
that referenced
this pull request
Mar 27, 2023
…2464) * Eliminate all remaining uses of Py_SIZE and Py_SET_SIZE on PyLongObject, adding asserts. * Change layout of size/sign bits in longobject to support future addition of immortal ints and tagged medium ints. * Add functions to hide some internals of long object, and for setting sign and digit count. * Replace uses of IS_MEDIUM_VALUE macro with _PyLong_IsCompact().
Contributor
What about this part? Looks like it was dropped on the floor along the way. |
Sorry, something went wrong.
warsaw
pushed a commit
to warsaw/cpython
that referenced
this pull request
Apr 11, 2023
…2464) * Eliminate all remaining uses of Py_SIZE and Py_SET_SIZE on PyLongObject, adding asserts. * Change layout of size/sign bits in longobject to support future addition of immortal ints and tagged medium ints. * Add functions to hide some internals of long object, and for setting sign and digit count. * Replace uses of IS_MEDIUM_VALUE macro with _PyLong_IsCompact().
verhovsky
reviewed
Apr 29, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.
This PR rearranges the bits in what was
ob_size, to slightly speedup the most common operations and to prepare for storing the tagged 2-complement value directly in a future PR.The new layout is as follows:
The bulk of the change is removing all the uses of
Py_SIZEandPy_SETSIZE, and replacing them with a new set of inline functions.It disturbs me how much we use unchecked casts, but that's a separate issue...
This will, inevitably, break Cython generated code again.
Performance measurement shows no significant change: https://github.com/faster-cpython/benchmarking/tree/main/results/bm-20230302-3.12.0a5%2B-ce6bfb2