Skip to content

Close padding hole in op_multiparam_named_aux struct#24174

Open
richardleach wants to merge 1 commit intoPerl:bleadfrom
richardleach:op_multiparam_named_aux-4bytehole
Open

Close padding hole in op_multiparam_named_aux struct#24174
richardleach wants to merge 1 commit intoPerl:bleadfrom
richardleach:op_multiparam_named_aux-4bytehole

Conversation

@richardleach
Copy link
Contributor

The pahole tool, on AMD64, shows that this commit converts:

struct op_multiparam_named_aux {
        const char  *              namepv;               /*     0     8 */
        STRLEN                     namelen;              /*     8     8 */
        U32                        namehash;             /*    16     4 */

        /* XXX 4 bytes hole, try to pack */

        PADOFFSET                  padix;                /*    24     8 */
        _Bool                      is_required:1;        /*    32: 0  1 */

        /* size: 40, cachelines: 1, members: 5 */
        /* sum members: 28, holes: 1, sum holes: 4 */
        /* sum bitfield members: 1 bits (0 bytes) */
        /* padding: 7 */
        /* bit_padding: 7 bits */
        /* last cacheline: 40 bytes */
};

to

struct op_multiparam_named_aux {
        PADOFFSET                  padix;                /*     0     8 */
        const char  *              namepv;               /*     8     8 */
        STRLEN                     namelen;              /*    16     8 */
        U32                        namehash;             /*    24     4 */
        _Bool                      is_required:1;        /*    28: 0  1 */

        /* size: 32, cachelines: 1, members: 5 */
        /* padding: 3 */
        /* bit_padding: 7 bits */
        /* last cacheline: 32 bytes */
};

  • This set of changes does not require a perldelta entry.

The _pahole_ tool, on AMD64, shows that this commit converts:
```
struct op_multiparam_named_aux {
        const char  *              namepv;               /*     0     8 */
        STRLEN                     namelen;              /*     8     8 */
        U32                        namehash;             /*    16     4 */

        /* XXX 4 bytes hole, try to pack */

        PADOFFSET                  padix;                /*    24     8 */
        _Bool                      is_required:1;        /*    32: 0  1 */

        /* size: 40, cachelines: 1, members: 5 */
        /* sum members: 28, holes: 1, sum holes: 4 */
        /* sum bitfield members: 1 bits (0 bytes) */
        /* padding: 7 */
        /* bit_padding: 7 bits */
        /* last cacheline: 40 bytes */
};
```

to

```
struct op_multiparam_named_aux {
        PADOFFSET                  padix;                /*     0     8 */
        const char  *              namepv;               /*     8     8 */
        STRLEN                     namelen;              /*    16     8 */
        U32                        namehash;             /*    24     4 */
        _Bool                      is_required:1;        /*    28: 0  1 */

        /* size: 32, cachelines: 1, members: 5 */
        /* padding: 3 */
        /* bit_padding: 7 bits */
        /* last cacheline: 32 bytes */
};
```
@richardleach richardleach requested a review from leonerd February 7, 2026 17:07
@leonerd leonerd self-assigned this Feb 7, 2026
Copy link
Contributor

@leonerd leonerd left a comment

Choose a reason for hiding this comment

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

LGTM

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