diff --git a/bootfiles/18e/boot17.lisp b/bootfiles/18e/boot17.lisp new file mode 100644 index 0000000000000000000000000000000000000000..ceccb47c4a796db3ddef3e0ee99bdb816f4d7523 --- /dev/null +++ b/bootfiles/18e/boot17.lisp @@ -0,0 +1,3 @@ +;; Boot file for adding *runtime-features* +(in-package :sys) +(defvar *runtime-features* nil) \ No newline at end of file diff --git a/code/foreign-linkage.lisp b/code/foreign-linkage.lisp index c763e1f3c6a1a87c0eb60d444a880755c0b0b227..3b655af22e28f114d57827bb1f5fcd44dd914943 100644 --- a/code/foreign-linkage.lisp +++ b/code/foreign-linkage.lisp @@ -1,5 +1,7 @@ (in-package "LISP") +(sys:register-lisp-runtime-feature :linkage-table) + ;;; This gets created by genesis and lives in the static area. (defvar *linkage-table-data*) diff --git a/code/gc.lisp b/code/gc.lisp index a4e13c0fda15cd995338cd70ad3e5e2d8d7254f1..23c404d930209c237b0b1e501a99ffaed7a90635 100644 --- a/code/gc.lisp +++ b/code/gc.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/gc.lisp,v 1.36 2003/08/05 11:00:49 emarsden Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/gc.lisp,v 1.37 2003/09/25 02:40:12 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -25,6 +25,9 @@ (in-package "LISP") (export '(room)) +#+gencgc +(sys:register-lisp-runtime-feature :gencgc) + ;;;; DYNAMIC-USAGE and friends. diff --git a/code/hash-new.lisp b/code/hash-new.lisp index c0363581c3285b62cbdf67bd45e1a77a4686f26b..d5d42348ecb5153e0b80059e80953bce82298202 100644 --- a/code/hash-new.lisp +++ b/code/hash-new.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/hash-new.lisp,v 1.26 2003/07/15 19:47:16 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/hash-new.lisp,v 1.27 2003/09/25 02:40:12 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -28,6 +28,8 @@ (in-package :lisp) +(register-lisp-runtime-feature :hash-new) + ;;;; The hash-table structures. diff --git a/code/lispinit.lisp b/code/lispinit.lisp index 14cb558d99f6227634d8a1b23dff114810da12f0..e584f98e0283a42920a4f4e786c067aaba80d547 100644 --- a/code/lispinit.lisp +++ b/code/lispinit.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/lispinit.lisp,v 1.71 2003/09/12 20:06:05 toy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/lispinit.lisp,v 1.72 2003/09/25 02:40:12 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -19,14 +19,25 @@ (export '(most-positive-fixnum most-negative-fixnum sleep ++ +++ ** *** // ///)) +(defvar *features* '(:common :common-lisp :ansi-cl :ieee-floating-point :cmu) + "Holds a list of symbols that describe features provided by the + implementation.") + + (in-package :system) -(export '(compiler-version scrub-control-stack)) +(export '(compiler-version scrub-control-stack *runtime-features*)) + +(defvar *runtime-features* nil + "Features affecting the runtime") (in-package :extensions) (export '(quit *prompt*)) (in-package :lisp) +#+stack-checking +(sys:register-lisp-runtime-feature :stack-checking) + ;;; Make the error system enable interrupts. (defconstant most-positive-fixnum #.vm:target-most-positive-fixnum diff --git a/code/misc.lisp b/code/misc.lisp index ece7231aca9936ef2ae70bb6374476dfc91fa20f..e81bc42e8a8153ce8ce1028d4bebb229b36e59d7 100644 --- a/code/misc.lisp +++ b/code/misc.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/misc.lisp,v 1.31 2003/04/11 15:28:11 emarsden Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/misc.lisp,v 1.32 2003/09/25 02:40:13 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -112,10 +112,18 @@ string) +#+nil (defvar *features* '(:common :common-lisp :ansi-cl :ieee-floating-point :cmu) "Holds a list of symbols that describe features provided by the implementation.") +;;; Register various Lisp features +#+i486 +(sys:register-lisp-runtime-feature :i486) + +#+pentium +(sys:register-lisp-runtime-feature :pentium) + (defun featurep (x) "If X is an atom, see if it is present in *FEATURES*. Also handle arbitrary combinations of atoms using NOT, AND, OR." diff --git a/code/multi-proc.lisp b/code/multi-proc.lisp index 4b8c6a072a1ca61fca19eb8a54a7ae856ddcc247..a569fb256d7c56c155666e1b9a74d18498359aa0 100644 --- a/code/multi-proc.lisp +++ b/code/multi-proc.lisp @@ -5,7 +5,7 @@ ;;; the Public domain, and is provided 'as is'. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/multi-proc.lisp,v 1.41 2002/12/12 19:09:45 moore Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/multi-proc.lisp,v 1.42 2003/09/25 02:40:13 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -14,6 +14,8 @@ (in-package "MULTIPROCESSING") +(sys:register-lisp-runtime-feature :mp) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; Handle the binding stack. diff --git a/code/package.lisp b/code/package.lisp index 92e77b86f8ea4dee294be091e212b9f3f7c93ed0..3f52aa668421ec55b89b6e3c523724ca4b04abd4 100644 --- a/code/package.lisp +++ b/code/package.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/package.lisp,v 1.71 2003/08/08 11:32:52 emarsden Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/package.lisp,v 1.72 2003/09/25 02:40:13 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -36,6 +36,9 @@ (in-package "LISP") +#+relative-package-names +(sys:register-lisp-feature :relative-package-names) + (defvar *default-package-use-list* '("COMMON-LISP") "The list of packages to use by default of no :USE argument is supplied to MAKE-PACKAGE or other package creation forms.") diff --git a/code/rand-mt19937.lisp b/code/rand-mt19937.lisp index 460914509a1988be9e7a434aea6e97dafd326b21..9ecc04a2b276cfe7285b92f639c0a514eef6023a 100644 --- a/code/rand-mt19937.lisp +++ b/code/rand-mt19937.lisp @@ -6,7 +6,7 @@ ;;; placed in the Public domain, and is provided 'as is'. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/rand-mt19937.lisp,v 1.11 2003/03/06 09:31:06 emarsden Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/rand-mt19937.lisp,v 1.12 2003/09/25 02:40:13 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -26,6 +26,8 @@ (in-package "KERNEL") (export '(%random-single-float %random-double-float random-chunk init-random-state)) +(sys:register-lisp-feature :random-mt19937) + ;;;; Random state hackery: diff --git a/code/sysmacs.lisp b/code/sysmacs.lisp index 75fcb21ff7b2265a3923d8b386cb141bfbee5be9..b69b52fff4e742773f654415789669602014883b 100644 --- a/code/sysmacs.lisp +++ b/code/sysmacs.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/sysmacs.lisp,v 1.27 2003/07/20 11:11:46 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/sysmacs.lisp,v 1.28 2003/09/25 02:40:13 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -14,11 +14,24 @@ (in-package "LISP") (in-package "SYSTEM") -(export '(without-gcing without-hemlock)) +(export '(without-gcing without-hemlock + register-lisp-feature register-lisp-runtime-feature)) + +(defmacro register-lisp-feature (feature) + "Register the feature as having influenced the CMUCL build process." + `(pushnew ',feature *features*)) + +(defmacro register-lisp-runtime-feature (feature) + "Register the feature as having influenced the CMUCL build process, +and also the CMUCL C runtime." + `(progn + (pushnew ',feature *features*) + (pushnew ',feature sys::*runtime-features*))) (in-package "LISP") + ;;; WITH-ARRAY-DATA -- Interface ;;; ;;; Checks to see if the array is simple and the start and end are in diff --git a/compiler/generic/new-genesis.lisp b/compiler/generic/new-genesis.lisp index b45de98399df2a4ebedeb87598f79b7ade66115f..5e869947528e7b2aaf92f1a51dde7998fc8e357c 100644 --- a/compiler/generic/new-genesis.lisp +++ b/compiler/generic/new-genesis.lisp @@ -4,7 +4,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.58 2003/08/20 16:53:59 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.59 2003/09/25 02:40:13 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -2306,8 +2306,8 @@ (if symbol (vm:static-symbol-offset symbol) 0))))) ;; ;; Write out features. - (format t "~%/* Features when built. */~2%") - (dolist (feature (c:backend-features c:*backend*)) + (format t "~%/* Runtime features when built. */~2%") + (dolist (feature sys:*runtime-features*) (format t "#define FEATURE_~a 1~%" (nsubstitute #\_ #\- (remove-if #'(lambda (char) diff --git a/compiler/srctran.lisp b/compiler/srctran.lisp index e393fe4edca7575ede4c29cbbd58ec70f985e48b..7a4b81130db8014576b1e94dd8752ff581638077 100644 --- a/compiler/srctran.lisp +++ b/compiler/srctran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.135 2003/09/24 22:38:10 toy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.136 2003/09/25 02:40:13 toy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -20,6 +20,9 @@ ;;; (in-package "C") +#+conservative-float-type +(sys:register-lisp-feature :conservative-float-type) + ;;; Source transform for Not, Null -- Internal ;;; ;;; Convert into an IF so that IF optimizations will eliminate redundant