1.0.20.23: get rid of IGNORE-ERRORS in SB-INTROSPECT
[sbcl.git] / src / compiler / x86 / c-call.lisp
index f6de0de..7f9277a 100644 (file)
 (define-vop (alloc-number-stack-space)
   (:info amount)
   (:results (result :scs (sap-reg any-reg)))
+  (:result-types system-area-pointer)
   (:generator 0
     (aver (location= result esp-tn))
     (unless (zerop amount)
   (:info amount)
   #!+sb-thread (:temporary (:sc unsigned-reg) temp)
   (:results (result :scs (sap-reg any-reg)))
+  (:result-types system-area-pointer)
   #!+sb-thread
   (:generator 0
     (aver (not (location= result esp-tn)))
       (let ((delta (logandc2 (+ amount 3) 3)))
         (inst mov temp
               (make-ea-for-symbol-tls-index *alien-stack*))
-        (inst fs-segment-prefix)
-        (inst sub (make-ea :dword :base temp) delta)))
+        (inst sub (make-ea :dword :base temp) delta :fs)))
     (load-tl-symbol-value result *alien-stack*))
   #!-sb-thread
   (:generator 0
       (let ((delta (logandc2 (+ amount 3) 3)))
         (inst mov temp
               (make-ea-for-symbol-tls-index *alien-stack*))
-        (inst fs-segment-prefix)
-        (inst add (make-ea :dword :base temp) delta))))
+        (inst add (make-ea :dword :base temp) delta :fs))))
   #!-sb-thread
   (:generator 0
     (unless (zerop amount)
         (inst add (make-ea-for-symbol-value *alien-stack*)
               delta)))))
 
-;;; these are not strictly part of the c-call convention, but are
-;;; needed for the WITH-PRESERVED-POINTERS macro used for "locking
-;;; down" lisp objects so that GC won't move them while foreign
-;;; functions go to work.
-
-(define-vop (push-word-on-c-stack)
-    (:translate push-word-on-c-stack)
-  (:args (val :scs (sap-reg)))
-  (:policy :fast-safe)
-  (:arg-types system-area-pointer)
-  (:generator 2
-    (inst push val)))
-
-(define-vop (pop-words-from-c-stack)
-    (:translate pop-words-from-c-stack)
-  (:args)
-  (:arg-types (:constant (unsigned-byte 29)))
-  (:info number)
+;;; not strictly part of the c-call convention, but needed for the
+;;; WITH-PINNED-OBJECTS macro used for "locking down" lisp objects so
+;;; that GC won't move them while foreign functions go to work.
+(define-vop (touch-object)
+  (:translate touch-object)
+  (:args (object))
+  (:ignore object)
   (:policy :fast-safe)
-  (:generator 2
-    (inst add esp-tn (fixnumize number))))
+  (:arg-types t)
+  (:generator 0))
 
 #-sb-xc-host
 (defun alien-callback-accessor-form (type sp offset)