1.0.31.23: OAOOize external-format support
fd-streams and octets support independently kept records of
external-format->function maps, suitable for the purposes of each. This
revision stores all the relevant information for an external format in a
single place--a new EXTERNAL-FORMAT structure--and has both clients
reference things in that single place.
Doing so offers opportunities for other cleanups and speedups.
fd-streams external-format storage was an alist of lists, which was bad
for client code, since everything referred to fields with NTH or
SECOND/FOURTH/FIFTH. A proper DEFSTRUCT helps here and should be
slightly more space-efficient, as we're replacing a list with
(effectively) a vector. Also, since clients had to scan through an
alist to find an external-format, this design was hurting performance in
streams code, most notably OPEN. Replacing the alist with a hash table
(which the octets code was already using) should make things a lot
snappier.
15 files changed: