diff options
-rw-r--r-- | ghc/includes/Stable.h | 23 | ||||
-rw-r--r-- | ghc/rts/Stable.c | 14 |
2 files changed, 16 insertions, 21 deletions
diff --git a/ghc/includes/Stable.h b/ghc/includes/Stable.h index 28227ec6e6..12056f9974 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.12 2001/12/20 16:12:09 sewardj Exp $ * * (c) The GHC Team, 1998-2000 * @@ -42,31 +42,14 @@ 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) { 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. diff --git a/ghc/rts/Stable.c b/ghc/rts/Stable.c index f73b5eab19..0232e18d67 100644 --- a/ghc/rts/Stable.c +++ b/ghc/rts/Stable.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Stable.c,v 1.18 2001/11/21 10:09:16 simonmar Exp $ + * $Id: Stable.c,v 1.19 2001/12/20 16:12:09 sewardj Exp $ * * (c) The GHC Team, 1998-1999 * @@ -234,6 +234,18 @@ getStablePtr(StgPtr p) } 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 --; +} + +void enlargeStablePtrTable(void) { nat old_SPT_size = SPT_size; |