Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv6603
Modified Files: arithmetic-macros.lisp Log Message: *** empty log message *** Date: Tue Nov 23 17:00:21 2004 Author: ffjeld
Index: movitz/losp/muerte/arithmetic-macros.lisp diff -u movitz/losp/muerte/arithmetic-macros.lisp:1.8 movitz/losp/muerte/arithmetic-macros.lisp:1.9 --- movitz/losp/muerte/arithmetic-macros.lisp:1.8 Mon Oct 11 15:52:04 2004 +++ movitz/losp/muerte/arithmetic-macros.lisp Tue Nov 23 17:00:20 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.8 2004/10/11 13:52:04 ffjeld Exp $ +;;;; $Id: arithmetic-macros.lisp,v 1.9 2004/11/23 16:00:20 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -95,18 +95,21 @@ (movitz:movitz-constantp max env)) (let ((min (movitz:movitz-eval min env)) (max (movitz:movitz-eval max env))) - (check-type min fixnum) - (check-type max fixnum) (cond ((movitz:movitz-constantp x env) (<= min (movitz:movitz-eval x env) max)) ((< max min) - nil) + `(progn ,x nil)) ((= max min) `(= ,x ,min)) ((minusp min) `(let ((x ,x)) (and (<= ,min x) (<= x ,max)))) + ((or (not (typep min 'fixnum)) + (not (typep max 'fixnum))) + `(let ((x ,x)) + (and (<=%2op ,min x) + (<=%2op x ,max)))) ((= 0 min) `(with-inline-assembly (:returns :boolean-cf=1) (:compile-form (:result-mode :eax) ,x)