* src/compiler/byte-comp.lisp
authorRaymond Toy <toy.raymond@gmail.com>
Sat, 27 Oct 2012 15:42:26 +0000 (08:42 -0700)
committerRaymond Toy <toy.raymond@gmail.com>
Sat, 27 Oct 2012 15:42:26 +0000 (08:42 -0700)
   * Bump fasl version for release
 * src/bootfiles/20c/boot-20d.lisp
   * Boot file for building the release with a new fasl version.

src/bootfiles/20c/boot-20d.lisp [new file with mode: 0644]
src/compiler/byte-comp.lisp

diff --git a/src/bootfiles/20c/boot-20d.lisp b/src/bootfiles/20c/boot-20d.lisp
new file mode 100644 (file)
index 0000000..21f86d1
--- /dev/null
@@ -0,0 +1,68 @@
+;;;;
+;;;; Boot file for changing the fasl file version numbers to 20d.
+;;;;
+
+(in-package :c)
+
+(setf lisp::*enable-package-locked-errors* nil)
+
+;;;
+;;; Note that BYTE-FASL-FILE-VERSION is a constant.
+;;;
+;;; (Be sure to change BYTE-FASL-FILE-VERSION in
+;;; compiler/byte-comp.lisp to the correct value too!)
+;;;
+#-cmu20d
+(setf (symbol-value 'byte-fasl-file-version)       #x20d)
+#-cmu20d
+(setf (backend-fasl-file-version *target-backend*) #x20d)
+
+;;;
+;;; Don't check fasl versions in the compiling Lisp because we'll
+;;; load files compiled with the new version numbers.
+;;;
+#-cmu20d
+(setq lisp::*skip-fasl-file-version-check* t)
+
+;;;
+;;; This is here because BYTE-FASL-FILE-VERSION is constant-folded in
+;;; OPEN-FASL-FILE.  To make the new version number take effect, we
+;;; have to redefine the function.
+;;;
+#-cmu20d
+(defun open-fasl-file (name where &optional byte-p)
+  (declare (type pathname name))
+  (let* ((stream (open name :direction :output
+                           :if-exists :new-version
+                           :element-type '(unsigned-byte 8)
+                           :class 'binary-text-stream))
+        (res (make-fasl-file :stream stream)))
+    (multiple-value-bind
+       (version f-vers f-imp)
+       (if byte-p
+           (values "Byte code"
+                   byte-fasl-file-version
+                   (backend-byte-fasl-file-implementation *backend*))
+           (values (backend-version *backend*)
+                   (backend-fasl-file-version *backend*)
+                   (backend-fasl-file-implementation *backend*)))
+      (format stream
+             "FASL FILE output from ~A.~@
+              Compiled ~A on ~A~@
+              Compiler ~A, Lisp ~A~@
+              Targeted for ~A, FASL version ~X~%"
+             where
+             (ext:format-universal-time nil (get-universal-time))
+             (machine-instance) compiler-version
+             (lisp-implementation-version)
+             version f-vers)
+      ;;
+      ;; Terminate header.
+      (dump-byte 255 res)
+      ;;
+      ;; Specify code format.
+      (dump-fop 'lisp::fop-long-code-format res)
+      (dump-byte f-imp res)
+      (dump-unsigned-32 f-vers res))
+    res))
+
index ad16162..b89c70b 100644 (file)
@@ -38,7 +38,7 @@
 ;; 0-9 followed by a single hex digit in the range a-f.  Then the
 ;; version looks like a decimal number followed by a minor release
 ;; letter of a to f.
-(defconstant byte-fasl-file-version #x20c)
+(defconstant byte-fasl-file-version #x20d)
 
 (let* ((version-string (format nil "~X" byte-fasl-file-version)))
   ;; Add :cmu<n> to *features*