[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/9] qom/user-creatable: add a few helper macros
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH 1/9] qom/user-creatable: add a few helper macros |
Date: |
Mon, 22 Oct 2018 15:33:30 +0100 |
On Wed, 12 Sep 2018 16:55:23 +0400
Marc-André Lureau <address@hidden> wrote:
> Improve a bit code readability.
>
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
> include/qom/object_interfaces.h | 4 ++++
> qom/object.c | 4 ++--
> qom/object_interfaces.c | 9 +++------
> 3 files changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h
> index 4d513fb329..46b0861457 100644
> --- a/include/qom/object_interfaces.h
> +++ b/include/qom/object_interfaces.h
> @@ -9,9 +9,13 @@
> #define USER_CREATABLE_CLASS(klass) \
> OBJECT_CLASS_CHECK(UserCreatableClass, (klass), \
> TYPE_USER_CREATABLE)
> +#define IS_USER_CREATABLE_CLASS(klass) \
> + object_class_dynamic_cast(OBJECT_CLASS(oc), TYPE_USER_CREATABLE)
> #define USER_CREATABLE_GET_CLASS(obj) \
> OBJECT_GET_CLASS(UserCreatableClass, (obj), \
> TYPE_USER_CREATABLE)
> +#define IS_USER_CREATABLE(obj) \
> + object_dynamic_cast(OBJECT(obj), TYPE_USER_CREATABLE)
> #define USER_CREATABLE(obj) \
> INTERFACE_CHECK(UserCreatable, (obj), \
> TYPE_USER_CREATABLE)
> diff --git a/qom/object.c b/qom/object.c
> index 75d1d48944..0703e8e4ff 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -424,7 +424,7 @@ void object_initialize_childv(Object *parentobj, const
> char *propname,
> goto out;
> }
>
> - if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) {
> + if (IS_USER_CREATABLE(obj)) {
> user_creatable_complete(obj, &local_err);
> if (local_err) {
> object_unparent(obj);
> @@ -605,7 +605,7 @@ Object *object_new_with_propv(const char *typename,
> goto error;
> }
>
> - if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) {
> + if (IS_USER_CREATABLE(obj)) {
> user_creatable_complete(obj, &local_err);
> if (local_err) {
> object_unparent(obj);
> diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
> index 72b97a8bed..e3084bc04a 100644
> --- a/qom/object_interfaces.c
> +++ b/qom/object_interfaces.c
> @@ -10,18 +10,15 @@
>
> void user_creatable_complete(Object *obj, Error **errp)
> {
> -
> UserCreatableClass *ucc;
> - UserCreatable *uc =
> - (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE);
>
> - if (!uc) {
> + if (!IS_USER_CREATABLE(obj)) {
> return;
> }
>
> - ucc = USER_CREATABLE_GET_CLASS(uc);
> + ucc = USER_CREATABLE_GET_CLASS(obj);
> if (ucc->complete) {
> - ucc->complete(uc, errp);
> + ucc->complete(USER_CREATABLE(obj), errp);
^^^
even though function becomes more concise,
this will call expensive dynamic cast 2nd time (IS_USER_CREATABLE was the 1st
and discarded)
so I'm not sure is a good idea to regress startup time for readability.
> }
> }
>
- Re: [Qemu-devel] [PATCH 1/9] qom/user-creatable: add a few helper macros,
Igor Mammedov <=