X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ffop.lisp;h=e45704e5c44284a567a3ecd9072e153e92a28228;hb=1e1ba5d5b43e20a4c0b157f08d4c85fe880c7e25;hp=91fa04eae3e3da9422da58eaec731c40a1459691;hpb=60059052d267b3072ed8cefb1faf1e590f96adf7;p=sbcl.git diff --git a/src/code/fop.lisp b/src/code/fop.lisp index 91fa04e..e45704e 100644 --- a/src/code/fop.lisp +++ b/src/code/fop.lisp @@ -192,7 +192,7 @@ ;;;; fops for loading symbols -(defun fop-intern (smallp package) +(defun aux-fop-intern (smallp package) (let ((size (if smallp (read-byte-arg) (read-word-arg)))) @@ -214,7 +214,7 @@ (macrolet ((def (name code smallp package-form) `(define-fop (,name ,code) - (fop-intern ,smallp ,package-form)))) + (aux-fop-intern ,smallp ,package-form)))) (def fop-lisp-symbol-save 75 nil *cl-package*) (def fop-lisp-small-symbol-save 76 t *cl-package*) @@ -266,17 +266,18 @@ ;;; Load a signed integer LENGTH bytes long from *FASL-INPUT-STREAM*. (defun load-s-integer (length) - (declare (fixnum length)) - ;; #+cmu (declare (optimize (inhibit-warnings 2))) - (do* ((index length (1- index)) - (byte 0 (read-byte *fasl-input-stream*)) - (result 0 (+ result (ash byte bits))) - (bits 0 (+ bits 8))) - ((= index 0) - (if (logbitp 7 byte) ; look at sign bit - (- result (ash 1 bits)) - result)) - (declare (fixnum index byte bits)))) + (declare (fixnum length) + (optimize speed)) + (with-fast-read-byte ((unsigned-byte 8) *fasl-input-stream*) + (do* ((index length (1- index)) + (byte 0 (fast-read-byte)) + (result 0 (+ result (ash byte bits))) + (bits 0 (+ bits 8))) + ((= index 0) + (if (logbitp 7 byte) ; look at sign bit + (- result (ash 1 bits)) + result)) + (declare (fixnum index byte bits))))) (define-cloned-fops (fop-integer 33) (fop-small-integer 34) (load-s-integer (clone-arg)))