qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH qom-cpu for-2.0] cpu: Avoid QOM casts for CPU()


From: Andreas Färber
Subject: Re: [Qemu-devel] [PATCH qom-cpu for-2.0] cpu: Avoid QOM casts for CPU()
Date: Mon, 31 Mar 2014 19:16:13 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0

Am 28.03.2014 18:10, schrieb Andreas Färber:
> Am 28.03.2014 16:52, schrieb Peter Maydell:
>> On 28 March 2014 15:49, Andreas Färber <address@hidden> wrote:
>>> diff --git a/include/qom/cpu.h b/include/qom/cpu.h
>>> index f99885a..0aa1bdc 100644
>>> --- a/include/qom/cpu.h
>>> +++ b/include/qom/cpu.h
>>> @@ -53,7 +53,7 @@ typedef uint64_t vaddr;
>>>
>>>  #define TYPE_CPU "cpu"
>>>
>>> -#define CPU(obj) OBJECT_CHECK(CPUState, (obj), TYPE_CPU)
> 
> /* Avoid unnecessary penalties in hot paths by using an unchecked cast. */ ?

Based on a suggestion from Peter on IRC extending this to:

diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 0aa1bdc..df977c8 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -53,7 +53,12 @@ typedef uint64_t vaddr;

 #define TYPE_CPU "cpu"

+/* Since this macro is used a lot in hot code paths and in conjunction with
+ * FooCPU *foo_env_get_cpu(), we deviate from usual QOM practice by using
+ * an unchecked cast.
+ */
 #define CPU(obj) ((CPUState *)(obj))
+
 #define CPU_CLASS(class) OBJECT_CLASS_CHECK(CPUClass, (class), TYPE_CPU)
 #define CPU_GET_CLASS(obj) OBJECT_GET_CLASS(CPUClass, (obj), TYPE_CPU)


Thanks, applied to qom-cpu:
https://github.com/afaerber/qemu-cpu/commits/qom-cpu

Pull coming up shortly.

Regards,
Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



reply via email to

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