X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FStable.c;h=e5e8dfbdd0fad046a7944d680e2c929c9c2fe7f0;hb=485b8d1a00a65aa565e3b30ef8f63fa2880d4093;hp=5a1b92b3219ee27f63fb39ef2a16ecf8178202b7;hpb=9f2ceb4da7dfbc1cfd09ce54610ebe64288b9007;p=ghc-hetmet.git diff --git a/rts/Stable.c b/rts/Stable.c index 5a1b92b..e5e8dfb 100644 --- a/rts/Stable.c +++ b/rts/Stable.c @@ -19,6 +19,7 @@ #include "RtsFlags.h" #include "OSThreads.h" #include "Trace.h" +#include "Stable.h" /* Comment from ADR's implementation in old RTS: @@ -169,6 +170,9 @@ exitStablePtrTable(void) stgFree(stable_ptr_table); stable_ptr_table = NULL; SPT_size = 0; +#ifdef THREADED_RTS + closeMutex(&stable_mutex); +#endif } /* @@ -412,15 +416,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); } } }