bpo-27987: align PyGC_Head to alignof(long double) explicitly by methane · Pull Request #13336 · python/cpython
PyGC_Head consists two uintptr_t variables so it is aligned to 16 byte
on amd64 platform already.
This commit makes this alignment more explicit, although make code
bit ugly.
| // Lowest two bits are used for flags documented later. | ||
| uintptr_t prev; | ||
| } _gc; | ||
| long double _dummy; /* for worst alignment */ |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you please elaborate the comment? Add "bpo-27987" and explain that x64-64 ABI requires to align on 16 bytes.
Do you have to align to 16 bytes on x86 (32-bit) as well?
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh! I forgot about 32bit platform.
I thought this PR does nothing, but it makes PyGC_Head to 16 bytes from 8 bytes on x86 platform.
Maybe, we can use __attribute__ ((aligned)) if compiler is GCC or clang.
This commit makes this alignment more explicit, although make code bit ugly.
Said differently, it doesn't change PyGC_Head size on 64-bit system, right? Does it change the size on 32-bit system?
Correctness matters more than code beauty here ;-)