0.7.6.16:
[sbcl.git] / src / compiler / main.lisp
index b5ad7f1..55be15e 100644 (file)
                 (gethash (leaf-info fun) entry-table)
               (aver found-p)
               result))
+       ;; KLUDGE: This code duplicates some other code in this
+       ;; file. In the great reorganzation, the flow of program logic
+       ;; changed from the original CMUCL model, and that path (as of
+       ;; sbcl-0.7.5 in SUB-COMPILE-FILE) was no longer followed for
+       ;; CORE-OBJECTS, leading to BUG 156. This place is
+       ;; transparently not the right one for this code, but I don't
+       ;; have a clear enough overview of the compiler to know how to
+       ;; rearrange it all so that this operation fits in nicely, and
+       ;; it was blocking reimplementation of 
+       ;; (DECLAIM (INLINE FOO)) (MACROLET ((..)) (DEFUN FOO ...))
+       ;;
+       ;; FIXME: This KLUDGE doesn't solve all the problem in an
+       ;; ideal way, as (1) definitions typed in at the REPL without
+       ;; an INLINE declaration will give a NULL
+       ;; FUNCTION-LAMBDA-EXPRESSION (allowable, but not ideal) and
+       ;; (2) INLINE declarations will yield a
+       ;; FUNCTION-LAMBDA-EXPRESSION headed by
+       ;; SB-C:LAMBDA-WITH-LEXENV, even for null LEXENV.
+       ;;
+       ;; CSR, 2002-07-02
+       (when (core-object-p *compile-object*)
+         (fix-core-source-info *source-info* *compile-object*))
+
         (mapc #'clear-ir1-info components-from-dfo)
         (clear-stuff)))))
 
                                          (node-component (lambda-bind x)))
                                         :toplevel)))
                              lambdas
-                             :start start)
+                             ;; this used to read ":start start", but
+                             ;; start can be greater than len, which
+                             ;; is an error according to ANSI - CSR,
+                             ;; 2002-04-25
+                             :start (min start len))
                 len)))
       (do* ((start 0 (1+ loser))
            (loser (loser start) (loser start)))
 ;;; If the constant doesn't show up in *CONSTANTS-BEING-CREATED*, then
 ;;; we have to create it. We call MAKE-LOAD-FORM and check to see
 ;;; whether the creation form is the magic value
-;;; :JUST-DUMP-IT-NORMALLY. If it is, then we don't do anything. The
+;;; :SB-JUST-DUMP-IT-NORMALLY. If it is, then we don't do anything. The
 ;;; dumper will eventually get its hands on the object and use the
 ;;; normal structure dumping noise on it.
 ;;;
                                 constant
                                 condition)))
       (case creation-form
-       (:just-dump-it-normally
+       (:sb-just-dump-it-normally
         (fasl-validate-structure constant *compile-object*)
         t)
        (:ignore-it