From: Nathan Froyd Date: Tue, 7 Mar 2006 18:47:37 +0000 (+0000) Subject: 0.9.10.21: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=bf7d6505029cf3f79189a57b48cc1706068d78bc;p=sbcl.git 0.9.10.21: Add CMOV micro-optimization in GENERATE-CALL-SEQUENCE, too. --- diff --git a/src/assembly/x86-64/support.lisp b/src/assembly/x86-64/support.lisp index 96f1ef3..fb18d8a 100644 --- a/src/assembly/x86-64/support.lisp +++ b/src/assembly/x86-64/support.lisp @@ -24,9 +24,7 @@ (make-ea :qword :disp (make-fixup ',name :assembly-routine))) (inst call temp-reg-tn) (note-this-location ,vop :single-value-return) - (inst jmp :nc single-value) - (move rsp-tn rbx-tn) - single-value) + (inst cmov :c rsp-tn rbx-tn)) '((:save-p :compute-only)))) (:none (values diff --git a/src/assembly/x86/support.lisp b/src/assembly/x86/support.lisp index 527e326..1b814f3 100644 --- a/src/assembly/x86/support.lisp +++ b/src/assembly/x86/support.lisp @@ -34,9 +34,14 @@ `((note-this-location ,vop :call-site) (inst call (make-fixup ',name :assembly-routine)) (note-this-location ,vop :single-value-return) - (inst jmp :nc single-value) - (move esp-tn ebx-tn) - single-value) + (cond + ((member :cmov *backend-subfeatures*) + (inst cmov :c esp-tn ebx-tn)) + (t + (let ((single-value (gen-label))) + (inst jmp :nc single-value) + (move esp-tn ebx-tn) + (emit-label single-value))))) '((:save-p :compute-only)))))) (!def-vm-support-routine generate-return-sequence (style) diff --git a/version.lisp-expr b/version.lisp-expr index 8991c75..c43b287 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.10.20" +"0.9.10.21"