1.0.28.19: faster ARRAY-DIMENSION for non-vectors
Previously each ARRAY-DIMENSION call for a non-vector resulted in
checking (1) if the array was a displaced array (2) if the array it
was displaced to was still big enough for it.
This sucks pretty badly, because we use ARRAY-DIMENSION in bounds
checking -- especially given how rare it is to have an array
displaced to an adjustable array.
Add a new slot, ARRAY-DISPLACED-FROM, to array-headers, and store a
list of weak backpointers to arrays displaced to the array in
question there. SET-ARRAY-HEADER (as part of ADJUST-ARRAY) now
checks this list, and signals an error if any of the displaced-from
arrays is larger than the new size.
This also allows us to open code ARRAY-DIMENSION as long as the
array rank is known.