diff --git a/compiler/array-tran.lisp b/compiler/array-tran.lisp index 6c0abc5ad2d749d0552e1a6a926d84f86b03a737..586b6cce21f5dca1f4f4ba16c6ca09ce7bf797ae 100644 --- a/compiler/array-tran.lisp +++ b/compiler/array-tran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/array-tran.lisp,v 1.32 2003/04/13 11:57:17 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/array-tran.lisp,v 1.33 2003/04/27 11:43:43 gerd Exp $") ;;; ;;; ********************************************************************** ;;; @@ -542,12 +542,23 @@ (if (byte-compiling) (values nil t) `(%aset (the ,',type ,a) ,@i)))))) - (frob svref %svset simple-vector) - (frob schar %scharset simple-string) - (frob char %charset string) (frob sbit %sbitset (simple-array bit)) (frob bit %bitset (array bit))) +(macrolet ((frob (reffer setter type) + `(progn + (def-source-transform ,reffer (a i) + (if (byte-compiling) + (values nil t) + `(aref (the ,',type ,a) ,i))) + (def-source-transform ,setter (a i v) + (if (byte-compiling) + (values nil t) + `(%aset (the ,',type ,a) ,i ,v)))))) + (frob svref %svset simple-vector) + (frob schar %scharset simple-string) + (frob char %charset string)) + ;;; AREF, %ASET -- transform. ;;; ;;; Convert into a data-vector-ref (or set) with the set of indices replaced