[project @ 2002-12-05 23:49:43 by mthomas]
[ghc-hetmet.git] / ghc / rts / Stable.c
index 5cf9c28..7bfd15e 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: Stable.c,v 1.20 2002/04/09 12:56:36 simonmar Exp $
+ * $Id: Stable.c,v 1.22 2002/08/16 13:29:07 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -88,9 +88,9 @@
 */
 
 snEntry *stable_ptr_table;
-snEntry *stable_ptr_free;
+static snEntry *stable_ptr_free;
 
-unsigned int SPT_size;
+static unsigned int SPT_size;
 
 /* This hash table maps Haskell objects to stable names, so that every
  * call to lookupStableName on a given object will return the same
@@ -125,7 +125,7 @@ unsigned int SPT_size;
  * to the weight stored in the table entry.
  * */
 
-HashTable *addrToStableHash;
+static HashTable *addrToStableHash;
 
 #define INIT_SPT_SIZE 64
 
@@ -245,7 +245,7 @@ freeStablePtr(StgStablePtr sp)
     // If this entry has no StableName attached, then just free it
     // immediately.  This is important; it might be a while before the
     // next major GC which actually collects the entry.
-    if (sn->sn_obj == NULL) {
+    if (sn->sn_obj == NULL && sn->ref == 0) {
        freeStableName(sn);
     }
 }