Revert "Clean up %more-arg-values."
[sbcl.git] / src / compiler / alpha / values.lisp
index 766f1f0..c0fc37f 100644 (file)
 ;;; them as function arguments.
 (define-vop (%more-arg-values)
   (:args (context :scs (descriptor-reg any-reg) :target src)
+         (skip :scs (any-reg zero immediate))
          (num :scs (any-reg) :target count))
-  (:arg-types * positive-fixnum)
+  (:arg-types * positive-fixnum positive-fixnum)
   (:temporary (:sc any-reg :from (:argument 0)) src)
   (:temporary (:sc any-reg :from (:argument 2)) dst)
   (:temporary (:sc descriptor-reg :from (:argument 1)) temp)
   (:results (start :scs (any-reg))
             (count :scs (any-reg)))
   (:generator 20
-    (move context src)
+    (sc-case skip
+      (zero
+       (move context src))
+      (immediate
+       (inst lda src (* (tn-value skip) n-word-bytes) context))
+      (any-reg
+       (inst addq context skip src)))
     (move num count)
     (inst move csp-tn start)
     (inst beq num done)