Skip to content
  • Damien George's avatar
    py: Store bytecode arg names in bytecode (were in own array). · 1084b0f9
    Damien George authored
    This saves a lot of RAM for 2 reasons:
    1. For functions that don't have default values, var args or var kw
    args (which is a large number of functions in the general case), the
    mp_obj_fun_bc_t type now fits in 1 GC block (previously needed 2 because
    of the extra pointer to point to the arg_names array).  So this saves 16
    bytes per function (32 bytes on 64-bit machines).
    2. Combining separate memory regions generally saves RAM because the
    unused bytes at the end of the GC block are saved for 1 of the blocks
    (since that block doesn't exist on its own anymore).  So generally this
    saves 8 bytes per function.
    Tested by importing lots of modules:
    - 64-bit Linux gave about an 8% RAM saving for 86k of used RAM.
    - pyboard gave about a 6% RAM saving for 31k of used RAM.