X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftypedefs.lisp;h=340d3ddece87e739221c8ccf2552a098d0936433;hb=5423b2e0f7e7643001ed3ef2f66681c0114a72a6;hp=2aca4c36f42eb00143030f01ab5f6c192c5a5323;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/src/code/typedefs.lisp b/src/code/typedefs.lisp index 2aca4c3..340d3dd 100644 --- a/src/code/typedefs.lisp +++ b/src/code/typedefs.lisp @@ -59,6 +59,8 @@ ;;; DEFVARs for these come later, after we have enough stuff defined. (declaim (special *wild-type* *universal-type* *empty-type*)) +(defvar *type-random-state*) + ;;; the base class for the internal representation of types (def!struct (ctype (:conc-name type-) (:constructor nil) @@ -77,7 +79,11 @@ (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