X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fcall.lisp;h=1b7d900a3e9154444c5e53dc1e27bb78afa17a12;hb=a6b91f356da1b5ae2987f79db9bd137970512959;hp=85d4452283d34ee0cdc7b410bf93f96455ecdc70;hpb=48ff891135e403e49037940bbad18d262e23df5e;p=sbcl.git diff --git a/src/compiler/x86/call.lisp b/src/compiler/x86/call.lisp index 85d4452..1b7d900 100644 --- a/src/compiler/x86/call.lisp +++ b/src/compiler/x86/call.lisp @@ -312,8 +312,6 @@ (inst mov eax-tn nil-value) (inst std) (inst mov ecx-tn (- nvals register-arg-count)) - ;; solaris requires DF being zero. - #!+sunos (inst cld) ;; Jump into the default loop. (inst jmp default-stack-vals) @@ -348,8 +346,6 @@ (inst std) (inst rep) (inst movs :dword) - ;; solaris requires DF being zero. - #!+sunos (inst cld) ;; Restore ESI. (loadw esi-tn ebx-tn (frame-word-offset 2)) ;; Now we have to default the remaining args. Find out how many. @@ -365,12 +361,11 @@ (emit-label default-stack-vals) (inst rep) (inst stos eax-tn) - ;; solaris requires DF being zero. - #!+sunos (inst cld) ;; 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 @@ -902,13 +897,11 @@ (note-this-location vop :call-site) (inst ,(if (eq return :tail) 'jmp 'call) - (make-ea :dword :base eax - :disp ,(if named - '(- (* fdefn-raw-addr-slot - n-word-bytes) - other-pointer-lowtag) - '(- (* closure-fun-slot n-word-bytes) - fun-pointer-lowtag)))) + ,(if named + '(make-ea-for-object-slot eax fdefn-raw-addr-slot + other-pointer-lowtag) + '(make-ea-for-object-slot eax closure-fun-slot + fun-pointer-lowtag))) ,@(ecase return (:fixed '((default-unknown-values vop values nvals))) @@ -1384,10 +1377,9 @@ (inst sub ecx 1) (inst jmp :nz loop) ;; NIL out the last cons. - (storew nil-value dst 1 list-pointer-lowtag)) - (emit-label done) - ;; solaris requires DF being zero. - #!+sunos (inst cld)))) + (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 ;;; COPY-MORE-ARG. SUPPLIED is the total number of arguments supplied @@ -1430,7 +1422,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))) @@ -1448,7 +1440,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 @@ -1478,11 +1470,7 @@ :disp (* thread-stepping-slot n-word-bytes)) nil-value)) #!-sb-thread - (inst cmp (make-ea :dword - :disp (+ nil-value (static-symbol-offset - 'sb!impl::*stepping*) - (* symbol-value-slot n-word-bytes) - (- other-pointer-lowtag))) + (inst cmp (make-ea-for-symbol-value sb!impl::*stepping*) nil-value)) (define-vop (step-instrument-before-vop)