;;; DEFVARs for these come later, after we have enough stuff defined.
(declaim (special *wild-type* *universal-type* *empty-type*))
\f
+(defvar *type-random-state*)
+
;;; the base class for the internal representation of types
(def!struct (ctype (:conc-name type-)
(:constructor nil)
(enumerable nil :read-only t)
;; an arbitrary hash code used in EQ-style hashing of identity
;; (since EQ hashing can't be done portably)
- (hash-value (random #.(ash 1 15))
+ (hash-value (random #.(ash 1 15)
+ (if (boundp '*type-random-state*)
+ *type-random-state*
+ (setf *type-random-state*
+ (make-random-state))))
:type (and fixnum unsigned-byte)
:read-only t)
;; Can this object contain other types? A global property of our