1.0.27.34: various trivial fixups for portability / repeatability
authorChristophe Rhodes <csr21@cantab.net>
Fri, 24 Apr 2009 11:38:10 +0000 (11:38 +0000)
committerChristophe Rhodes <csr21@cantab.net>
Fri, 24 Apr 2009 11:38:10 +0000 (11:38 +0000)
The only one that is potentially controversial is the use of
READ-PRESERVING-WHITESPACE...

3 commit messages follow:

don't print array SB!KERNEL:TYPE in internal error strings

Use the specifier instead.  (This is a long-standing bug; FIXME: try to
find a test case).

Use read-preserving-whitespace rather than just read in the compiler

With just CL:READ, at least CLISP and SBCL differ on the source
locations dumped in the fasls; with READ-PRESERVING-WHITESPACE, things
are consistent.

disassembler / printer names.

The compiler wants to generate names based on all sorts of information,
including byte specs, and attempts to make those names by printing all
that information into one big string.  Unfortunately, that allows the
host to insert line breaks, which it will do with maximal perversity.
Bind *PRINT-RIGHT-MARGIN* around the printing call in an attempt to
minimize this problem.

src/compiler/assem.lisp
src/compiler/generic/interr.lisp
src/compiler/main.lisp
version.lisp-expr

index b19b2cc..797fd83 100644 (file)
            (push (eval `(list (multiple-value-list
                                ,(sb!disassem:gen-printer-def-forms-def-form
                                  name
-                                 (format nil "~@:(~A[~A]~)" name args)
+                                 (let ((*print-right-margin* 1000))
+                                   (format nil "~@:(~A[~A]~)" name args))
                                  (cdr option-spec)))))
                  pdefs))
           (:printer-list
                                   `(multiple-value-list
                                     ,(sb!disassem:gen-printer-def-forms-def-form
                                       ',name
-                                      (format nil "~@:(~A[~A]~)" ',name printer)
+                                      (let ((*print-right-margin* 1000))
+                                        (format nil "~@:(~A[~A]~)" ',name printer))
                                       printer
                                       nil)))
                                 ,(cadr option-spec)))))
index a733652..539d632 100644 (file)
            (list
             (symbolicate "OBJECT-NOT-" (sb!vm:saetp-primitive-type-name saetp))
             (format nil "Object is not of type ~A."
-                    (specifier-type
-                     `(simple-array ,(sb!vm:saetp-specifier saetp) (*))))))
+                    (type-specifier
+                     (specifier-type
+                      `(simple-array ,(sb!vm:saetp-specifier saetp) (*)))))))
          sb!vm:*specialized-array-element-type-properties*))
 
index 0887584..8608b82 100644 (file)
 ;;; error condition (possibly recording some extra location
 ;;; information).
 (defun read-for-compile-file (stream position)
-  (handler-case (read stream nil stream)
+  (handler-case
+      (read-preserving-whitespace stream nil stream)
     (reader-error (condition)
      (error 'input-error-in-compile-file
             :condition condition
index e40b624..e1c7c53 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.27.33"
+"1.0.27.34"