- // Nothing to do:
- // the table will be allocated the first time makeStablePtr is
- // called, and we want the table to persist through multiple inits.
+ if (SPT_size > 0)
+ return;
+
+ SPT_size = INIT_SPT_SIZE;
+ stable_ptr_table = stgMallocBytes(SPT_size * sizeof(snEntry),
+ "initStablePtrTable");
+
+ /* we don't use index 0 in the stable name table, because that
+ * would conflict with the hash table lookup operations which
+ * return NULL if an entry isn't found in the hash table.
+ */
+ initFreeList(stable_ptr_table+1,INIT_SPT_SIZE-1,NULL);
+ addrToStableHash = allocHashTable();
+
+#ifdef THREADED_RTS
+ initMutex(&stable_mutex);
+#endif