From: Christophe Rhodes Date: Fri, 28 Jan 2005 09:01:11 +0000 (+0000) Subject: 0.8.19.2: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=b914788eab773b579664dcdc09a5278161191c47;p=sbcl.git 0.8.19.2: Merge David Lichteblau patches (sbcl-devel 2005-01-1x) ... docstring for INTEGER-LENGTH; ... SHLD / SHRD disassembly. --- diff --git a/NEWS b/NEWS index 9406e6e..1bf195b 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ changes in sbcl-0.8.20 (0.9alpha.0?) relative to sbcl-0.8.18: + * fixed disassembly of SHLD and SHRD on x86. (thanks to David + Lichteblau) * fixed some bugs related to Unicode integration: ** portions of multibyte characters at the end of buffers for character-based file input are correctly transferred to the diff --git a/src/code/numbers.lisp b/src/code/numbers.lisp index ca16028..c0440f3 100644 --- a/src/code/numbers.lisp +++ b/src/code/numbers.lisp @@ -1095,7 +1095,8 @@ the first." (defun integer-length (integer) #!+sb-doc - "Return the number of significant bits in the absolute value of integer." + "Return the number of non-sign bits in the twos-complement representation + of INTEGER." (etypecase integer (fixnum (integer-length (truly-the fixnum integer))) diff --git a/src/compiler/x86-64/arith.lisp b/src/compiler/x86-64/arith.lisp index 8f40dd8..fad7497 100644 --- a/src/compiler/x86-64/arith.lisp +++ b/src/compiler/x86-64/arith.lisp @@ -909,7 +909,6 @@ DONE)) -;;; Note: documentation for this function is wrong - rtfm (define-vop (signed-byte-64-len) (:translate integer-length) (:note "inline (signed-byte 32) integer-length") diff --git a/src/compiler/x86/arith.lisp b/src/compiler/x86/arith.lisp index e71a87d..0be42b4 100644 --- a/src/compiler/x86/arith.lisp +++ b/src/compiler/x86/arith.lisp @@ -910,7 +910,6 @@ DONE)) -;;; Note: documentation for this function is wrong - rtfm (define-vop (signed-byte-32-len) (:translate integer-length) (:note "inline (signed-byte 32) integer-length") diff --git a/src/compiler/x86/insts.lisp b/src/compiler/x86/insts.lisp index 8117383..fac5d41 100644 --- a/src/compiler/x86/insts.lisp +++ b/src/compiler/x86/insts.lisp @@ -1471,20 +1471,20 @@ (eval-when (:compile-toplevel :execute) (defun double-shift-inst-printer-list (op) `(#+nil - (ext-reg-reg/mem-imm ((op ,(logior op #b100)) + (ext-reg-reg/mem-imm ((op ,(logior op #b10)) (imm nil :type signed-imm-byte))) - (ext-reg-reg/mem ((op ,(logior op #b101))) - (:name :tab reg/mem ", " 'cl))))) + (ext-reg-reg/mem ((op ,(logior op #b10))) + (:name :tab reg/mem ", " reg ", " 'cl))))) (define-instruction shld (segment dst src amt) (:declare (type (or (member :cl) (mod 32)) amt)) - (:printer-list (double-shift-inst-printer-list #b10100000)) + (:printer-list (double-shift-inst-printer-list #b1010000)) (:emitter (emit-double-shift segment #b0 dst src amt))) (define-instruction shrd (segment dst src amt) (:declare (type (or (member :cl) (mod 32)) amt)) - (:printer-list (double-shift-inst-printer-list #b10101000)) + (:printer-list (double-shift-inst-printer-list #b1010100)) (:emitter (emit-double-shift segment #b1 dst src amt))) diff --git a/version.lisp-expr b/version.lisp-expr index eff2dce..5e928f5 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.8.19.1" +"0.8.19.2"