0.pre7.31:
[sbcl.git] / src / compiler / generic / genesis.lisp
index 55c58b2..ce9e73f 100644 (file)
   ;; the function values for these things?? I.e. why do we need this
   ;; section at all? Is it because all the FDEFINITION stuff gets in
   ;; the way of reading function values and is too hairy to rely on at
-  ;; cold boot? FIXME: 5/6 of these are in *STATIC-SYMBOLS* in
+  ;; cold boot? FIXME: Most of these are in *STATIC-SYMBOLS* in
   ;; parms.lisp, but %HANDLE-FUNCTION-END-BREAKPOINT is not. Why?
   ;; Explain.
   (macrolet ((frob (symbol)
               `(cold-set ',symbol
                          (cold-fdefinition-object (cold-intern ',symbol)))))
-    (frob !cold-init)
     (frob maybe-gc)
     (frob internal-error)
     (frob sb!di::handle-breakpoint)
-    (frob sb!di::handle-function-end-breakpoint)
-    (frob fdefinition-object))
+    (frob sb!di::handle-function-end-breakpoint))
 
   (cold-set '*current-catch-block*          (make-fixnum-descriptor 0))
   (cold-set '*current-unwind-protect-block* (make-fixnum-descriptor 0))
   ;; writing beginning boilerplate
   (format t "/*~%")
   (dolist (line
-          '("This is a machine-generated file. Do not edit it by hand."
+          '("This is a machine-generated file. Please do not edit it by hand."
             ""
             "This file contains low-level information about the"
             "internals of a particular version and configuration"
   (format t "#ifndef _SBCL_H_~%#define _SBCL_H_~%")
   (terpri)
 
+  ;; propagating *SHEBANG-FEATURES* into C-level #define's
+  (dolist (shebang-feature-name (sort (mapcar #'symbol-name
+                                             sb-cold:*shebang-features*)
+                                     #'string<))
+    (format t
+           "#define LISP_FEATURE_~A~%"
+           (substitute #\_ #\- shebang-feature-name)))
+  (terpri)
+
   ;; writing miscellaneous constants
   (format t "#define SBCL_CORE_VERSION_INTEGER ~D~%" sbcl-core-version-integer)
   (format t
 
   ;; writing codes/strings for internal errors
   (format t "#define ERRORS { \\~%")
-  ;; FIXME: Is this just DO-VECTOR?
+  ;; FIXME: Is this just DOVECTOR?
   (let ((internal-errors sb!c:*backend-internal-errors*))
     (dotimes (i (length internal-errors))
       (format t "    ~S, /*~D*/ \\~%" (cdr (aref internal-errors i)) i)))