- ;; each fop? Perhaps it would be better for this shared
- ;; code to live in FLET FROB1 and FLET FROB4 (for the
- ;; two different sizes of counts).
- (frob (name code name-size package)
- (let ((n-package (gensym))
- (n-size (gensym))
- (n-buffer (gensym)))
- `(define-fop (,name ,code)
- (prepare-for-fast-read-byte *fasl-input-stream*
- (let ((,n-package ,package)
- (,n-size (fast-read-u-integer ,name-size)))
- (when (> ,n-size *load-symbol-buffer-size*)
- (setq *load-symbol-buffer*
- (make-string (setq *load-symbol-buffer-size*
- (* ,n-size 2)))))
- (done-with-fast-read-byte)
- (let ((,n-buffer *load-symbol-buffer*))
- (read-string-as-bytes *fasl-input-stream*
- ,n-buffer
- ,n-size)
- (push-fop-table (intern* ,n-buffer
- ,n-size
- ,n-package)))))))))
+ ;; each fop? Perhaps it would be better for this shared
+ ;; code to live in FLET FROB1 and FLET FROB4 (for the
+ ;; two different sizes of counts).
+ (frob (name code name-size package)
+ (let ((n-package (gensym))
+ (n-size (gensym))
+ (n-buffer (gensym)))
+ `(define-fop (,name ,code)
+ (prepare-for-fast-read-byte *fasl-input-stream*
+ (let ((,n-package ,package)
+ (,n-size (fast-read-u-integer ,name-size)))
+ (when (> ,n-size (length *fasl-symbol-buffer*))
+ (setq *fasl-symbol-buffer*
+ (make-string (* ,n-size 2))))
+ (done-with-fast-read-byte)
+ (let ((,n-buffer *fasl-symbol-buffer*))
+ #+sb-xc-host
+ (read-string-as-bytes *fasl-input-stream*
+ ,n-buffer
+ ,n-size)
+ #-sb-xc-host
+ (#!+sb-unicode read-string-as-words
+ #!-sb-unicode read-string-as-bytes
+ *fasl-input-stream*
+ ,n-buffer
+ ,n-size)
+ (push-fop-table (without-package-locks
+ (intern* ,n-buffer
+ ,n-size
+ ,n-package))))))))))