![](https://secure.gravatar.com/avatar/cc13150cabd87c26f35cb4b0ea78d66d.jpg?s=120&d=mm&r=g)
Raymond Toy pushed to branch sparc64-dev at cmucl / cmucl Commits: a94d7f1f by Raymond Toy at 2018-01-06T18:32:24-08:00 Fix stack computations in COPY-MORE-ARGS Fixnums aren't 8-byte word offsets, so we need to shift fixnums left by 1 to get a word offset when computing new stack locations. - - - - - 11e8aafe by Raymond Toy at 2018-01-06T19:02:09-08:00 Fix stack computations in MORE-ARG-CONTEXT Fixnums aren't 8-byte word offsets, so we need to shift fixnums left by 1 to get a word offset when computing new stack locations. - - - - - 1 changed file: - src/compiler/sparc64/call.lisp Changes: ===================================== src/compiler/sparc64/call.lisp ===================================== --- a/src/compiler/sparc64/call.lisp +++ b/src/compiler/sparc64/call.lisp @@ -1141,12 +1141,17 @@ default-value-8 ;; Allocate the space on the stack. (cond ((zerop fixed) (inst cmp nargs-tn) + ;; Add nargs-tn to csp-tn twice to get the right address + ;; because fixnum values need to be multiplied by two to + ;; get the right word address/offset. + (inst add csp-tn csp-tn nargs-tn) (inst b :eq done) (inst add csp-tn csp-tn nargs-tn)) (t (inst subcc count nargs-tn (fixnumize fixed)) (inst b :le done) (inst nop) + (inst add csp-tn csp-tn count) (inst add csp-tn csp-tn count))) (when (< fixed register-arg-count) ;; We must stop when we run out of stack args, not when we run out of @@ -1158,6 +1163,7 @@ default-value-8 (move dst csp-tn) ;; Initialize src to be end of args. (inst add src cfp-tn nargs-tn) + (inst add src cfp-tn nargs-tn) (emit-label loop) ;; *--dst = *--src, --count @@ -1271,7 +1277,9 @@ default-value-8 (:generator 5 (emit-not-implemented) (inst sub count supplied (fixnumize fixed)) - (inst sub context csp-tn count))) + ;; Subtract count twice to get the correct word offset. + (inst sub context csp-tn count) + (inst sub context context count))) ;;; Signal wrong argument count error if Nargs isn't = to Count. View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/5fa489dfddcbaf53394a1b11a... --- View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/5fa489dfddcbaf53394a1b11a... You're receiving this email because of your account on gitlab.common-lisp.net.