Skip to content
  • Damien George's avatar
    Remove mp_obj_type_t.methods entry and use .locals_dict instead. · 9b196cdd
    Damien George authored
    Originally, .methods was used for methods in a ROM class, and
    locals_dict for methods in a user-created class.  That distinction is
    unnecessary, and we can use locals_dict for ROM classes now that we have
    ROMable maps.
    
    This removes an entry in the bloated mp_obj_type_t struct, saving a word
    for each ROM object and each RAM object.  ROM objects that have a
    methods table (now a locals_dict) need an extra word in total (removed
    the methods pointer (1 word), no longer need the sentinel (2 words), but
    now need an mp_obj_dict_t wrapper (4 words)).  But RAM objects save a
    word because they never used the methods entry.
    
    Overall the ROM usage is down by a few hundred bytes, and RAM usage is
    down 1 word per user-defined type/class.
    
    There is less code (no need to check 2 tables), and now consistent with
    the way ROM modules have their tables initialised.
    
    Efficiency is very close to equivaluent.
    9b196cdd