[movitz-cvs] CVS update: movitz/losp/muerte/arithmetic-macros.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Nov 23 16:00:25 UTC 2004


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 at 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)





More information about the Movitz-cvs mailing list