X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fcall.lisp;h=bdd1d54134416934ae0b6528865dbe4bc08cb7dd;hb=70c6facc145eaf5ca368528b04df63f730746b1f;hp=6b884491082690b2199884713ad3c08242832d46;hpb=a6c61ba848e9ed11118b6fb579fe237d0b1cf9c6;p=sbcl.git diff --git a/src/compiler/x86/call.lisp b/src/compiler/x86/call.lisp index 6b88449..bdd1d54 100644 --- a/src/compiler/x86/call.lisp +++ b/src/compiler/x86/call.lisp @@ -123,7 +123,7 @@ (:info start-lab copy-more-arg-follows) (:vop-var vop) (:generator 1 - (align n-lowtag-bits) + (emit-alignment n-lowtag-bits) (trace-table-entry trace-table-fun-prologue) (emit-label start-lab) ;; Skip space for the function header. @@ -364,7 +364,8 @@ ;; Restore EDI, and reset the stack. (emit-label restore-edi) (loadw edi-tn ebx-tn (frame-word-offset 1)) - (inst mov esp-tn ebx-tn)))) + (inst mov esp-tn ebx-tn) + (inst cld)))) (values)) ;;;; unknown values receiving @@ -1326,9 +1327,6 @@ (inst mov value (make-ea :dword :base object :index value)))) ;;; Turn more arg (context, count) into a list. -(defoptimizer (%listify-rest-args stack-allocate-result) ((&rest args)) - t) - (define-vop (listify-rest-args) (:translate %listify-rest-args) (:policy :safe) @@ -1353,8 +1351,7 @@ (inst jecxz done) (inst lea dst (make-ea :dword :base ecx :index ecx)) (maybe-pseudo-atomic stack-allocate-p - (allocation dst dst node stack-allocate-p) - (inst lea dst (make-ea :byte :base dst :disp list-pointer-lowtag)) + (allocation dst dst node stack-allocate-p list-pointer-lowtag) (inst shr ecx 2) ;; Set decrement mode (successive args at lower addresses) (inst std) @@ -1376,7 +1373,8 @@ (inst sub ecx 1) (inst jmp :nz loop) ;; NIL out the last cons. - (storew nil-value dst 1 list-pointer-lowtag)) + (storew nil-value dst 1 list-pointer-lowtag) + (inst cld)) (emit-label done)))) ;;; Return the location and size of the &MORE arg glob created by @@ -1420,7 +1418,7 @@ (:save-p :compute-only) (:generator 3 (let ((err-lab - (generate-error-code vop invalid-arg-count-error nargs))) + (generate-error-code vop 'invalid-arg-count-error nargs))) (if (zerop count) (inst test nargs nargs) ; smaller instruction (inst cmp nargs (fixnumize count))) @@ -1438,7 +1436,7 @@ (:vop-var vop) (:save-p :compute-only) (:generator 1000 - (error-call vop ,error ,@args))))) + (error-call vop ',error ,@args))))) (def arg-count-error invalid-arg-count-error sb!c::%arg-count-error nargs) (def type-check-error object-not-type-error sb!c::%type-check-error @@ -1463,10 +1461,9 @@ ;; register on -SB-THREAD. #!+sb-thread (progn - (inst fs-segment-prefix) (inst cmp (make-ea :dword :disp (* thread-stepping-slot n-word-bytes)) - nil-value)) + nil-value :fs)) #!-sb-thread (inst cmp (make-ea-for-symbol-value sb!impl::*stepping*) nil-value))