0.8.2.9:
[sbcl.git] / src / compiler / x86 / c-call.lisp
index 3a4542f..b85d5b9 100644 (file)
     (setf (result-state-num-results state) (1+ num-results))
     (my-make-wired-tn 'single-float 'single-reg (* num-results 2))))
 
-#+nil ;;pfw obsolete now?
-(define-alien-type-method (values :result-tn) (type state)
-  (mapcar (lambda (type)
-           (invoke-alien-type-method :result-tn type state))
-         (alien-values-type-values type)))
-
-;;; pfw - from alpha
 (define-alien-type-method (values :result-tn) (type state)
   (let ((values (alien-values-type-values type)))
-    (when (cdr values)
+    (when (> (length values) 2)
       (error "Too many result values from c-call."))
-    (when values
-      (invoke-alien-type-method :result-tn (car values) state))))
+    (mapcar (lambda (type)
+             (invoke-alien-type-method :result-tn type state))
+           values)))
 
 (!def-vm-support-routine make-call-out-tns (type)
   (let ((arg-state (make-arg-state)))
     (collect ((arg-tns))
-      (dolist #+nil ;; this reversed list seems to cause the alien botches!!
-       (arg-type (reverse (alien-fun-type-arg-types type)))
-       (arg-type (alien-fun-type-arg-types type))
+      (dolist (arg-type (alien-fun-type-arg-types type))
        (arg-tns (invoke-alien-type-method :arg-tn arg-type arg-state)))
       (values (my-make-wired-tn 'positive-fixnum 'any-reg esp-offset)
              (* (arg-state-stack-frame-size arg-state) n-word-bytes)