diff --git a/compiler/globaldb.lisp b/compiler/globaldb.lisp index daa33bb9343f5e18b534651fbbc444191f6a0102..007294deb80b262cc77aefc1eacff2050b83abbe 100644 --- a/compiler/globaldb.lisp +++ b/compiler/globaldb.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/globaldb.lisp,v 1.30 1993/03/14 18:50:34 ram Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/globaldb.lisp,v 1.31 1993/05/18 19:25:36 wlott Exp $") ;;; ;;; ********************************************************************** ;;; @@ -276,10 +276,11 @@ ;;; INFO-HASH -- Internal ;;; -;;; Semantically equivalent to SXHASH, but optimized for legal function -;;; names. Note: semantically equivalent does *not* mean that it always -;;; returns the same value as SXHASH, just that it satisfies the formal -;;; definition of SXHASH. +;;; Sorta semantically equivalent to SXHASH, but optimized for legal +;;; function names. Note: semantically equivalent does *not* mean that it +;;; always returns the same value as SXHASH, just that it satisfies the formal +;;; definition of SXHASH. The ``sorta'' is because symbol-hash will not +;;; necessarily return the same value in different lisps. ;;; ;;; All we do for now is pick off the cases of a symbol and a list of two ;;; symbols [e.g. (SETF FOO)]. The symbol case is the same as what SXHASH @@ -290,14 +291,16 @@ (defun info-hash (x) (cond ((symbolp x) - (%sxhash-simple-string (symbol-name x))) + #-gengc (%sxhash-simple-string (symbol-name x)) + #+gengc (symbol-hash x)) ((and (listp x) (eq (car x) 'setf) (let ((next (cdr x))) (when (listp next) (let ((name (car next))) (when (and (symbolp name) (null (cdr next))) - (logxor (%sxhash-simple-string (symbol-name name)) + (logxor #-gengc (%sxhash-simple-string (symbol-name name)) + #+gengc (symbol-hash name) 110680597))))))) (t (sxhash x)))) @@ -457,7 +460,9 @@ `(the fixnum (logand (the fixnum - (logxor (the fixnum (cache-hash-eq ,name)) + (logxor (the fixnum + #+gengc (info-hash ,name) + #-gengc (cache-hash-eq ,name)) (the fixnum (ash (the fixnum ,type) 7)))) #x3FF))) @@ -486,9 +491,14 @@ ;;; become unreachable (and hence not be updated), and then could become ;;; reachable again in a future GC. ;;; +;;; Not needed with the gengc system, because we use an address independent +;;; hashing. +;;; +#-gengc (defun info-cache-gc-hook () (setq *cached-info-environment* nil)) ;;; +#-gengc (pushnew 'info-cache-gc-hook *after-gc-hooks*)