On 3/12/21 6:04 PM, Paolo Bonzini wrote:
> On 12/03/21 14:40, Claudio Fontana wrote:
>>      /*
>>       * double dispatch. The first callback allows the accel cpu
>>       * to run initializations for the CPU,
>>       * the second one allows the CPU to customize the accel cpu
>>       * behavior according to the CPU.
>>       *
>>       * The second is currently only used by TCG, to specialize the
>>       * TCGCPUOps depending on the CPU type.
>>       */
>>      cc->accel_cpu = accel_cpu;
>>      if (accel_cpu->cpu_class_init) {
>>          accel_cpu->cpu_class_init(cc);
>>      }
>>      if (cc->init_accel_cpu) {
>>          cc->init_accel_cpu(accel_cpu, cc);
>>      }
>> }
>>
>> .. but maybe this is premature, and should wait for actual users of this 
>> beyond TCG on ARM?
> 
> I prefer to single out TCG and have the call in cpu_class_init.  The 
> idea of double dispatch (as opposed to an if/else chain with checks on 
> the class of the argument) is that the first caller uses different 
> "method names" to tell its type name to the target.
> 
> See for example 
> https://en.wikipedia.org/wiki/Double_dispatch#Example_in_Ruby.
> 
> Paolo
> 

Ah, just saw this. I already sent the series, but we can rework and rethink 
this.

Ciao, thanks,

Claudio

Reply via email to