From: Juho S. <js...@us...> - 2007-04-17 04:20:30
|
Update of /cvsroot/sbcl/sbcl/src/compiler/generic In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv32238/src/compiler/generic Modified Files: late-type-vops.lisp parms.lisp vm-fndb.lisp Log Message: 1.0.4.92: faster generic array access * Replace the typecase-based HAIRY-DATA-VECTOR-* with a table-driven dispatch on widetags * Move bounds checking of one-dimension AREFs into HAIRY-DATA-VECTOR-* from the caller, so that we can avoid doing a full ARRAY-DIMENSION in the common case. * 3-5x speedup on generic array accesses Index: late-type-vops.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/late-type-vops.lisp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- late-type-vops.lisp 3 Jun 2006 20:26:52 -0000 1.10 +++ late-type-vops.lisp 17 Apr 2007 04:19:36 -0000 1.11 @@ -29,6 +29,10 @@ (instance-pointer-lowtag) :mask lowtag-mask) +(!define-type-vops %other-pointer-p nil nil nil + (other-pointer-lowtag) + :mask lowtag-mask) + (!define-type-vops bignump check-bignum bignum object-not-bignum-error (bignum-widetag)) Index: parms.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/parms.lisp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- parms.lisp 2 Apr 2007 15:20:43 -0000 1.7 +++ parms.lisp 17 Apr 2007 04:19:36 -0000 1.8 @@ -59,6 +59,12 @@ #!-sb-thread *stepping* + ;; Dispatch tables for generic array access + sb!impl::*data-vector-reffers* + sb!impl::*data-vector-setters* + sb!impl::*data-vector-reffers/check-bounds* + sb!impl::*data-vector-setters/check-bounds* + ;; hash table weaknesses :key :value Index: vm-fndb.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/vm-fndb.lisp,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- vm-fndb.lisp 10 Apr 2007 13:50:45 -0000 1.41 +++ vm-fndb.lisp 17 Apr 2007 04:19:37 -0000 1.42 @@ -20,7 +20,7 @@ complex-rational-p complex-float-p complex-single-float-p complex-double-float-p #!+long-float complex-long-float-p complex-vector-p - base-char-p %standard-char-p %instancep + base-char-p %standard-char-p %instancep %other-pointer-p base-string-p simple-base-string-p #!+sb-unicode character-string-p #!+sb-unicode simple-character-string-p |