diff --git a/compiler/generic/vm-tran.lisp b/compiler/generic/vm-tran.lisp index 094b78630f971b77987c409b7ffb359b20778da2..327e4bdfc7243aded085bfcfc63f73bf15be397d 100644 --- a/compiler/generic/vm-tran.lisp +++ b/compiler/generic/vm-tran.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-tran.lisp,v 1.11 1990/06/06 03:57:36 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-tran.lisp,v 1.12 1990/06/15 12:35:22 wlott Exp $ ;;; ;;; This file contains impelemtentation-dependent transforms. ;;; @@ -139,17 +139,19 @@ `(multiple-value-bind (word bit) (floor index ,',elements-per-word) (ldb ,(ecase vm:target-byte-order - (:little-endian '(byte ,bits bit)) - (:big-endian '(byte 1 (- vm:word-bits ,bits bit)))) + (:little-endian '(byte ,bits (* bit ,bits))) + (:big-endian '(byte ,bits (- vm:word-bits + (* (1+ bit) ,bits))))) (%raw-bits vector (+ word vm:vector-data-offset))))) (deftransform data-vector-set ((vector index new-value) (,type * *)) `(multiple-value-bind (word bit) (floor index ,',elements-per-word) (setf (ldb ,(ecase vm:target-byte-order - (:little-endian '(byte ,bits bit)) + (:little-endian '(byte ,bits (* bit ,bits))) (:big-endian - '(byte 1 (- vm:word-bits ,bits bit)))) + '(byte ,bits (- vm:word-bits + (* (1+ bit) ,bits))))) (%raw-bits vector (+ word vm:vector-data-offset))) new-value))))))) (frob simple-bit-vector 1)