X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fassembly%2Fx86%2Fassem-rtns.lisp;h=930c2e7347809dfb999d6bd17cc7f419a0bceabc;hb=a6b91f356da1b5ae2987f79db9bd137970512959;hp=612e415e0202737f0690b8e0fbd107f2bf4cf648;hpb=45b5a21316381ecab98a0e5a5296294e044170e8;p=sbcl.git diff --git a/src/assembly/x86/assem-rtns.lisp b/src/assembly/x86/assem-rtns.lisp index 612e415..930c2e7 100644 --- a/src/assembly/x86/assem-rtns.lisp +++ b/src/assembly/x86/assem-rtns.lisp @@ -54,9 +54,7 @@ (inst lea edi (make-ea :dword :base ebx :disp (- n-word-bytes))) (inst rep) (inst movs :dword) - - ;; solaris requires DF being zero. - #!+sunos (inst cld) + (inst cld) ;; Restore the count. (inst mov ecx edx) @@ -153,9 +151,7 @@ (inst sub esi (fixnumize 1)) (inst rep) (inst movs :dword) - - ;; solaris requires DF being zero. - #!+sunos (inst cld) + (inst cld) ;; Load the register arguments carefully. (loadw edx ebp-tn -1) @@ -175,10 +171,7 @@ (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-for-object-slot eax closure-fun-slot fun-pointer-lowtag)) ;; All the arguments fit in registers, so load them. REGISTER-ARGS @@ -194,9 +187,7 @@ (pushw ebp-tn -2) ;; And away we go. - (inst jmp (make-ea :byte :base eax - :disp (- (* closure-fun-slot n-word-bytes) - fun-pointer-lowtag)))) + (inst jmp (make-ea-for-object-slot eax closure-fun-slot fun-pointer-lowtag))) (define-assembly-routine (throw (:return-style :none)) @@ -211,7 +202,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)) @@ -239,7 +230,7 @@ (:temp uwp unsigned-reg esi-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)) @@ -270,8 +261,7 @@ ;; be saved on the stack: the block in edx-tn, start in ebx-tn, and ;; count in ecx-tn. - (inst jmp (make-ea :byte :base block - :disp (* unwind-block-entry-pc-slot n-word-bytes)))) + (inst jmp (make-ea-for-object-slot block unwind-block-entry-pc-slot 0))) ;;;; Win32 non-local exit noise @@ -285,7 +275,7 @@ (:arg count (any-reg descriptor-reg) ecx-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)) @@ -345,8 +335,7 @@ ;; Nlx-entry expects the arg start in ebx-tn and the arg count ;; in ecx-tn. Fortunately, that's where they are already. - (inst jmp (make-ea :byte :base block - :disp (* unwind-block-entry-pc-slot n-word-bytes)))) + (inst jmp (make-ea-for-object-slot block unwind-block-entry-pc-slot 0))) ;;;; Win32 UWP block SEH interface. @@ -430,8 +419,7 @@ (inst xor ecx-tn ecx-tn) (inst mov ebx-tn ebp-tn) (loadw ebp-tn block unwind-block-current-cont-slot) - (inst jmp (make-ea :byte :base block - :disp (* unwind-block-entry-pc-slot n-word-bytes)))) + (inst jmp (make-ea-for-object-slot block unwind-block-entry-pc-slot 0))) #!+win32 (define-assembly-routine (continue-unwind