diff options
Diffstat (limited to 'includes')
-rw-r--r-- | includes/HsFFI.h | 4 | ||||
-rw-r--r-- | includes/Rts.h | 1 | ||||
-rw-r--r-- | includes/rts/StaticPtrTable.h | 32 |
3 files changed, 37 insertions, 0 deletions
diff --git a/includes/HsFFI.h b/includes/HsFFI.h index d51ee04b67..20be3606ed 100644 --- a/includes/HsFFI.h +++ b/includes/HsFFI.h @@ -161,6 +161,10 @@ extern void hs_free_stable_ptr_unsafe (HsStablePtr sp); extern void hs_free_stable_ptr (HsStablePtr sp); extern void hs_free_fun_ptr (HsFunPtr fp); +extern StgPtr hs_spt_lookup(StgWord64 key[2]); +extern int hs_spt_keys(StgPtr keys[], int szKeys); +extern int hs_spt_key_count (void); + /* -------------------------------------------------------------------------- */ #ifdef __cplusplus diff --git a/includes/Rts.h b/includes/Rts.h index 6bf7650f69..77eeb31f3a 100644 --- a/includes/Rts.h +++ b/includes/Rts.h @@ -238,6 +238,7 @@ INLINE_HEADER Time fsecondsToTime (double t) #include "rts/Utils.h" #include "rts/PrimFloat.h" #include "rts/Main.h" +#include "rts/StaticPtrTable.h" /* Misc stuff without a home */ DLL_IMPORT_RTS extern char **prog_argv; /* so we can get at these from Haskell */ diff --git a/includes/rts/StaticPtrTable.h b/includes/rts/StaticPtrTable.h new file mode 100644 index 0000000000..8b56510223 --- /dev/null +++ b/includes/rts/StaticPtrTable.h @@ -0,0 +1,32 @@ +/* ----------------------------------------------------------------------------- + * + * (c) The GHC Team, 2008-2009 + * + * Initialization of the Static Pointer Table + * + * Do not #include this file directly: #include "Rts.h" instead. + * + * To understand the structure of the RTS headers, see the wiki: + * http://ghc.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes + * + * -------------------------------------------------------------------------- */ + +#ifndef RTS_STATICPTRTABLE_H +#define RTS_STATICPTRTABLE_H + +/** Inserts an entry in the Static Pointer Table. + * + * The key is a fingerprint computed from the StaticName of a static pointer + * and the spe_closure is a pointer to the closure defining the table entry + * (GHC.SptEntry). + * + * A stable pointer to the closure is made to prevent it from being garbage + * collected while the entry exists on the table. + * + * This function is called from the code generated by + * compiler/deSugar/StaticPtrTable.sptInitCode + * + * */ +void hs_spt_insert (StgWord64 key[2],void* spe_closure); + +#endif /* RTS_STATICPTRTABLE_H */ |