projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.8.8: restore reuse-sap value after incomplete writes in FROB-OUTPUT-LATER
[sbcl.git]
/
src
/
code
/
load.lisp
diff --git
a/src/code/load.lisp
b/src/code/load.lisp
index
eafe8a0
..
8b3067d
100644
(file)
--- a/
src/code/load.lisp
+++ b/
src/code/load.lisp
@@
-114,6
+114,10
@@
(declare (optimize (speed 0)))
(read-arg #.sb!vm:n-word-bytes))
(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
\f
;;;; the fop table
@@
-170,9
+174,12
@@
(aver (member pushp '(nil t :nope)))
(with-unique-names (fop-stack)
`(let ((,fop-stack *fop-stack*))
(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))
(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
(call-with-popped-args (fun n)
`(%call-with-popped-args ,fun ,n ,',fop-stack)))
,(if pushp
@@
-305,7
+312,7
@@
;; Read and validate version-specific compatibility stuff.
(flet ((string-from-stream ()
;; 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)))
(result (make-string length)))
(read-string-as-bytes stream result)
result)))
@@
-361,10
+368,11
@@
(defun load-fasl-group (stream)
(when (check-fasl-header stream)
(catch 'fasl-group-end
(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)))
(loop
(let ((byte (read-byte stream)))
-
;; Do some debugging output.
#!+sb-show
(when *show-fops-p*
;; Do some debugging output.
#!+sb-show
(when *show-fops-p*