Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv11680
Modified Files: arithmetic-macros.lisp Log Message: Cleaned up most ":int 107" instances. Now, we mostly use the semi-standardized ":int 64" which means that the value in EAX wasn't integer. The default interrupt-handler understands this and signals the appropriate error.
Date: Tue Jul 20 01:53:50 2004 Author: ffjeld
Index: movitz/losp/muerte/arithmetic-macros.lisp diff -u movitz/losp/muerte/arithmetic-macros.lisp:1.3 movitz/losp/muerte/arithmetic-macros.lisp:1.4 --- movitz/losp/muerte/arithmetic-macros.lisp:1.3 Sun Jul 18 17:14:53 2004 +++ movitz/losp/muerte/arithmetic-macros.lisp Tue Jul 20 01:53:50 2004 @@ -10,7 +10,7 @@ ;;;; Author: Frode Vatvedt Fjeld frodef@acm.org ;;;; Created at: Sat Jul 17 13:42:46 2004 ;;;; -;;;; $Id: arithmetic-macros.lisp,v 1.3 2004/07/19 00:14:53 ffjeld Exp $ +;;;; $Id: arithmetic-macros.lisp,v 1.4 2004/07/20 08:53:50 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -93,7 +93,6 @@ (max (movitz:movitz-eval max env))) (check-type min fixnum) (check-type max fixnum) - ;; (warn "~D -- ~D" min max) (cond ((movitz:movitz-constantp x env) (<= min (movitz:movitz-eval x env) max)) @@ -108,14 +107,14 @@ `(with-inline-assembly (:returns :boolean-cf=1) (:compile-form (:result-mode :eax) ,x) (:testb ,movitz::+movitz-fixnum-zmask+ :al) - (:jnz '(:sub-program () (:int 107))) + (:jnz '(:sub-program () (:int 64))) (:cmpl ,(* (1+ max) movitz::+movitz-fixnum-factor+) :eax))) (t `(do-result-mode-case () (:booleans (with-inline-assembly (:returns :boolean-zf=0) (:compile-form (:result-mode :eax) ,x) (:testb ,movitz::+movitz-fixnum-zmask+ :al) - (:jnz '(:sub-program () (:int 107))) + (:jnz '(:sub-program () (:int 64))) (:cmpl ,(* min movitz::+movitz-fixnum-factor+) :eax) (:sbbl :ecx :ecx) (:cmpl ,(* (1+ max) movitz::+movitz-fixnum-factor+) :eax) @@ -123,7 +122,7 @@ (t (with-inline-assembly (:returns (:boolean-ecx 1 0)) (:compile-form (:result-mode :eax) ,x) (:testb ,movitz::+movitz-fixnum-zmask+ :al) - (:jnz '(:sub-program () (:int 107))) + (:jnz '(:sub-program () (:int 64))) (:cmpl ,(* min movitz::+movitz-fixnum-factor+) :eax) (:sbbl :ecx :ecx) (:cmpl ,(* (1+ max) movitz::+movitz-fixnum-factor+) :eax) @@ -132,22 +131,21 @@ (and (<= ,min x) (<= x ,max))))))
(define-compiler-macro below (&whole form x max &environment env) - (let ((below-not-integer (gensym "below-not-integer-"))) - (if (movitz:movitz-constantp max env) - `(with-inline-assembly (:returns :boolean-cf=1) - (:compile-form (:result-mode :eax) ,x) - (:testb ,movitz::+movitz-fixnum-zmask+ :al) - (:jnz '(:sub-program (,below-not-integer) (:int 107))) - (:cmpl ,(* (movitz:movitz-eval max env) - movitz::+movitz-fixnum-factor+) - :eax)) + (if (movitz:movitz-constantp max env) `(with-inline-assembly (:returns :boolean-cf=1) - (:compile-two-forms (:eax :ebx) ,x ,max) - (:movl :eax :ecx) - (:orl :ebx :ecx) - (:testb ,movitz::+movitz-fixnum-zmask+ :cl) - (:jnz '(:sub-program (,below-not-integer) (:int 107))) - (:cmpl :ebx :eax))))) + (:compile-form (:result-mode :eax) ,x) + (:testb ,movitz::+movitz-fixnum-zmask+ :al) + (:jnz '(:sub-program () (:int 64))) + (:cmpl ,(* (movitz:movitz-eval max env) + movitz::+movitz-fixnum-factor+) + :eax)) + `(with-inline-assembly (:returns :boolean-cf=1) + (:compile-two-forms (:eax :ebx) ,x ,max) + (:testb ,movitz::+movitz-fixnum-zmask+ :al) + (:jnz '(:sub-program () (:int 64))) + (:testb ,movitz::+movitz-fixnum-zmask+ :bl) + (:jnz '(:sub-program () (:movl :ebx :eax) (:int 64))) + (:cmpl :ebx :eax))))
(define-compiler-macro zerop (number) `(= 0 ,number))