use FAST-READ-BYTE in LOAD-S-INTEGER
authorNikodemus Siivola <nikodemus@random-state.net>
Fri, 9 Dec 2011 14:56:10 +0000 (16:56 +0200)
committerNikodemus Siivola <nikodemus@random-state.net>
Fri, 9 Dec 2011 21:52:16 +0000 (23:52 +0200)
  No reason not to.

src/code/fop.lisp

index 91fa04e..9f6d58b 100644 (file)
 
 ;;; 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)))