X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FStable.h;h=fefdba966577b5a50d55f87379ae6d13340cb8f0;hb=172dd51c1d53dd9d2550e1c10c30de945f81a2d8;hp=28227ec6e68cd4b146b40d57b3a034b1392dfbf9;hpb=9021d33f1c95c4deb7aba092fa5f551e3e8f4c81;p=ghc-hetmet.git diff --git a/ghc/includes/Stable.h b/ghc/includes/Stable.h index 28227ec..fefdba9 100644 --- a/ghc/includes/Stable.h +++ b/ghc/includes/Stable.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Stable.h,v 1.11 2001/12/12 14:03:30 simonmar Exp $ + * $Id: Stable.h,v 1.15 2003/11/12 17:27:03 sof Exp $ * * (c) The GHC Team, 1998-2000 * @@ -38,38 +38,21 @@ typedef struct { } snEntry; extern DLL_IMPORT_RTS snEntry *stable_ptr_table; -extern DLL_IMPORT_RTS snEntry *stable_ptr_free; -extern DLL_IMPORT_RTS unsigned int SPT_size; +extern void freeStablePtr(StgStablePtr sp); -extern inline StgPtr -deRefStablePtr(StgStablePtr sp) +#if defined(__GNUC__) +# ifndef RTS_STABLE_C +extern inline +# endif +StgPtr deRefStablePtr(StgStablePtr sp) { ASSERT(stable_ptr_table[(StgWord)sp].ref > 0); return stable_ptr_table[(StgWord)sp].addr; } - -extern inline void -freeStablePtr(StgStablePtr sp) -{ - StgWord sn = (StgWord)sp; - - ASSERT(sn < SPT_size - && stable_ptr_table[sn].addr != NULL - && stable_ptr_table[sn].ref > 0); - - stable_ptr_table[sn].ref --; -} - -extern inline StgStablePtr -splitStablePtr(StgStablePtr sp) -{ - stable_ptr_table[(StgWord)sp].ref ++; - return sp; -} - -/* No deRefStableName, because the existence of a stable name doesn't - * guarantee the existence of the object itself. - */ +#else +/* No support for 'extern inline' */ +extern StgPtr deRefStablePtr(StgStablePtr sp); +#endif #endif