[armedbear-cvs] r11564 - trunk/abcl/src/org/armedbear/lisp

Erik Huelsmann ehuelsmann at common-lisp.net
Sun Jan 18 18:34:54 UTC 2009


Author: ehuelsmann
Date: Sun Jan 18 18:34:53 2009
New Revision: 11564

Log:
Fix compiler issue found by compiling AP5: Instead of calculating the true upper bound
(which may become a number as big as 2^most-positive-fixnum), return '* as the upper bound
instead. The number won't fit into a fixnum anyway.

Modified:
   trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp

Modified: trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp	(original)
+++ trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp	Sun Jan 18 18:34:53 2009
@@ -6139,7 +6139,8 @@
 	      ;; Everything is non-negative.
 	      (setf result-type (list 'INTEGER
 				      (ash low1 low2)
-				      (ash high1 high2))))
+                                      (if (<= 64 high2)
+                                          '* (ash high1 high2)))))
 	     ((and (>= low1 0) (>= high1 0) (<= low2 0) (<= high2 0))
 	      ;; Negative (or zero) second argument.
 	      (setf result-type (list 'INTEGER




More information about the armedbear-cvs mailing list