Fix a typo in the block comment on encoding/decoding universal times
[sbcl.git] / src / compiler / generic / vm-type.lisp
index ccacc48..5764891 100644 (file)
@@ -78,7 +78,7 @@
 ;;; FIXME: see also DEFCONSTANT MAXIMUM-BIGNUM-LENGTH in
 ;;; src/code/bignum.lisp.  -- CSR, 2004-07-19
 (sb!xc:deftype bignum-index ()
-  '(integer 0 #.(1- (ash 1 (- 32 sb!vm:n-widetag-bits)))))
+  '(integer 0 #.(1- (ash 1 (- sb!vm:n-word-bits sb!vm:n-widetag-bits)))))
 \f
 ;;;; hooks into the type system
 
 
 ;;; If TYPE has a CHECK-xxx template, but doesn't have a corresponding
 ;;; PRIMITIVE-TYPE, then return the template's name. Otherwise, return NIL.
+;;; The second value is T if the template needs TYPE to be passed.
 (defun hairy-type-check-template-name (type)
   (declare (type ctype type))
   (typecase type
            #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
            ((type= type (specifier-type '(unsigned-byte 64)))
             'sb!c:check-unsigned-byte-64)
+           #!+(or x86 x86-64) ; Not implemented yet on other platforms
+           ((and (eql (numeric-type-class type) 'integer)
+                 (eql (numeric-type-low type) 0)
+                 (fixnump (numeric-type-high type)))
+            (values 'sb!c:check-mod-fixnum t))
            (t nil)))
     (fun-type
      'sb!c:check-fun)