0.pre7.58:
[sbcl.git] / src / compiler / backend.lisp
index 06e7d53..e843d69 100644 (file)
 ;;;; files for more information.
 
 (in-package "SB!C")
-
-(file-comment
-  "$Header$")
 \f
 ;;;; miscellaneous backend properties
 
-;;; the conventional file extension for fasl files on this architecture,
-;;; e.g. "x86f"
-(defvar *backend-fasl-file-type* nil)
-(declaim (type (or simple-string null) *backend-fasl-file-type*))
-
-;;; implementation and version of fasl files used
-(defvar *backend-fasl-file-implementation* nil)
-(defvar *backend-fasl-file-version* nil)
-(declaim (type (or keyword null) *backend-fasl-file-implementation*))
-(declaim (type (or index null) *backend-fasl-file-version*))
-
-;;; the number of references that a TN must have to offset the overhead of
-;;; saving the TN across a call
+;;; the number of references that a TN must have to offset the
+;;; overhead of saving the TN across a call
 (defvar *backend-register-save-penalty* 0)
 (declaim (type index *backend-register-save-penalty*))
 
 ;;; the byte order of the target machine. :BIG-ENDIAN has the MSB first (e.g.
 ;;; IBM RT), :LITTLE-ENDIAN has the MSB last (e.g. DEC VAX).
-;;;
-;;; KLUDGE: In a sort of pun, this is also used as the value of 
-;;; BACKEND-BYTE-FASL-FILE-IMPLEMENTATION. -- WHN 20000302
-(defvar *backend-byte-order* nil)
+(defvar *backend-byte-order*)
 (declaim (type (member nil :little-endian :big-endian) *backend-byte-order*))
 
 ;;; translation from SC numbers to SC info structures. SC numbers are always
 ;;; The T primitive-type is kept in this variable so that people who
 ;;; have to special-case it can get at it conveniently. This variable
 ;;; has to be set by the machine-specific VM definition, since the
-;;; DEF-PRIMITIVE-TYPE for T must specify the SCs that boxed objects
+;;; !DEF-PRIMITIVE-TYPE for T must specify the SCs that boxed objects
 ;;; can be allocated in.
 (defvar *backend-t-primitive-type*)
 (declaim (type primitive-type *backend-t-primitive-type*))
 (defvar *backend-parsed-vops* (make-hash-table :test 'eq))
 (declaim (type hash-table *backend-parsed-vops*))
 
-;;; the backend-specific aspects of the info environment
-(defvar *backend-info-environment* nil)
-(declaim (type list *backend-info-environment*))
-
 ;;; support for the assembler
 (defvar *backend-instruction-formats* (make-hash-table :test 'eq))
 (defvar *backend-instruction-flavors* (make-hash-table :test 'equal))
             `(progn
                (eval-when (:compile-toplevel :load-toplevel :execute)
                  (defparameter *vm-support-routines* ',routines))
-               (defstruct vm-support-routines
+               (defstruct (vm-support-routines (:copier nil))
                  ,@(mapcar #'(lambda (routine)
                                `(,routine nil :type (or function null)))
                            routines))
 
 (defprinter (vm-support-routines))
 
-(defmacro def-vm-support-routine (name ll &body body)
+(defmacro !def-vm-support-routine (name ll &body body)
   (unless (member (intern (string name) (find-package "SB!C"))
                  *vm-support-routines*)
     (warn "unknown VM support routine: ~A" name))
 ;;; the VM support routines
 (defvar *backend-support-routines* (make-vm-support-routines))
 (declaim (type vm-support-routines *backend-support-routines*))
-\f
-;;;; utilities
 
-(defun backend-byte-fasl-file-implementation ()
-  *backend-byte-order*)
-
-(defun backend-byte-fasl-file-type ()
-  (ecase *backend-byte-order*
-    (:big-endian "bytef")
-    (:little-endian "lbytef")))
+;;; This is a prototype interface to support Christophe Rhodes' new
+;;; (sbcl-0.pre7.57) VOP :GUARD clauses for implementations which
+;;; depend on CPU variants, e.g. the differences between I486,
+;;; Pentium, and Pentium Pro, or the differences between different
+;;; SPARC versions.
+;;;
+;;; The default value of NIL means use only unguarded VOPs.
+(defvar *backend-subfeatures* nil)