Replace %CODE-ENTRY-POINTS with an array, remove %SIMPLE-FUN-NEXT.
Rather than storing simple-funs as a linked list, code objects
hold all the relative addresses of embedded functions at the
beginning of the unboxed data, which has many advantages:
- C code is simpler and abstracted better.
- Function entry points are aligned to one more bit, because
'struct simple_fun' is an even number of words now.
- On 64-bit architectures, code objects with only 1 simple fun are
2 words shorter; and in all cases it is a strict size decrease.
On 32-bit it is not a size improvement, but usually not worse;
sometimes there is an additional padding word.
- There are fewer fixups to perform in trans_code()
since entry points are stored as relative offsets.
%CODE-ENTRY-POINTS and %SIMPLE-FUN-NEXT still work, but
should not be used. Instead use (%CODE-ENTRY-POINT CODE N) to get
the Nth function, and (CODE-N-ENTRIES CODE) for the count.
In particular %SIMPLE-FUN-NEXT is really inefficient.
37 files changed: