0.pre8.34
[sbcl.git] / src / compiler / x86 / system.lisp
index 4dfe83b..4291164 100644 (file)
@@ -61,8 +61,8 @@
     DONE
     (inst movzx result al-tn)))
 \f
-(define-vop (function-subtype)
-  (:translate function-subtype)
+(define-vop (fun-subtype)
+  (:translate fun-subtype)
   (:policy :fast-safe)
   (:args (function :scs (descriptor-reg)))
   (:temporary (:sc byte-reg :from (:eval 0) :to (:eval 1)) temp)
@@ -72,8 +72,8 @@
     (load-type temp function (- fun-pointer-lowtag))
     (inst movzx result temp)))
 
-(define-vop (set-function-subtype)
-  (:translate (setf function-subtype))
+(define-vop (set-fun-subtype)
+  (:translate (setf fun-subtype))
   (:policy :fast-safe)
   (:args (type :scs (unsigned-reg) :target eax)
         (function :scs (descriptor-reg)))
   (:translate binding-stack-pointer-sap)
   (:policy :fast-safe)
   (:generator 1
-    (load-symbol-value int *binding-stack-pointer*)))
+    (load-tl-symbol-value int *binding-stack-pointer*)))
 
 (defknown (setf binding-stack-pointer-sap)
     (system-area-pointer) system-area-pointer ())
   (:arg-types system-area-pointer)
   (:results (int :scs (sap-reg)))
   (:result-types system-area-pointer)
+  #!+sb-thread (:temporary (:sc any-reg) temp)
   (:translate (setf binding-stack-pointer-sap))
   (:policy :fast-safe)
   (:generator 1
-    (store-symbol-value new-value *binding-stack-pointer*)
+    (store-tl-symbol-value new-value *binding-stack-pointer* temp)
     (move int new-value)))
 
 (define-vop (control-stack-pointer-sap)
     (inst lea sap (make-ea :byte :base code :index sap :scale 4
                           :disp (- other-pointer-lowtag)))))
 
-(define-vop (compute-function)
+(define-vop (compute-fun)
   (:args (code :scs (descriptor-reg) :to (:result 0))
         (offset :scs (signed-reg unsigned-reg) :to (:result 0)))
   (:arg-types * positive-fixnum)
 ;;; The closure function slot is a pointer to raw code on X86 instead
 ;;; of a pointer to the code function object itself. This VOP is used
 ;;; to reference the function object given the closure object.
-(def-source-transform %closure-fun (closure)
+(define-source-transform %closure-fun (closure)
   `(%simple-fun-self ,closure))
 
-(def-source-transform %funcallable-instance-fun (fin)
+(define-source-transform %funcallable-instance-fun (fin)
   `(%simple-fun-self ,fin))
 
 (define-vop (%set-fun-self)
 \f
 ;;;; other miscellaneous VOPs
 
-(defknown sb!unix::do-pending-interrupt () (values))
-(define-vop (sb!unix::do-pending-interrupt)
+(defknown sb!unix::receive-pending-interrupt () (values))
+(define-vop (sb!unix::receive-pending-interrupt)
   (:policy :fast-safe)
-  (:translate sb!unix::do-pending-interrupt)
+  (:translate sb!unix::receive-pending-interrupt)
   (:generator 1
     (inst break pending-interrupt-trap)))
 
+#!+sb-thread
+(defknown current-thread-offset-sap ((unsigned-byte 32))  
+  system-area-pointer (flushable))
+
+#!+sb-thread
+(define-vop (current-thread-offset-sap)
+  (:results (sap :scs (sap-reg)))
+  (:result-types system-area-pointer)
+  (:translate current-thread-offset-sap)
+  (:args (n :scs (unsigned-reg) :target sap))
+  (:arg-types unsigned-num)
+  (:policy :fast-safe)
+  (:generator 2
+    (inst fs-segment-prefix)
+    (inst mov sap (make-ea :dword :disp 0 :index n :scale 4))))
+
 (define-vop (halt)
   (:generator 1
     (inst break halt-trap)))