• Damien George's avatar
    py: Optimise types for common case where type has a single parent type. · 816413e4
    Damien George authored
    The common cases for inheritance are 0 or 1 parent types, for both built-in
    types (eg built-in exceptions) as well as user defined types.  So it makes
    sense to optimise the case of 1 parent type by storing just the type and
    not a tuple of 1 value (that value being the single parent type).
    This patch makes such an optimisation.  Even though there is a bit more
    code to handle the two cases (either a single type or a tuple with 2 or
    more values) it helps reduce overall code size because it eliminates the
    need to create a static tuple to hold single parents (eg for the built-in
    exceptions).  It also helps reduce RAM usage for user defined types that
    only derive from a single parent.
    Changes in code size (in bytes) due to this patch:
        bare-arm:       -16
        minimal (x86): -176
        unix (x86-64): -320
        unix nanbox:   -384
        stmhal:         -64
        cc3200:         -32
        esp8266:       -108