(declare (optimize (speed 0)))
(read-arg #.sb!vm:n-word-bytes))
+(defun read-unsigned-byte-32-arg ()
+ (declare (optimize (speed 0)))
+ (read-arg 4))
+
\f
;;;; the fop table
(aver (member pushp '(nil t :nope)))
(with-unique-names (fop-stack)
`(let ((,fop-stack *fop-stack*))
- (declare (type (vector t) ,fop-stack))
+ (declare (type (vector t) ,fop-stack)
+ (ignorable ,fop-stack))
(macrolet ((pop-stack ()
`(vector-pop ,',fop-stack))
+ (push-stack (value)
+ `(vector-push-extend ,value ,',fop-stack))
(call-with-popped-args (fun n)
`(%call-with-popped-args ,fun ,n ,',fop-stack)))
,(if pushp
;; Read and validate version-specific compatibility stuff.
(flet ((string-from-stream ()
- (let* ((length (read-word-arg))
+ (let* ((length (read-unsigned-byte-32-arg))
(result (make-string length)))
(read-string-as-bytes stream result)
result)))
(defun load-fasl-group (stream)
(when (check-fasl-header stream)
(catch 'fasl-group-end
- (let ((*current-fop-table-index* 0))
+ (let ((*current-fop-table-index* 0)
+ (*skip-until* nil))
+ (declare (special *skip-until*))
(loop
(let ((byte (read-byte stream)))
-
;; Do some debugging output.
#!+sb-show
(when *show-fops-p*