[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v11 10/24] qapi: Unbox base members
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v11 10/24] qapi: Unbox base members |
Date: |
Tue, 27 Oct 2015 08:20:58 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
On 10/27/2015 01:52 AM, Markus Armbruster wrote:
> Eric Blake <address@hidden> writes:
>
>> Rather than storing a base class as a pointer to a box, just
>> store the fields of that base class in the same order, so that
>> a child struct can be directly cast to its parent. This gives
>> less malloc overhead, less pointer dereferencing, and even less
>> generated code. Compare to the earlier commit 1e6c1616a "qapi:
>> Generate a nicer struct for flat unions" (although that patch
>> had fewer places to change, as less of qemu was directly using
>> qapi structs for flat unions). It also allows us to turn on
>> automatic type-safe wrappers for upcasting to the base class
>> of a struct.
>>
>> Changes to the generated code look like this in qapi-types.h:
>>
>> | struct SpiceChannel {
>> |- SpiceBasicInfo *base;
>> |+ /* Members inherited from SpiceBasicInfo: */
>> |+ char *host;
>> |+ char *port;
>> |+ NetworkAddressFamily family;
>> |+ /* Own members: */
>> | int64_t connection_id;
>>
>> as well as added upcast functions like qapi_SpiceChannel_base().
>
> "additional upcast functions" sounds better to my ears.
Indeed.
>
> Patch looks good. I can touch up the commit message in my tree.
Yay - looks like we won't need a v12.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v11 00/24] qapi collision reduction (post-introspection subset B'), Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 04/24] qapi: Reserve '*List' type names for list types, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 07/24] qapi-visit: Split off visit_type_FOO_fields forward decl, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 01/24] tests/qapi-schema: Test for reserved names, empty struct, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 05/24] qapi: Reserve 'q_*' and 'has_*' member names, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 11/24] qapi-visit: Remove redundant functions for flat union base, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 12/24] qapi: Start converting to new qapi union layout, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 13/24] qapi-visit: Convert to new qapi union layout, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 10/24] qapi: Unbox base members, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 14/24] tests: Convert to new qapi union layout, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 08/24] qapi-types: Refactor base fields output, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 09/24] qapi: Prefer typesafe upcasts to qapi base classes, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 24/24] qapi: Simplify gen_struct_field(), Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 21/24] tpm: Convert to new qapi union layout, Eric Blake, 2015/10/26
- [Qemu-devel] [PATCH v11 22/24] qapi: Finish converting to new qapi union layout, Eric Blake, 2015/10/26