0.pre7.20:
[sbcl.git] / src / compiler / x86 / macros.lisp
index 39d1f16..b82ca88 100644 (file)
@@ -11,9 +11,6 @@
 
 (in-package "SB!VM")
 
-(file-comment
- "$Header$")
-
 ;;; We can load/store into fp registers through the top of
 ;;; stack %st(0) (fr0 here). Loads imply a push to an empty register
 ;;; which then changes all the reg numbers. These macros help manage that.
 ;;;; macros to generate useful values
 
 (defmacro load-symbol (reg symbol)
-  `(inst mov ,reg (+ *nil-value* (static-symbol-offset ,symbol))))
+  `(inst mov ,reg (+ nil-value (static-symbol-offset ,symbol))))
 
 (defmacro load-symbol-value (reg symbol)
   `(inst mov ,reg
         (make-ea :dword
-                 :disp (+ *nil-value*
+                 :disp (+ nil-value
                           (static-symbol-offset ',symbol)
                           (ash symbol-value-slot word-shift)
                           (- other-pointer-type)))))
@@ -81,7 +78,7 @@
 (defmacro store-symbol-value (reg symbol)
   `(inst mov
         (make-ea :dword
-                 :disp (+ *nil-value*
+                 :disp (+ nil-value
                           (static-symbol-offset ',symbol)
                           (ash symbol-value-slot word-shift)
                           (- other-pointer-type)))
 ;;; on DYNAMIC-EXTENT would probably give a better payoff.)
 (defvar *maybe-use-inline-allocation* t)
 
-;;; Call into C.
+;;; Emit code to allocate an object with a size in bytes given by
+;;; Size. The size may be an integer of a TN. If Inline is a VOP
+;;; node-var then it is used to make an appropriate speed vs size
+;;; decision.
 ;;;
-;;; FIXME: Except when inline allocation is enabled..?
+;;; FIXME: We call into C.. except when inline allocation is enabled..?
 ;;;
 ;;; FIXME: Also, calls to
 ;;; ALLOCATION are always wrapped with PSEUDO-ATOMIC -- why? Is it to
 ;;; formalized, in documentation and in macro definition,
 ;;; with the macro becoming e.g. PSEUDO-ATOMIC-ALLOCATION.
 (defun allocation (alloc-tn size &optional inline)
-  #!+sb-doc
-  "Emit code to allocate an object with a size in bytes given by Size.
-   The size may be an integer of a TN.
-   If Inline is a VOP node-var then it is used to make an appropriate
-   speed vs size decision."
   (flet ((load-size (dst-tn size)
           (unless (and (tn-p size) (location= alloc-tn size))
             (inst mov dst-tn size))))
     (inst lea ,result-tn
      (make-ea :byte :base ,result-tn :disp other-pointer-type))
     ,@forms))
-
 \f
 ;;;; error code
 
 ;;; something to compile with :SB-NO-PSEUDO-ATOMIC.
 (defvar *enable-pseudo-atomic* t)
 
-;;; FIXME: *PSEUDO-ATOMIC-ATOMIC* and *PSEUDO-ATOMIC-INTERRUPTED*
-;;; should be in package SB!VM or SB!KERNEL, not SB!IMPL.
-
 ;;; FIXME: *PSEUDO-ATOMIC-FOO* could be made into *PSEUDO-ATOMIC-BITS*,
 ;;; set with a single operation and cleared with SHR *PSEUDO-ATOMIC-BITS*,-2;
 ;;; the ATOMIC bit is bit 0, the INTERRUPTED bit is bit 1, and you check
        (when *enable-pseudo-atomic*
         ;; FIXME: The MAKE-EA noise should become a MACROLET macro or
         ;; something. (perhaps SVLB, for static variable low byte)
-        (inst mov (make-ea :byte :disp (+ *nil-value*
+        (inst mov (make-ea :byte :disp (+ nil-value
                                           (static-symbol-offset
-                                           'sb!impl::*pseudo-atomic-interrupted*)
+                                           '*pseudo-atomic-interrupted*)
                                           (ash symbol-value-slot word-shift)
                                           ;; FIXME: Use mask, not minus, to
                                           ;; take out type bits.
                                           (- other-pointer-type)))
               0)
-        (inst mov (make-ea :byte :disp (+ *nil-value*
+        (inst mov (make-ea :byte :disp (+ nil-value
                                           (static-symbol-offset
-                                           'sb!impl::*pseudo-atomic-atomic*)
+                                           '*pseudo-atomic-atomic*)
                                           (ash symbol-value-slot word-shift)
                                           (- other-pointer-type)))
               (fixnumize 1)))
        ,@forms
        (when *enable-pseudo-atomic*
-        (inst mov (make-ea :byte :disp (+ *nil-value*
+        (inst mov (make-ea :byte :disp (+ nil-value
                                           (static-symbol-offset
-                                           'sb!impl::*pseudo-atomic-atomic*)
+                                           '*pseudo-atomic-atomic*)
                                           (ash symbol-value-slot word-shift)
                                           (- other-pointer-type)))
               0)
         ;; are pending? I wish I could find the documentation for
         ;; pseudo-atomics.. -- WHN 19991130
         (inst cmp (make-ea :byte
-                           :disp (+ *nil-value*
+                           :disp (+ nil-value
                                     (static-symbol-offset
-                                     'sb!impl::*pseudo-atomic-interrupted*)
+                                     '*pseudo-atomic-interrupted*)
                                     (ash symbol-value-slot word-shift)
                                     (- other-pointer-type)))
               0)