1.0.28.21: further array typechecking optimization
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 6 May 2009 18:39:49 +0000 (18:39 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 6 May 2009 18:39:49 +0000 (18:39 +0000)
commit321fff35923fc7621307f3d8d6105cbef8511341
tree89bc1cb6d7b01de53bc2c661425db6172e5ed323
parent3266b5df27fb88e04b16fed47e65f1f394ff7674
1.0.28.21: further array typechecking optimization

 (really, this time. contents accidentally left out from 1.0.28.20)

 * Eliminate extra lowtag checking from the array element type check:
   since we know we are dealing with an array, we can use the same
   fast widetag extraction code that array type dispatching used --
   factoring it out into %OTHER-POINTER-WIDETAG.

 * If we know after checking the dimensions that the array must have
   a header, and we know that the array is simple, we can deduce that
   there is exactly one level of indirection.

 * Similarly, if we know that the array has a header, we can
   immediately pull out the data vector to check if it too has a
   header instead of doing an extra test.
package-data-list.lisp-expr
src/code/array.lisp
src/code/kernel.lisp
src/compiler/generic/vm-array.lisp
src/compiler/typetran.lisp
version.lisp-expr