From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49656) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bpsps-0003cp-G7 for qemu-devel@nongnu.org; Fri, 30 Sep 2016 04:06:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bpspp-0006WL-8p for qemu-devel@nongnu.org; Fri, 30 Sep 2016 04:06:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50232) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bpspo-0006WB-Vg for qemu-devel@nongnu.org; Fri, 30 Sep 2016 04:06:21 -0400 Date: Fri, 30 Sep 2016 09:06:12 +0100 From: "Daniel P. Berrange" Message-ID: <20160930080612.GA17928@redhat.com> Reply-To: "Daniel P. Berrange" References: <1475108205-6043-1-git-send-email-david@gibson.dropbear.id.au> <20160929081416.GD5312@redhat.com> <20160929233320.GJ30519@umbus.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20160929233320.GJ30519@umbus.fritz.box> Subject: Re: [Qemu-devel] [RFC 0/4] QOM class properties - do we need them? List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Gibson Cc: afaerber@suse.de, peter.maydell@linaro.org, qemu-devel@nongnu.org, pbonzini@redhat.com, armbru@redhat.com, lcapitulino@redhat.com On Fri, Sep 30, 2016 at 09:33:20AM +1000, David Gibson wrote: > On Thu, Sep 29, 2016 at 09:14:16AM +0100, Daniel P. Berrange wrote: > > On Thu, Sep 29, 2016 at 10:16:41AM +1000, David Gibson wrote: > > > QOM has the concept of both "object class" properties and "object > > > instance" properties. > > > > > > The accessor functions installed for the rarely-used class properties > > > still take an Object *, so the *value* of such properties is still > > > per-instance; it's just the *existence* (and type) of the property > > > that is per-class. > > > > Yes, of course. This is the whole point of class properties. It avoids > > allocating the same ObjectProperty struct against every object instance > > which wastes massive amounts of memory in scenarios where there are lots > > of instances created. > > Ah, that makes sense. > > > > Of course, that's also true in practice for the great majority of > > > "instance" properties, because they're created identically and > > > unconditionally for every instance from the per-class instance_init > > > hook. > > > > > > This also means that the (unused) object_class_property_add_*_ptr() > > > functions don't make a lot of sense, since they require a fixed > > > pointer which means the value of such a property would only be > > > per-class. > > > > > > Given that, is there really any value to supporting the "class" > > > properties in addition to the "instance" properties? This series is > > > an RFC which removes all support for class properties, changing the > > > few existing users to instance properties instead. > > > > > > Alternatively, if we *don't* want to remove class properties, should > > > we instead be trying to convert the many, many "instance" properties > > > whose existence is actually per-class to be class properties? > > > > Practically all instances properties should become class properties > > as its going to save wasting memory once most are converted. > > Heh, ok. Well, I'll keep that in mind when I'm adding properties in > future. I wonder if there's a way we can better get the word out that > this is how properties should usually be done. > > That said.. I'm still thinking we should remove > object_class_property_add_*_ptr(). Those take an actual pointer to > the value, meaning that it can't have different values per-instance. > These only create read-only properties, so they're not actually > dangerous, but they really don't seem very useful. Yeah, that method seems dubious - my mistake in just copying all the existing property methods. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://entangle-photo.org -o- http://search.cpan.org/~danberr/ :|