0.pre7.58:
[sbcl.git] / src / compiler / x86 / sap.lisp
index daf9be8..6eebdc6 100644 (file)
@@ -10,9 +10,6 @@
 ;;;; files for more information.
 
 (in-package "SB!VM")
-
-(file-comment
- "$Header$")
 \f
 ;;;; moves and coercions
 
@@ -22,7 +19,7 @@
   (:results (y :scs (sap-reg)))
   (:note "pointer to SAP coercion")
   (:generator 1
-    (loadw y x sap-pointer-slot other-pointer-type)))
+    (loadw y x sap-pointer-slot other-pointer-lowtag)))
 (define-move-vop move-to-sap :move
   (descriptor-reg) (sap-reg))
 
@@ -33,8 +30,8 @@
   (:note "SAP to pointer coercion")
   (:node-var node)
   (:generator 20
-    (with-fixed-allocation (res sap-type sap-size node)
-      (storew sap res sap-pointer-slot other-pointer-type))))
+    (with-fixed-allocation (res sap-widetag sap-size node)
+      (storew sap res sap-pointer-slot other-pointer-lowtag))))
 (define-move-vop move-from-sap :move
   (sap-reg) (descriptor-reg))
 
 \f
 ;;;; SAP-INT and INT-SAP
 
+;;; The function SAP-INT is used to generate an integer corresponding
+;;; to the system area pointer, suitable for passing to the kernel
+;;; interfaces (which want all addresses specified as integers). The
+;;; function INT-SAP is used to do the opposite conversion. The
+;;; integer representation of a SAP is the byte offset of the SAP from
+;;; the start of the address space.
 (define-vop (sap-int)
   (:args (sap :scs (sap-reg) :target int))
   (:arg-types system-area-pointer)
@@ -88,7 +91,6 @@
   (:policy :fast-safe)
   (:generator 1
     (move int sap)))
-
 (define-vop (int-sap)
   (:args (int :scs (unsigned-reg) :target sap))
   (:arg-types unsigned-num)
   (:result-types system-area-pointer)
   (:generator 2
     (move sap vector)
-    (inst add sap (- (* vector-data-offset word-bytes) other-pointer-type))))
+    (inst add sap (- (* vector-data-offset word-bytes) other-pointer-lowtag))))