1.0.32.30: Fix breakage from 1.0.32.26.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Thu, 12 Nov 2009 16:07:49 +0000 (16:07 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Thu, 12 Nov 2009 16:07:49 +0000 (16:07 +0000)
  * Use FIND-CONSTANT instead of MAYBE-EMIT-MAKE-LOAD-FORMS to prepare
arglists for dumping, thus unbreaking compilation to core.

  * Add a test case for in-core case.

src/compiler/entry.lisp
tests/compiler.pure.lisp
version.lisp-expr

index 83d5a00..d2ace4c 100644 (file)
     (when (policy bind (>= debug 1))
       (let ((args (functional-arg-documentation internal-fun)))
         (aver (not (eq args :unspecified)))
-        (setf (entry-info-arguments info) args)
         ;; When the component is dumped, the arglists of the entry
         ;; points will be dumped.  If they contain values that need
         ;; make-load-form processing then we need to do it now (bug
         ;; 310132).
-        (maybe-emit-make-load-forms args))
+        (setf (entry-info-arguments info)
+              (constant-value (find-constant args))))
       (setf (entry-info-type info) (type-specifier (leaf-type internal-fun)))))
   (values))
 
index 5e9e754..6bf6dfd 100644 (file)
                     (funcall fun 42)
                   (undefined-function (c)
                     (cell-error-name c)))))))
+
+;;; Prior to 1.0.32.x, dumping a fasl with a function with a default
+;;; argument that is a complex structure (needing make-load-form
+;;; processing) failed an AVER.  The first attempt at a fix caused
+;;; doing the same in-core to break.
+(with-test (:name :bug-310132)
+  (compile nil '(lambda (&optional (foo #p"foo/bar")))))
index 8429184..d8a0544 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.32.29"
+"1.0.32.30"