0.pre7.86.flaky7.6:
authorWilliam Harold Newman <william.newman@airmail.net>
Tue, 13 Nov 2001 16:05:27 +0000 (16:05 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Tue, 13 Nov 2001 16:05:27 +0000 (16:05 +0000)
(This version makes it all the way through xc, then dies
shortly after TOPLEVEL-INIT.)
I guess PLACEHOLDER-FENV is more persistent than I realized, so
old CMU CL code to modify it is actually important, so
SBCL should modify it too.

src/compiler/ir1-translators.lisp
src/compiler/ir1util.lisp
version.lisp-expr

index 24a0ef5..b8f657c 100644 (file)
                                                        "LABELS placeholder ~S"
                                                        name)))
                                       names))
+            ;; (like PAIRLIS but guaranteed to preserve ordering:)
+            (placeholder-fenv (mapcar #'cons names placeholder-funs))
              ;; the real LABELS functions, compiled in a LEXENV which
              ;; includes the dummy LABELS functions
             (real-funs
              (let ((*lexenv* (make-lexenv
-                              :functions (pairlis names placeholder-funs))))
+                              :functions placeholder-fenv)))
                (mapcar (lambda (name def)
                          (ir1-convert-lambda def
                                              :source-name name
 
         ;; Modify all the references to the dummy function leaves so
         ;; that they point to the real function leaves.
-       (loop for real-fun in real-funs and placeholder-fun in placeholder-funs
-             do (substitute-leaf real-fun placeholder-fun))
+       (loop for real-fun in real-funs and
+             placeholder-cons in placeholder-fenv do
+             (substitute-leaf real-fun (cdr placeholder-cons))
+             (setf (cdr placeholder-cons) real-fun))
 
         ;; Voila.
        (let ((*lexenv* (make-lexenv
index f577861..26a25a6 100644 (file)
     (change-ref-leaf ref new-leaf))
   (values))
 
-;;; Like SUBSITUTE-LEAF, only there is a predicate on the Ref to tell
+;;; Like SUBSITUTE-LEAF, only there is a predicate on the REF to tell
 ;;; whether to substitute.
 (defun substitute-leaf-if (test new-leaf old-leaf)
   (declare (type leaf new-leaf old-leaf) (type function test))
index 97c29b0..3cdda55 100644 (file)
@@ -18,4 +18,4 @@
 ;;; for internal versions, especially for internal versions off the
 ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.pre7.86.flaky7.5"
+"0.pre7.86.flaky7.6"