X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FStable.h;fp=includes%2FStable.h;h=0000000000000000000000000000000000000000;hb=a2a67cd520b9841114d69a87a423dabcb3b4368e;hp=9752a534bb8d17764e960a20ded1530913bd3616;hpb=5d379cbe65e406d5c3a848fe7fcd090cafbfeb78;p=ghc-hetmet.git diff --git a/includes/Stable.h b/includes/Stable.h deleted file mode 100644 index 9752a53..0000000 --- a/includes/Stable.h +++ /dev/null @@ -1,63 +0,0 @@ -/* ----------------------------------------------------------------------------- - * - * (c) The GHC Team, 1998-2004 - * - * Stable Pointers: A stable pointer is represented as an index into - * the stable pointer table in the low BITS_PER_WORD-8 bits with a - * weight in the upper 8 bits. - * - * SUP: StgStablePtr used to be a synonym for StgWord, but stable pointers - * are guaranteed to be void* on the C-side, so we have to do some occasional - * casting. Size is not a matter, because StgWord is always the same size as - * a void*. - * - * ---------------------------------------------------------------------------*/ - -#ifndef STABLE_H -#define STABLE_H - -/* ----------------------------------------------------------------------------- - External C Interface - -------------------------------------------------------------------------- */ - -EXTERN_INLINE StgPtr deRefStablePtr(StgStablePtr stable_ptr); -extern void freeStablePtr(StgStablePtr sp); -extern StgStablePtr splitStablePtr(StgStablePtr sp); -extern StgStablePtr getStablePtr(StgPtr p); - -/* ----------------------------------------------------------------------------- - PRIVATE from here. - -------------------------------------------------------------------------- */ - -typedef struct { - StgPtr addr; /* Haskell object, free list, or NULL */ - StgPtr old; /* old Haskell object, used during GC */ - StgWord ref; /* used for reference counting */ - StgClosure *sn_obj; /* the StableName object (or NULL) */ -} snEntry; - -extern DLL_IMPORT_RTS snEntry *stable_ptr_table; - -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 void initStablePtrTable ( void ); -extern void exitStablePtrTable ( void ); -extern void enlargeStablePtrTable ( void ); -extern StgWord lookupStableName ( StgPtr p ); - -extern void markStablePtrTable ( evac_fn evac, void *user ); -extern void threadStablePtrTable ( evac_fn evac, void *user ); -extern void gcStablePtrTable ( void ); -extern void updateStablePtrTable ( rtsBool full ); - -extern void stablePtrPreGC ( void ); -extern void stablePtrPostGC ( void ); - -#endif