0.8.21.5:
authorNathan Froyd <froydnj@cs.rice.edu>
Mon, 28 Mar 2005 18:54:50 +0000 (18:54 +0000)
committerNathan Froyd <froydnj@cs.rice.edu>
Mon, 28 Mar 2005 18:54:50 +0000 (18:54 +0000)
commit338732358d49ab202fe55c3581294597d63aec6b
tree886861d69c6b4e4dd7150bbacdd5d3b166e32f08
parent4f8254f9a128aecc02fc53986ddf2645d8810c24
0.8.21.5:
Enable faster REPLACE on declared specialized arrays.

Overview of necessary machinery:
* New %VECTOR-RAW-BITS and %SET-VECTOR-RAW-BITS functions/VOPs
  which automatically take into account VECTOR-DATA-OFFSET
  (eliminates tedium associated with previous bit-bashing code
   and makes things slightly faster).  It's not clear if the
  old %RAW-BITS and %SET-RAW-BITS functions need to remain;
* Generalize the old bit-bashing code to generate bit-bashers
  for differently sized "bytes" (1-bit, 2-bit, 4-bit, etc.);
* Add REPLACE transforms for most specialized array types
  (those with elements not larger than the word size);
* Replace various incantations of COPY-FROM-SYSTEM-AREA,
  COPY-TO-SYSTEM-AREA, BIT-BASH-COPY, etc. with their new
  width-aware equivalents (this accounts for the bulk of the
  changed files, if not the changed lines);
* Add systematic tests for UB*-BASH-{FILL,COPY};
* Add generalized SUBSEQ and COPY-SEQ transforms while we're
  at it (FILL would be nice to have, but is a little bit
  trickier to do in the general case).

These changes also open up the possibility of removing %BYTE-BLT
  from the sources.  Benefits: decrease in the number of
  WITHOUT-GCING forms required, less calling out to C, more of
  the system in Lisp, etc.  %BYTE-BLT remains in this version,
  but may be removed if there is sufficient support for its
  removal.
38 files changed:
NEWS
contrib/sb-md5/md5.lisp
contrib/sb-simple-streams/internal.lisp
package-data-list.lisp-expr
src/code/alpha-vm.lisp
src/code/bit-bash.lisp
src/code/debug-int.lisp
src/code/defsetfs.lisp
src/code/fd-stream.lisp
src/code/host-alieneval.lisp
src/code/hppa-vm.lisp
src/code/kernel.lisp
src/code/mips-vm.lisp
src/code/ppc-vm.lisp
src/code/run-program.lisp
src/code/sparc-vm.lisp
src/code/stream.lisp
src/code/target-c-call.lisp
src/code/x86-64-vm.lisp
src/code/x86-vm.lisp
src/compiler/alpha/array.lisp
src/compiler/generic/target-core.lisp
src/compiler/generic/vm-fndb.lisp
src/compiler/hppa/array.lisp
src/compiler/hppa/insts.lisp
src/compiler/mips/array.lisp
src/compiler/mips/insts.lisp
src/compiler/ppc/array.lisp
src/compiler/ppc/insts.lisp
src/compiler/seqtran.lisp
src/compiler/sparc/array.lisp
src/compiler/sparc/insts.lisp
src/compiler/x86-64/array.lisp
src/compiler/x86-64/insts.lisp
src/compiler/x86/array.lisp
src/compiler/x86/insts.lisp
tests/seq.impure.lisp
version.lisp-expr