qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC 0/4] QOM class properties - do we need them?


From: Daniel P. Berrange
Subject: Re: [Qemu-devel] [RFC 0/4] QOM class properties - do we need them?
Date: Fri, 30 Sep 2016 09:06:12 +0100
User-agent: Mutt/1.7.0 (2016-08-17)

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/ :|



reply via email to

[Prev in Thread] Current Thread [Next in Thread]