X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fx86-64%2Fassem-rtns.lisp;h=dea6cbb3f02feba64365ef0f7d265817f2af8105;hb=ed891a4fd882d1b9fe066ab14bcf2107aea95baa;hp=0b2f65e30a964bc3bda9f73d9fa6374e8cae1374;hpb=8643c93d4db277f6e1cb880a42407ff29e19f618;p=sbcl.git diff --git a/src/assembly/x86-64/assem-rtns.lisp b/src/assembly/x86-64/assem-rtns.lisp index 0b2f65e..dea6cbb 100644 --- a/src/assembly/x86-64/assem-rtns.lisp +++ b/src/assembly/x86-64/assem-rtns.lisp @@ -31,7 +31,7 @@ (:temp edi unsigned-reg rdi-offset)) ;; Pick off the cases where everything fits in register args. - (inst jecxz ZERO-VALUES) + (inst jrcxz ZERO-VALUES) (inst cmp ecx (fixnumize 1)) (inst jmp :e ONE-VALUE) (inst cmp ecx (fixnumize 2)) @@ -54,6 +54,7 @@ (inst lea edi (make-ea :qword :base ebx :disp (- n-word-bytes))) (inst rep) (inst movs :qword) + (inst cld) ;; Restore the count. (inst mov ecx edx) @@ -150,6 +151,7 @@ (inst sub esi (fixnumize 1)) (inst rep) (inst movs :qword) + (inst cld) ;; Load the register arguments carefully. (loadw edx rbp-tn -1) @@ -169,10 +171,10 @@ (inst push ebx) ;; And jump into the function. - (inst jmp - (make-ea :byte :base eax - :disp (- (* closure-fun-slot n-word-bytes) - fun-pointer-lowtag))) + (inst jmp + (make-ea :byte :base eax + :disp (- (* closure-fun-slot n-word-bytes) + fun-pointer-lowtag))) ;; All the arguments fit in registers, so load them. REGISTER-ARGS @@ -205,7 +207,7 @@ LOOP - (let ((error (generate-error-code nil unseen-throw-tag-error target))) + (let ((error (generate-error-code nil 'unseen-throw-tag-error target))) (inst or catch catch) ; check for NULL pointer (inst jmp :z error)) @@ -232,7 +234,7 @@ (:temp uwp unsigned-reg rsi-offset)) (declare (ignore start count)) - (let ((error (generate-error-code nil invalid-unwind-error))) + (let ((error (generate-error-code nil 'invalid-unwind-error))) (inst or block block) ; check for NULL pointer (inst jmp :z error))