On 09.03.20 15:40, Christian Borntraeger wrote:
> 
> 
> On 09.03.20 14:37, David Hildenbrand wrote:
> 
>>>  
>>> +#if !defined(CONFIG_USER_ONLY)
>>> +static bool machine_is_pv(MachineState *ms)
>>> +{
>>> +    Object *obj;
>>> +
>>> +    /* we have to bail out for the "none" machine */
>>> +    obj = object_dynamic_cast(OBJECT(ms), TYPE_S390_CCW_MACHINE);
>>> +     if (!obj) {
>>> +        return false;
>>> +    }
>>> +    return S390_CCW_MACHINE(obj)->pv;
>>
>> Maybe you want to cache the machine, so you can avoid the
>> lookup+conversion on every new CPU.
>>
> 
> something like the following?
> 
> 
> diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
> index c513f8efe0..cd12c29b9a 100644
> --- a/target/s390x/cpu.c
> +++ b/target/s390x/cpu.c
> @@ -185,13 +185,18 @@ static void s390_cpu_disas_set_info(CPUState *cpu, 
> disassemble_info *info)
>  static bool machine_is_pv(MachineState *ms)
>  {
>      Object *obj;
> +    static S390CcwMachineState *ccw;
> +

Move this up please (reverse christmas tree ;) )

> +    if (ccw)
> +           return ccw->pv;
>  
>      /* we have to bail out for the "none" machine */
>      obj = object_dynamic_cast(OBJECT(ms), TYPE_S390_CCW_MACHINE);
>       if (!obj) {
>          return false;
>      }
> -    return S390_CCW_MACHINE(obj)->pv;
> +    ccw = S390_CCW_MACHINE(obj);
> +    return ccw->pv;
>  }
>  #endif

Yeah, guess this makes sense.

-- 
Thanks,

David / dhildenb


Reply via email to