HsFFI.c 897 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/* -----------------------------------------------------------------------------
 *
 * (c) The GHC Team, 2002
 *
 * RTS entry points as mandated by the FFI addendum to the Haskell 98 report
 *
 * ---------------------------------------------------------------------------*/

#include "HsFFI.h"
#include "Rts.h"

12
// hs_init and hs_exit are defined in RtsStartup.c
13 14 15 16

void
hs_set_argv(int argc, char *argv[])
{
17 18
    prog_argc = argc;
    prog_argv = argv;
19 20 21 22 23 24 25 26 27 28
}

void
hs_perform_gc(void)
{
    /* Hmmm, the FFI spec is a bit vague, but it seems to imply a major GC... */
    performMajorGC();
}

void
29
hs_free_stable_ptr(HsStablePtr sp)
30 31 32 33 34 35 36
{
    /* The cast is for clarity only, both HsStablePtr and StgStablePtr are
       typedefs for void*. */
    freeStablePtr((StgStablePtr)sp);
}

void
37
hs_free_fun_ptr(HsFunPtr fp)
38 39 40 41
{
    /* I simply *love* all these similar names... */
    freeHaskellFunctionPtr(fp);
}