0.8.21.50:
[sbcl.git] / src / compiler / x86-64 / c-call.lisp
index 05235ba..fe5502b 100644 (file)
   (:results (res :scs (sap-reg)))
   (:result-types system-area-pointer)
   (:generator 2
-   (inst lea res (make-fixup (extern-alien-name foreign-symbol) :foreign))))
+   (inst lea res (make-fixup foreign-symbol :foreign))))
 
 #!+linkage-table
 (define-vop (foreign-symbol-dataref-address)
   (:results (res :scs (sap-reg)))
   (:result-types system-area-pointer)
   (:generator 2
-   (inst mov res (make-fixup (extern-alien-name foreign-symbol) :foreign-dataref))))
+   (inst mov res (make-fixup foreign-symbol :foreign-dataref))))
 
 (define-vop (call-out)
   (:args (function :scs (sap-reg))
         (args :more t))
   (:results (results :more t))
   (:temporary (:sc unsigned-reg :offset rax-offset :to :result) rax)
-  (:temporary (:sc unsigned-reg :offset rcx-offset
-                  :from :eval :to :result) rcx)
   (:ignore results)
   (:vop-var vop)
   (:save-p t)
     ;; To give the debugger a clue. XX not really internal-error?
     (note-this-location vop :internal-error)
     ;; FLOAT15 needs to contain FP zero in Lispland
-    (inst xor rcx rcx)
-    (inst movd (make-random-tn :kind :normal 
+    (let ((float15 (make-random-tn :kind :normal 
                               :sc (sc-or-lose 'double-reg)
-                              :offset float15-offset)
-         rcx)))
+                              :offset float15-offset)))
+      (inst xorpd float15 float15))))
 
 (define-vop (alloc-number-stack-space)
   (:info amount)
   (:generator 0
     (aver (location= result rsp-tn))
     (unless (zerop amount)
-      (let ((delta (logandc2 (+ amount 3) 3)))
+      (let ((delta (logandc2 (+ amount 7) 7)))
        (inst sub rsp-tn delta)))
+    ;; C stack must be 16 byte aligned
+    (inst and rsp-tn #xfffffff0)
     (move result rsp-tn)))
 
 (define-vop (dealloc-number-stack-space)
   (:info amount)
   (:generator 0
     (unless (zerop amount)
-      (let ((delta (logandc2 (+ amount 3) 3)))
+      (let ((delta (logandc2 (+ amount 7) 7)))
        (inst add rsp-tn delta)))))
 
 (define-vop (alloc-alien-stack-space)