• A
    cpu: Avoid QOM casts for CPU() · 0d6d1ab4
    Andreas Färber 提交于
    CPU address spaces touching load and store helpers as well as the
    movement of (almost) all fields from CPU_COMMON to CPUState have led to
    a noticeable increase of CPU() usage in "hot" paths for both TCG and KVM.
    
    While CPU()'s OBJECT_CHECK() might help detect development errors, i.e.
    in form of crashes due to QOM vs. non-QOM mismatches rather than QOM
    type mismatches, it is not really needed at runtime since mostly used in
    CPU-specific paths, coming from a target-specific CPU subtype. If that
    pointer is damaged, other errors are highly likely to occur elsewhere
    anyway.
    
    Keep the CPU() macro for a consistent developer experience and for
    flexibility to exchange its implementation, but turn it into a pure,
    unchecked C cast for now.
    
    Compare commit 6e42be7c.
    Reported-by: NLaurent Desnogues <laurent.desnogues@gmail.com>
    Suggested-by: NPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: NAndreas Färber <afaerber@suse.de>
    0d6d1ab4
cpu.h 19.3 KB