Fix make-array transforms.
[sbcl.git] / src / code / cross-io.lisp
1 ;;;; cross-compiler-only versions of I/O-related stuff
2
3 ;;;; This software is part of the SBCL system. See the README file for
4 ;;;; more information.
5 ;;;;
6 ;;;; This software is derived from the CMU CL system, which was
7 ;;;; written at Carnegie Mellon University and released into the
8 ;;;; public domain. The software is in the public domain and is
9 ;;;; provided with absolutely no warranty. See the COPYING and CREDITS
10 ;;;; files for more information.
11
12 (in-package "SB!FASL")
13
14 ;;;; fast-read operations
15 ;;;;
16 ;;;; (Portable versions of these are needed at cross-compile time because
17 ;;;; genesis implements some of its cold fops by cloning ordinary fop
18 ;;;; implementations, and the ordinary fop implementations are defined in terms
19 ;;;; of fast-read operations.)
20
21 (defmacro with-fast-read-byte ((type stream &optional (eof-error-p t) eof-value)
22                                &body body)
23   (let ((f-stream (gensym "STREAM"))
24         (f-eof-error-p (gensym "EOF-ERROR-P"))
25         (f-eof-value (gensym "EOF-VALUE")))
26     `(let ((,f-stream ,stream)
27            (,f-eof-error-p ,eof-error-p)
28            (,f-eof-value ,eof-value))
29        (flet ((fast-read-byte ()
30                   (the ,type (read-byte ,f-stream ,f-eof-error-p ,f-eof-value))))
31          ,@body))))