0.7.1.26:
[sbcl.git] / src / cold / shared.lisp
index 7fcb851..b4ff892 100644 (file)
 ;;;; provided with absolutely no warranty. See the COPYING and CREDITS
 ;;;; files for more information.
 
-;;; GC tuning has little effect on the x86 due to the generational
-;;; collector.  For the older stop & copy collector, it assuredly
-;;; does.  GC time is proportional to the amount of non-garbage
-;;; needing collection and copying; when the application involved is
-;;; the SBCL compiler, it doesn't take any longer to collect 20 Mb than
-;;; to collect 2 Mb. -dan, 20000819
-;;;
-;;; Actually, tweaking *BYTES-CONSED-BETWEEN-GCS* to 20Mb instead of
-;;; the default 2 seemed to make SBCL rebuild O(25%) faster on my 256
-;;; Mb K6/3, so I think it does have some effect on X86/GENCGC. I
-;;; haven't looked into why this would be, though. Also, I'm afraid
-;;; that using 20Mb here might be unfriendly to people using more-reasonable
-;;; machines (like old laptops with 48Mb of memory..) so I've
-;;; suppressed this tweak except for Alpha. -- WHN 2001-05-11
-#+(and sbcl alpha) ; SBCL/Alpha uses stop-and-copy, and Alphas have lotso RAM.
-(progn
-  (sb-ext:gc-off)
-  (setf (sb-ext:bytes-consed-between-gcs) (* 20 (expt 10 6)))
-  (sb-ext:gc-on)
-  (sb-ext:gc))
-
 ;;; SB-COLD holds stuff used to build the initial SBCL core file
 ;;; (including not only the final construction of the core file, but
 ;;; also the preliminary steps like e.g. building the cross-compiler
 ;;; COMPILE-STEM function above. -- WHN 19990321
 (defun rename-file-a-la-unix (x y)
 
-  ;; CLISP signals an error when the target file exists, which
-  ;; seems unjustified by the ANSI definition of RENAME-FILE.
-  ;; Work around it.
-  #+clisp (ignore-errors (delete-file y))
-
-  (rename-file x
-              ;; (Note that the TRUENAME expression here is lifted
-              ;; from an example in the ANSI spec for TRUENAME.)
-              (with-open-file (stream y :direction :output)
-                (close stream)
-                ;; From the ANSI spec: "In this case, the file is
-                ;; closed when the truename is tried, so the truename
-                ;; information is reliable."
-                (truename stream))))
+  (let ((path   ;; (Note that the TRUENAME expression here is lifted from an
+                ;; example in the ANSI spec for TRUENAME.)
+        (with-open-file (stream y :direction :output)
+          (close stream)
+          ;; From the ANSI spec: "In this case, the file is closed
+          ;; when the truename is tried, so the truename
+          ;; information is reliable."
+          (truename stream))))
+    (delete-file path)
+    (rename-file x path)))
 (compile 'rename-file-a-la-unix)
 
 ;;; a wrapper for compilation/assembly, used mostly to centralize
   (format t
          "target features *SHEBANG-FEATURES*=~@<~S~:>~%"
          *shebang-features*))
+
+(defvar *shebang-backend-subfeatures*
+  (let* ((default-subfeatures nil)
+        (customizer-file-name "customize-backend-subfeatures.lisp")
+        (customizer (if (probe-file customizer-file-name)
+                        (compile nil 
+                                 (read-from-file customizer-file-name))
+                        #'identity)))
+    (funcall customizer default-subfeatures)))
+(export '*shebang-backend-subfeatures*)
+(let ((*print-length* nil)
+      (*print-level* nil))
+  (format t
+         "target backend-subfeatures *SHEBANG-BACKEND-FEATURES*=~@<~S~:>~%"
+         *shebang-backend-subfeatures*))
 \f
 ;;;; cold-init-related PACKAGE and SYMBOL tools