Micro optimizations welcome?

Ursache Vladimir f35f22fan at gmail.com
Sun Sep 18 01:23:45 UTC 2016


 I didn't try an ABI check (ever), I just spotted the padding while
browsing the source code out of curiosity.

As to struct protocol_error (from inside struct wl_display) I moved
the "id" field to avoid compiler padding:

from:
uint32_t
pointer
uint32_t

to:
uint32_t
uint32_t
pointer



On Sun, Sep 18, 2016 at 4:03 AM, Yong Bakos <junk at humanoriented.com> wrote:
> On Sep 17, 2016, at 5:42 PM, Ursache Vladimir <f35f22fan at gmail.com> wrote:
>>
>> Hi,
>> On amd64 struct wl_display from wayland-client.c can shrink in size
>> from 320 bytes to 304 if two fields (last_error and id) are
>> rearranged. Compiles fine.
>
> I believe you mean last_error and protocol_error.
> This will change the ABI (did you try an ABI check?) and we can't do
> that at this time.
>
> yong
>
>
>
>> End result looks like this:
>>
>> struct wl_display {
>>    struct wl_proxy proxy;
>>    struct wl_connection *connection;
>>
>>    /* When display gets an error event from some object, it stores
>>     * information about it here, so that client can get this
>>     * information afterwards */
>>    struct {
>>        /* Code of the error. It can be compared to
>>         * the interface's errors enumeration. */
>>        uint32_t code;
>>        /* id of the proxy that caused the error. There's no warranty
>>         * that the proxy is still valid. It's up to client how it will
>>         * use it */
>>        uint32_t id;
>>        /* interface (protocol) in which the error occurred */
>>        const struct wl_interface *interface;
>>    } protocol_error;
>>    /* errno of the last wl_display error */
>>    int last_error;
>>    int fd;
>>    struct wl_map objects;
>>    struct wl_event_queue display_queue;
>>    struct wl_event_queue default_queue;
>>    pthread_mutex_t mutex;
>>
>>    int reader_count;
>>    uint32_t read_serial;
>>    pthread_cond_t reader_cond;
>> };
>> _______________________________________________
>> wayland-devel mailing list
>> wayland-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/wayland-devel
>


More information about the wayland-devel mailing list