Symbol.st
changeset 375 e5019c22f40e
parent 370 20f04d9b371b
child 379 5b5a130ccd09
--- a/Symbol.st	Sat Aug 05 16:05:36 1995 +0200
+++ b/Symbol.st	Tue Aug 08 02:49:43 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1988 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libbasic/Symbol.st,v 1.25 1995-08-03 01:17:01 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Symbol.st,v 1.26 1995-08-08 00:49:18 claus Exp $
 '!
 
 !Symbol class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libbasic/Symbol.st,v 1.25 1995-08-03 01:17:01 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Symbol.st,v 1.26 1995-08-08 00:49:18 claus Exp $
 "
 !
 
@@ -297,10 +297,12 @@
     int l;
 
     if (__Class(self) == Symbol) {
-	val = _GET_HASH(self);
+	val = __GET_HASH(self);
 	/*
 	 * only do it, if I have no standard hash key
-	 * assigned.
+	 * assigned (which can only happen due to a #become:,
+	 * or by creating a symbol uninterned, and interning it
+	 * after it got a hashKey assigned.
 	 */
 	if (val == 0) {
 	    cp = _stringVal(self);
@@ -329,9 +331,10 @@
 		l |= 1; 
 		val = (val * l) & 0x3FFFFFFF;
 	    }
-
-	    RETURN ( _MKSMALLINT(val) );
+	} else {
+	    val <<= __HASH_SHIFT__;
 	}
+	RETURN ( _MKSMALLINT(val) );
      }
 %}.
      ^ super identityHash