Tagging

The following is a key of the three bit low-tagging scheme:

000
even fixnum
001
function pointer
010
even other-immediate (header-words, characters, symbol-value trap value, etc.)
011
list pointer
100
odd fixnum
101
structure pointer
110
odd other immediate
111
other-pointer to data-blocks (other than conses, structures, and functions)

This tagging scheme forces a dual-word alignment of data-blocks on the heap, but this can be pretty negligible:

Everything else is vector-like including code, so these probably take up so many words that one extra one doesn't matter.