0.8.8.10:
MORE MICRO-OPTIMIZATION
... renumber all widetags. (LESS BINARY-COMPATIBILITY)
... implement some smarter type tag checking on the x86.
The smarter type checking comes in several flavours.
* If we have two adjacent lowtags, in three cases out of four
we can do "and, cmp, branch", rather than
"cmp, branch, cmp, branch";
* If we have two lowtags that are unadjacent but differ by
just one bit, we can likewise do "and, cmp, branch" rather
than "cmp, branch, cmp, branch";
* If we have a contiguous range of lowtags that includes the
most positive lowtag, we do not need to test the upper bound;
* If we have four lowtags with only two bits different, we can
do "and, cmp, branch" rather than *four* "cmp, branch" pairs.
This change will conflict with ongoing 64-bit ports. The
conflict is resolvable (there are enough widetags in the "array"
range (which in practice is 130 - 254; currently there are five
in this range unused (or three with long-float arrays)