X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fppc%2Fvalues.lisp;h=ddead7c356fe09189037266c447a081f9bca6df9;hb=9304704f68a18894fa8eb985b387465e5d25e1d5;hp=c3b2340335e885583b646403a281e6b67920b6c6;hpb=16a6592367eec7c5e9da668ec42fd260e7705b0c;p=sbcl.git diff --git a/src/compiler/ppc/values.lisp b/src/compiler/ppc/values.lisp index c3b2340..ddead7c 100644 --- a/src/compiler/ppc/values.lisp +++ b/src/compiler/ppc/values.lisp @@ -2,7 +2,7 @@ ;;; Written by Rob MacLachlan ;;; ;;; Converted for SPARC by William Lott. -;;; +;;; (in-package "SB!VM") @@ -58,22 +58,22 @@ (define-vop (push-values) (:args (vals :more t)) (:results (start :scs (any-reg) :from :load) - (count :scs (any-reg))) + (count :scs (any-reg))) (:info nvals) (:temporary (:scs (descriptor-reg)) temp) (:generator 20 (inst mr start csp-tn) (inst addi csp-tn csp-tn (* nvals n-word-bytes)) (do ((val vals (tn-ref-across val)) - (i 0 (1+ i))) - ((null val)) + (i 0 (1+ i))) + ((null val)) (let ((tn (tn-ref-tn val))) - (sc-case tn - (descriptor-reg - (storew tn start i)) - (control-stack - (load-stack-tn temp tn) - (storew temp start i))))) + (sc-case tn + (descriptor-reg + (storew tn start i)) + (control-stack + (load-stack-tn temp tn) + (storew temp start i))))) (inst lr count (fixnumize nvals)))) ;;; Push a list of values on the stack, returning Start and Count as used in @@ -84,7 +84,7 @@ (:arg-types list) (:policy :fast-safe) (:results (start :scs (any-reg)) - (count :scs (any-reg))) + (count :scs (any-reg))) (:temporary (:scs (descriptor-reg) :type list :from (:argument 0)) list) (:temporary (:scs (descriptor-reg)) temp) (:temporary (:scs (non-descriptor-reg)) ndescr) @@ -92,7 +92,7 @@ (:save-p :compute-only) (:generator 0 (let ((loop (gen-label)) - (done (gen-label))) + (done (gen-label))) (move list arg) (move start csp-tn) @@ -105,7 +105,7 @@ (inst addi csp-tn csp-tn n-word-bytes) (storew temp csp-tn -1) (test-type list loop nil (list-pointer-lowtag) :temp ndescr) - (error-call vop bogus-arg-to-values-list-error list) + (error-call vop 'bogus-arg-to-values-list-error list) (emit-label done) (inst sub count csp-tn start)))) @@ -116,23 +116,16 @@ ;;; (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 positive-fixnum) + (num :scs (any-reg) :target count)) + (:arg-types * 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) (:temporary (:sc any-reg) i) (:results (start :scs (any-reg)) - (count :scs (any-reg))) + (count :scs (any-reg))) (:generator 20 - (sc-case skip - (zero - (inst mr src context)) - (immediate - (inst addi src context (* (tn-value skip) n-word-bytes))) - (any-reg - (inst add src context skip))) + (inst mr src context) (inst mr. count num) (inst mr start csp-tn) (inst beq done)