All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: "Andreas Färber" <afaerber@suse.de>, qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, "open list:PowerPC" <qemu-ppc@nongnu.org>,
	Alexander Graf <agraf@suse.de>,
	aurelien@aurel32.net
Subject: Re: [Qemu-devel] [PATCH for-1.5?] target-ppc: Drop unnecessary dynamic cast in ppc_env_get_cpu()
Date: Fri, 10 May 2013 10:06:03 -0500	[thread overview]
Message-ID: <87obcizxgk.fsf@codemonkey.ws> (raw)
In-Reply-To: <1368196799-19982-1-git-send-email-afaerber@suse.de>

Andreas Färber <afaerber@suse.de> writes:

> A transition from CPUPPCState to PowerPCCPU can be considered safe,
> just like PowerPCCPU::env access in the opposite direction.
>
> This should slightly improve interrupt performance.
>
> Reported-by: Anthony Liguori <aliguori@us.ibm.com>
> Signed-off-by: Andreas Färber <afaerber@suse.de>

Another option would be to leave it and do something like:

diff --git a/qom/object.c b/qom/object.c
index 75e6aac..cba1d88 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -126,8 +126,13 @@ static TypeImpl *type_register_internal(const TypeInfo *info)
 
 TypeImpl *type_register(const TypeInfo *info)
 {
+    TypeImpl *impl;
+
     assert(info->parent);
-    return type_register_internal(info);
+    impl = type_register_internal(info);
+    g_free(impl->name);
+    impl->name = info->name;
+    return impl;
 }
 
 TypeImpl *type_register_static(const TypeInfo *info)
@@ -449,10 +490,16 @@ Object *object_dynamic_cast_assert(Object *obj, const char *typename)
 ObjectClass *object_class_dynamic_cast(ObjectClass *class,
                                        const char *typename)
 {
-    TypeImpl *target_type = type_get_by_name(typename);
+    TypeImpl *target_type;
     TypeImpl *type = class->type;
     ObjectClass *ret = NULL;
 
+    if (type->name == typename) {
+        return class;
+    }
+
+    target_type = type_get_by_name(typename);
+
     if (!target_type) {
         /* target class type unknown, so fail the cast */
         return NULL;

Which makes casting an object to it's concrete class free.

Regards,

Anthony Liguori

> ---
>  target-ppc/cpu-qom.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target-ppc/cpu-qom.h b/target-ppc/cpu-qom.h
> index eb03a00..f62181f 100644
> --- a/target-ppc/cpu-qom.h
> +++ b/target-ppc/cpu-qom.h
> @@ -91,7 +91,7 @@ typedef struct PowerPCCPU {
>  
>  static inline PowerPCCPU *ppc_env_get_cpu(CPUPPCState *env)
>  {
> -    return POWERPC_CPU(container_of(env, PowerPCCPU, env));
> +    return container_of(env, PowerPCCPU, env);
>  }
>  
>  #define ENV_GET_CPU(e) CPU(ppc_env_get_cpu(e))
> -- 
> 1.8.1.4

  parent reply	other threads:[~2013-05-10 15:06 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-10 14:39 [Qemu-devel] [PATCH for-1.5?] target-ppc: Drop unnecessary dynamic cast in ppc_env_get_cpu() Andreas Färber
2013-05-10 14:42 ` Peter Maydell
2013-05-10 14:47   ` Andreas Färber
2013-05-10 15:07     ` Paolo Bonzini
2013-05-10 15:02   ` Anthony Liguori
2013-05-10 15:06 ` Anthony Liguori [this message]
2013-05-10 15:08   ` Paolo Bonzini
2013-05-10 15:54   ` Andreas Färber
     [not found]   ` <518D10E3.4080001@suse.de>
     [not found]     ` <14CF0363-E558-4387-A401-14C940131BDB@suse.de>
2013-05-10 16:14       ` Andreas Färber
2013-05-10 16:20         ` Peter Maydell
2013-05-10 16:40           ` Andreas Färber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87obcizxgk.fsf@codemonkey.ws \
    --to=aliguori@us.ibm.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=aurelien@aurel32.net \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.