X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FStable.c;h=2c4157b4313b9d7f2ff533d7af5935e9cd3b7551;hb=1ca9b6f8f22b58898b42bcb5b1017a85f4ab06a7;hp=2391cb127fb37cec344065a20f15a4f7f15c793b;hpb=5a2769f0273dd389977e8283375e7920d183bdd4;p=ghc-hetmet.git diff --git a/rts/Stable.c b/rts/Stable.c index 2391cb1..2c4157b 100644 --- a/rts/Stable.c +++ b/rts/Stable.c @@ -159,6 +159,18 @@ initStablePtrTable(void) #endif } +void +exitStablePtrTable(void) +{ + if (addrToStableHash) + freeHashTable(addrToStableHash, NULL); + addrToStableHash = NULL; + if (stable_ptr_table) + stgFree(stable_ptr_table); + stable_ptr_table = NULL; + SPT_size = 0; +} + /* * get at the real stuff...remove indirections. * @@ -400,15 +412,15 @@ gcStablePtrTable( void ) if (p->sn_obj == NULL) { // StableName object is dead freeStableName(p); - debugTrace(DEBUG_stable, "GC'd Stable name %ld", - p - stable_ptr_table); + debugTrace(DEBUG_stable, "GC'd Stable name %ld", + (long)(p - stable_ptr_table)); continue; } else { p->addr = (StgPtr)isAlive((StgClosure *)p->addr); debugTrace(DEBUG_stable, "stable name %ld still alive at %p, ref %ld\n", - p - stable_ptr_table, p->addr, p->ref); + (long)(p - stable_ptr_table), p->addr, p->ref); } } }