update submodules for GHC.HetMet.GArrow -> Control.GArrow renaming
[ghc-hetmet.git] / rts / Stable.h
1 /* -----------------------------------------------------------------------------
2  *
3  * (c) The GHC Team, 1998-2004
4  *
5  * Stable Pointers: A stable pointer is represented as an index into
6  * the stable pointer table.
7  *
8  * StgStablePtr used to be a synonym for StgWord, but stable pointers
9  * are guaranteed to be void* on the C-side, so we have to do some
10  * occasional casting. Size is not a matter, because StgWord is always
11  * the same size as a void*.
12  *
13  * ---------------------------------------------------------------------------*/
14
15 #ifndef STABLE_H
16 #define STABLE_H
17
18 #include "sm/GC.h" // for evac_fn below
19
20 #include "BeginPrivate.h"
21
22 void    freeStablePtr         ( StgStablePtr sp );
23
24 void    initStablePtrTable    ( void );
25 void    exitStablePtrTable    ( void );
26 StgWord lookupStableName      ( StgPtr p );
27
28 void    markStablePtrTable    ( evac_fn evac, void *user );
29 void    threadStablePtrTable  ( evac_fn evac, void *user );
30 void    gcStablePtrTable      ( void );
31 void    updateStablePtrTable  ( rtsBool full );
32
33 void    stablePtrPreGC        ( void );
34 void    stablePtrPostGC       ( void );
35
36 #include "EndPrivate.h"
37
38 #endif /* STABLE_H */