X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcross-byte.lisp;h=4b6f4a225a8faa5c9a1a96ff985d6593b60600f7;hb=ffa9a31f62e3e2abab8ebcbb3bfdab9725feaf7f;hp=b9b81782af266ac57e5fb60328232e1d2e6c4483;hpb=2e91e29892268b2c7e5ab557e8192fa03bce68f2;p=sbcl.git diff --git a/src/code/cross-byte.lisp b/src/code/cross-byte.lisp index b9b8178..4b6f4a2 100644 --- a/src/code/cross-byte.lisp +++ b/src/code/cross-byte.lisp @@ -39,6 +39,11 @@ (defun sb!xc:deposit-field (new cross-byte int) (cl:deposit-field new (uncross-byte cross-byte) int)) +(defun sb!c::mask-signed-field (size integer) + (if (logbitp (1- size) integer) + (dpb integer (byte size 0) -1) + (ldb (byte size 0) integer))) + (define-setf-expander sb!xc:ldb (cross-byte int &environment env) (multiple-value-bind (temps vals stores store-form access-form) (get-setf-expansion int env)