From 9dfaa2fcdfbfb0cad8668592a86bd90c994a10fc Mon Sep 17 00:00:00 2001 From: wlott <wlott> Date: Fri, 15 Jun 1990 12:35:22 +0000 Subject: [PATCH] Fixed the data-vector-{ref,set} transforms for simple vectors of (unsigned-byte 2) and (unsigned-byte 4). --- compiler/generic/vm-tran.lisp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/generic/vm-tran.lisp b/compiler/generic/vm-tran.lisp index 094b78630..327e4bdfc 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) -- GitLab