1.0.15.36: fix bug 423
[sbcl.git] / src / compiler / x86-64 / c-call.lisp
index afbe857..c9d4861 100644 (file)
                          :sc (sc-or-lose 'dword-reg)
                          :offset (tn-offset val)))))
 
+#-sb-xc-host
 (defun sign-extend (x)
   (declare (type (signed-byte 32) x))
   (sign-extend x))
 
+#+sb-xc-host
+(defun sign-extend (x)
+  (if (logbitp 31 x)
+      (dpb x (byte 32 0) -1)
+      x))
+
 (define-vop (foreign-symbol-sap)
   (:translate foreign-symbol-sap)
   (:policy :fast-safe)
 (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 rsp-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 rsp-tn)))