;;;; 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