0.8.1.9:
[sbcl.git] / src / compiler / generic / vm-macs.lisp
index 6753edd..639f7e4 100644 (file)
@@ -50,7 +50,7 @@
   (options nil :type list)
   (slots nil :type list)
   (size 0 :type fixnum)
-  (var-length nil :type (member t nil)))
+  (variable-length-p nil :type (member t nil)))
 
 (defvar *primitive-objects* nil)
 
@@ -67,9 +67,9 @@
           &rest slot-specs)
   (collect ((slots) (exports) (constants) (forms) (inits))
     (let ((offset (if widetag 1 0))
-         (var-length nil))
+         (variable-length-p nil))
       (dolist (spec slot-specs)
-       (when var-length
+       (when variable-length-p
          (error "No more slots can follow a :rest-p slot."))
        (destructuring-bind
            (slot-name &rest options
@@ -84,7 +84,7 @@
                                             '(:docs :rest-p :length))))
          (let ((offset-sym (symbolicate name "-" slot-name
                                         (if rest-p "-OFFSET" "-SLOT"))))
-           (constants `(defconstant ,offset-sym ,offset
+           (constants `(def!constant ,offset-sym ,offset
                          ,@(when docs (list docs))))
            (exports offset-sym))
          (when ref-trans
          (when init
            (inits (cons init offset)))
          (when rest-p
-           (setf var-length t))
+           (setf variable-length-p t))
          (incf offset length)))
-      (unless var-length
+      (unless variable-length-p
        (let ((size (symbolicate name "-SIZE")))
-         (constants `(defconstant ,size ,offset))
+         (constants `(def!constant ,size ,offset))
          (exports size)))
       (when alloc-trans
-       (forms `(def-alloc ,alloc-trans ,offset ,var-length ,widetag
+       (forms `(def-alloc ,alloc-trans ,offset ,variable-length-p ,widetag
                           ,lowtag ',(inits))))
       `(progn
         (eval-when (:compile-toplevel :load-toplevel :execute)
                                     :lowtag lowtag
                                     :slots (slots)
                                     :size offset
-                                    :var-length var-length))
+                                    :variable-length-p variable-length-p))
           ,@(constants))
         ,@(forms)))))
 \f
 
 (in-package "SB!C")
 
-(defun %def-reffer (name offset lowtag)
-  (let ((info (function-info-or-lose name)))
-    (setf (function-info-ir2-convert info)
-         #'(lambda (node block)
-             (ir2-convert-reffer node block name offset lowtag))))
-  name)
-
 (defmacro def-reffer (name offset lowtag)
   `(%def-reffer ',name ,offset ,lowtag))
-
-(defun %def-setter (name offset lowtag)
-  (let ((info (function-info-or-lose name)))
-    (setf (function-info-ir2-convert info)
-         (if (listp name)
-             #'(lambda (node block)
-                 (ir2-convert-setfer node block name offset lowtag))
-             #'(lambda (node block)
-                 (ir2-convert-setter node block name offset lowtag)))))
-  name)
-
 (defmacro def-setter (name offset lowtag)
   `(%def-setter ',name ,offset ,lowtag))
-
-(defun %def-alloc (name words var-length header lowtag inits)
-  (let ((info (function-info-or-lose name)))
-    (setf (function-info-ir2-convert info)
-         (if var-length
-             #'(lambda (node block)
-                 (ir2-convert-variable-allocation node block name words header
-                                                  lowtag inits))
-             #'(lambda (node block)
-                 (ir2-convert-fixed-allocation node block name words header
-                                               lowtag inits)))))
-  name)
-
-(defmacro def-alloc (name words var-length header lowtag inits)
-  `(%def-alloc ',name ,words ,var-length ,header ,lowtag ,inits))
+(defmacro def-alloc (name words variable-length-p header lowtag inits)
+  `(%def-alloc ',name ,words ,variable-length-p ,header ,lowtag ,inits))
+;;; KLUDGE: The %DEF-FOO functions used to implement the macros here
+;;; are defined later in another file, since they use structure slot
+;;; setters defined later, and we can't have physical forward
+;;; references to structure slot setters because ANSI in its wisdom
+;;; allows the xc host CL to implement structure slot setters as SETF
+;;; expanders instead of SETF functions. -- WHN 2002-02-09
 \f
 ;;;; some general constant definitions
 
 (in-package "SB!C")
 
 ;;; the maximum number of SCs in any implementation
-(defconstant sc-number-limit 32)
+(def!constant sc-number-limit 32)