X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FTypeable.c;fp=rts%2FTypeable.c;h=1d7edd1c94577d4b2071907863c73a369a90dd7b;hp=4c4d460d667147f3999906136157548447cb98de;hb=53c390a4f2eb9017d50f51cd040f742cef309fb9;hpb=59c03ecb7fa69bf13647f0106e50748e90711176 diff --git a/rts/Typeable.c b/rts/Typeable.c index 4c4d460..1d7edd1 100644 --- a/rts/Typeable.c +++ b/rts/Typeable.c @@ -1,48 +1,48 @@ #include "RtsTypeable.h" #include "Rts.h" - -static StgPtr typeableStore = 0; -#ifdef THREADED_RTS -Mutex typeableStoreLock; -#endif - - -void -initTypeableStore() -{ - typeableStore=0; -#ifdef THREADED_RTS - initMutex(&typeableStoreLock); -#endif -} - -void -exitTypeableStore() -{ -#ifdef THREADED_RTS - closeMutex(&typeableStoreLock); -#endif - if(typeableStore!=0) { - freeStablePtr((StgStablePtr)typeableStore); - typeableStore=0; - } -} - -StgPtr -getOrSetTypeableStore(StgPtr ptr) -{ - StgPtr ret = typeableStore; - if(ret==0) { -#ifdef THREADED_RTS - ACQUIRE_LOCK(&typeableStoreLock); - ret=typeableStore; - if(ret==0) { -#endif - typeableStore = ret = ptr; -#ifdef THREADED_RTS - } - RELEASE_LOCK(&typeableStoreLock); -#endif - } - return ret; -} + +static StgPtr typeableStore = 0; +#ifdef THREADED_RTS +Mutex typeableStoreLock; +#endif + + +void +initTypeableStore() +{ + typeableStore=0; +#ifdef THREADED_RTS + initMutex(&typeableStoreLock); +#endif +} + +void +exitTypeableStore() +{ +#ifdef THREADED_RTS + closeMutex(&typeableStoreLock); +#endif + if(typeableStore!=0) { + freeStablePtr((StgStablePtr)typeableStore); + typeableStore=0; + } +} + +StgPtr +getOrSetTypeableStore(StgPtr ptr) +{ + StgPtr ret = typeableStore; + if(ret==0) { +#ifdef THREADED_RTS + ACQUIRE_LOCK(&typeableStoreLock); + ret=typeableStore; + if(ret==0) { +#endif + typeableStore = ret = ptr; +#ifdef THREADED_RTS + } + RELEASE_LOCK(&typeableStoreLock); +#endif + } + return ret; +}