(: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))
(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)
(loadw esi ebx -3)
;; And back we go.
+ (inst stc)
(inst jmp eax)
;; Handle the register arg cases.
(inst mov edx nil-value)
(inst mov edi edx)
(inst mov esi edx)
+ (inst stc)
(inst jmp eax)
ONE-VALUE ; Note: we can get this, because the return-multiple vop
; doesn't check for this case when size > speed.
(loadw edx esi -1)
(inst mov rsp-tn ebx)
- (inst add eax 3)
+ (inst clc)
(inst jmp eax)
TWO-VALUES
(loadw edi esi -2)
(inst mov esi nil-value)
(inst lea rsp-tn (make-ea :qword :base ebx :disp (* -2 n-word-bytes)))
+ (inst stc)
(inst jmp eax)
THREE-VALUES
(loadw edi esi -2)
(loadw esi esi -3)
(inst lea rsp-tn (make-ea :qword :base ebx :disp (* -3 n-word-bytes)))
+ (inst stc)
(inst jmp eax))
\f
;;;; TAIL-CALL-VARIABLE
(move ecx esi)
(inst sub ecx rsp-tn)
- ;; Check for all the args fitting the the registers.
+ ;; Check for all the args fitting the registers.
(inst cmp ecx (fixnumize 3))
(inst jmp :le REGISTER-ARGS)
(inst sub esi (fixnumize 1))
(inst rep)
(inst movs :qword)
+ (inst cld)
;; Load the register arguments carefully.
(loadw edx rbp-tn -1)
(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
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))
(: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))