/* Routines that operate-on/to-do-with RTS flags: */
-extern void initRtsFlagsDefaults(void);
-extern void setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]);
-extern void setProgName(char *argv[]);
+void initRtsFlagsDefaults(void);
+void setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]);
+void setProgName(char *argv[]);
/*
// canned slow entry points, indexed by arg type (ARG_P, ARG_PP, etc.)
#ifdef IN_STG_CODE
-extern StgWord stg_ap_stack_entries[];
+extern RTS_PRIVATE StgWord stg_ap_stack_entries[];
#else
-extern StgFun *stg_ap_stack_entries[];
+extern RTS_PRIVATE StgFun *stg_ap_stack_entries[];
#endif
// canned register save code for heap check failure in a function
#ifdef IN_STG_CODE
-extern StgWord stg_stack_save_entries[];
+extern RTS_PRIVATE StgWord stg_stack_save_entries[];
#else
-extern StgFun *stg_stack_save_entries[];
+extern RTS_PRIVATE StgFun *stg_stack_save_entries[];
#endif
// canned bitmap for each arg type
-extern StgWord stg_arg_bitmaps[];
+extern RTS_PRIVATE StgWord stg_arg_bitmaps[];
#endif /* APPLY_H */
typedef struct _Arena Arena;
// Start a new arena
-extern Arena * newArena ( void );
+RTS_PRIVATE Arena * newArena ( void );
// Allocate memory in an arena
-extern void * arenaAlloc ( Arena *, size_t );
+RTS_PRIVATE void * arenaAlloc ( Arena *, size_t );
// Free an entire arena
-extern void arenaFree ( Arena * );
+RTS_PRIVATE void arenaFree ( Arena * );
// For internal use only:
-extern unsigned long arenaBlocks( void );
+RTS_PRIVATE unsigned long arenaBlocks( void );
#endif /* ARENA_H */
* Called from STG : NO
* Locks assumed : sched_mutex
*/
-void awaitEvent(rtsBool wait); /* In posix/Select.c or
- * win32/AwaitEvent.c */
+RTS_PRIVATE void awaitEvent(rtsBool wait); /* In posix/Select.c or
+ * win32/AwaitEvent.c */
#endif
#endif /* AWAITEVENT_H */
#include "Task.h"
#include "Sparks.h"
+#pragma GCC visibility push(hidden)
+
struct Capability_ {
// State required by the STG virtual machine when running Haskell
// code. During STG execution, the BaseReg register always points
cap->context_switch = 1;
}
+#pragma GCC visibility pop
+
#endif /* CAPABILITY_H */
#ifdef DEBUG
-extern int disInstr ( StgBCO *bco, int pc );
-extern void disassemble( StgBCO *bco );
+RTS_PRIVATE int disInstr ( StgBCO *bco, int pc );
+RTS_PRIVATE void disassemble( StgBCO *bco );
#endif
#ifndef FRONTPANEL_H
#define FRONTPANEL_H
+#pragma GCC visibility push(hidden)
+
#ifdef RTS_GTK_FRONTPANEL
#include "Rts.h" /* needed because this file gets included by
#endif /* RTS_GTK_FRONTPANEL */
+#pragma GCC visibility pop
+
#endif /* FRONTPANEL_H */
#ifndef GETTIME_H
#define GETTIME_H
+#pragma GCC visibility push(hidden)
+
// We'll use a fixed resolution of usec for now. The machine
// dependent implementation may have a different resolution, but we'll
// normalise to this for the machine independent interface.
// Not strictly timing, but related
nat getPageFaults (void);
+#pragma GCC visibility pop
+
#endif /* GETTIME_H */
#ifndef GLOBALS_H
#define GLOBALS_H
-void initGlobalStore(void);
-void exitGlobalStore(void);
+RTS_PRIVATE void initGlobalStore(void);
+RTS_PRIVATE void exitGlobalStore(void);
#endif
#ifndef HASH_H
#define HASH_H
+#pragma GCC visibility push(hidden)
+
typedef struct hashtable HashTable; /* abstract */
/* Hash table access where the keys are StgWords */
void exitHashTable ( void );
+#pragma GCC visibility pop
+
#endif /* HASH_H */
#ifndef INTERPRETER_H
#define INTERPRETER_H
-extern Capability *interpretBCO (Capability* cap);
+RTS_PRIVATE Capability *interpretBCO (Capability* cap);
#endif /* INTERPRETER_H */
#include "ProfHeap.h"
-extern void LdvCensusForDead ( nat );
-extern void LdvCensusKillAll ( void );
+RTS_PRIVATE void LdvCensusForDead ( nat );
+RTS_PRIVATE void LdvCensusKillAll ( void );
// Creates a 0-filled slop of size 'howManyBackwards' backwards from the
// address 'from'.
#ifndef PAPI_H
#define PAPI_H
+#pragma GCC visibility push(hidden)
+
/* Check the error value of a PAPI call, reporting an error, if needed */
extern int papi_error;
void papi_thread_start_gc1_count(int event_set);
void papi_thread_stop_gc1_count(int event_set);
+#pragma GCC visibility pop
+
#endif /* PAPI_H */
#ifndef PRINTER_H
#define PRINTER_H
+#pragma GCC visibility push(hidden)
+
extern void printPtr ( StgPtr p );
extern void printObj ( StgClosure *obj );
extern const char *lookupGHCName( void *addr );
#endif
+#pragma GCC visibility pop
+
#endif /* PRINTER_H */
#ifndef PROFHEAP_H
#define PROFHEAP_H
-extern void heapCensus( void );
-extern nat initHeapProfiling( void );
-extern void endHeapProfiling( void );
-extern void LDV_recordDead( StgClosure *c, nat size );
-extern rtsBool strMatchesSelector( char* str, char* sel );
+#pragma GCC visibility push(hidden)
+
+void heapCensus (void);
+nat initHeapProfiling (void);
+void endHeapProfiling (void);
+void LDV_recordDead (StgClosure *c, nat size);
+rtsBool strMatchesSelector (char* str, char* sel);
+
+#pragma GCC visibility pop
#endif /* PROFHEAP_H */
#include <stdio.h>
+#pragma GCC visibility push(hidden)
+
void initProfiling1 (void);
void freeProfiling1 (void);
void initProfiling2 (void);
#ifdef PROFILING
-void gen_XML_logfile ( void );
+void gen_XML_logfile ( void );
void reportCCSProfiling ( void );
void PrintNewStackDecls ( void );
-extern void fprintCCS( FILE *f, CostCentreStack *ccs );
-extern void fprintCCS_stderr( CostCentreStack *ccs );
+void fprintCCS( FILE *f, CostCentreStack *ccs );
+void fprintCCS_stderr( CostCentreStack *ccs );
#ifdef DEBUG
-extern void debugCCS( CostCentreStack *ccs );
+void debugCCS( CostCentreStack *ccs );
#endif
#endif
+#pragma GCC visibility pop
+
#endif /* PROFILING_H */
#ifndef PROFTIMER_H
#define PROFTIMER_H
-extern void initProfTimer ( void );
-extern void handleProfTick ( void );
+#pragma GCC visibility push(hidden)
+
+void initProfTimer ( void );
+void handleProfTick ( void );
#ifdef PROFILING
-extern void stopProfTimer ( void );
-extern void startProfTimer ( void );
+void stopProfTimer ( void );
+void startProfTimer ( void );
#endif
-extern void stopHeapProfTimer ( void );
-extern void startHeapProfTimer ( void );
+void stopHeapProfTimer ( void );
+void startHeapProfTimer ( void );
extern rtsBool performHeapProfile;
+#pragma GCC visibility pop
+
#endif /* PROFTIMER_H */
#ifndef RAISEASYNC_H
#define RAISEASYNC_H
+#pragma GCC visibility push(hidden)
+
#define THROWTO_SUCCESS 0
#define THROWTO_BLOCKED 1
#endif /* CMINUSMINUS */
+#pragma GCC visibility pop
+
#endif /* RAISEASYNC_H */
#include "RetainerSet.h"
-extern void initRetainerProfiling ( void );
-extern void endRetainerProfiling ( void );
-extern void retainerProfile ( void );
-extern void resetStaticObjectForRetainerProfiling( StgClosure *static_objects );
+#pragma GCC visibility push(hidden)
+
+void initRetainerProfiling ( void );
+void endRetainerProfiling ( void );
+void retainerProfile ( void );
+void resetStaticObjectForRetainerProfiling( StgClosure *static_objects );
extern StgWord flip;
extern lnat retainerStackBlocks ( void );
#endif
+#pragma GCC visibility pop
+
#endif /* PROFILING */
#endif /* RETAINERPROFILE_H */
#ifdef PROFILING
+#pragma GCC visibility push(hidden)
+
/*
Type 'retainer' defines the retainer identity.
// the best place to define it.
void printRetainer(FILE *, retainer);
+#pragma GCC visibility pop
+
#endif /* PROFILING */
#endif /* RETAINERSET_H */
* The entry point for Haskell programs that use a Haskell main function
* -------------------------------------------------------------------------- */
-extern int hs_main(int argc, char *argv[], void (*main_init)(void), StgClosure *main_closure);
+int hs_main(int argc, char *argv[], void (*main_init)(void), StgClosure *main_closure);
#endif /* RTSMAIN_H */
#if RTS_USER_SIGNALS
+#pragma GCC visibility push(hidden)
+
/*
* Function: initUserSignals()
*
* Initialize the console handling substrate.
*/
-extern void initUserSignals(void);
+void initUserSignals(void);
/*
* Function: initDefaultHandlers()
* Install any default signal/console handlers. Currently we install a
* Ctrl+C handler that shuts down the RTS in an orderly manner.
*/
-extern void initDefaultHandlers(void);
-extern void resetDefaultHandlers(void);
+void initDefaultHandlers(void);
+void resetDefaultHandlers(void);
-extern void freeSignalHandlers(void);
+void freeSignalHandlers(void);
/*
* Function: blockUserSignals()
* when emptying the queue by running the handlers.
*
*/
-extern void blockUserSignals(void);
+void blockUserSignals(void);
/*
* Function: unblockUserSignals()
*
* The inverse of blockUserSignals(); re-enable the deliver of console events.
*/
-extern void unblockUserSignals(void);
+void unblockUserSignals(void);
/*
* Function: awaitUserSignals()
*
* Wait for the next console event. Currently a NOP (returns immediately.)
*/
-extern void awaitUserSignals(void);
+void awaitUserSignals(void);
/*
* Function: markSignalHandlers()
* Evacuate the handler queue. _Assumes_ that console event delivery
* has already been blocked.
*/
-extern void markSignalHandlers (evac_fn evac, void *user);
+void markSignalHandlers (evac_fn evac, void *user);
+
+#pragma GCC visibility pop
#endif /* RTS_USER_SIGNALS */
#ifndef RTSUTILS_H
#define RTSUTILS_H
+#pragma GCC visibility push(hidden)
+
/* -----------------------------------------------------------------------------
* (Checked) dynamic allocation
* -------------------------------------------------------------------------- */
int rts_isProfiled(void);
+#pragma GCC visibility pop
+
#endif /* RTSUTILS_H */
#define STM_UNIPROC
#endif
-#ifdef __cplusplus
-extern "C" {
-#endif
+#pragma GCC visibility push(hidden)
/*----------------------------------------------------------------------
--------------
*/
-extern void stmPreGCHook(void);
+void stmPreGCHook(void);
/*----------------------------------------------------------------------
/* Create and enter a new transaction context */
-extern StgTRecHeader *stmStartTransaction(Capability *cap, StgTRecHeader *outer);
-extern StgTRecHeader *stmStartNestedTransaction(Capability *cap, StgTRecHeader *outer
+StgTRecHeader *stmStartTransaction(Capability *cap, StgTRecHeader *outer);
+StgTRecHeader *stmStartNestedTransaction(Capability *cap, StgTRecHeader *outer
);
/*
* to that read set could change whether or not the tx should abort.
*/
-extern void stmAbortTransaction(Capability *cap, StgTRecHeader *trec);
-extern void stmFreeAbortedTRec(Capability *cap, StgTRecHeader *trec);
+void stmAbortTransaction(Capability *cap, StgTRecHeader *trec);
+void stmFreeAbortedTRec(Capability *cap, StgTRecHeader *trec);
/*
* Ensure that a subsequent commit / validation will fail. We use this
* in case other threads' updates make it valid in the mean time.
*/
-extern void stmCondemnTransaction(Capability *cap, StgTRecHeader *trec);
+void stmCondemnTransaction(Capability *cap, StgTRecHeader *trec);
/*
* Return the trec within which the specified trec was created (not
* valid if trec==NO_TREC).
*/
-extern StgTRecHeader *stmGetEnclosingTRec(StgTRecHeader *trec);
+StgTRecHeader *stmGetEnclosingTRec(StgTRecHeader *trec);
/*----------------------------------------------------------------------
threads at GC (in case they are stuck looping)
*/
-extern StgBool stmValidateNestOfTransactions(StgTRecHeader *trec);
+StgBool stmValidateNestOfTransactions(StgTRecHeader *trec);
/*----------------------------------------------------------------------
* transaction.
*/
-extern StgInvariantCheckQueue *stmGetInvariantsToCheck(Capability *cap,
- StgTRecHeader *trec);
+StgInvariantCheckQueue *stmGetInvariantsToCheck(Capability *cap,
+ StgTRecHeader *trec);
-extern void stmAddInvariantToCheck(Capability *cap,
- StgTRecHeader *trec,
- StgClosure *code);
+void stmAddInvariantToCheck(Capability *cap,
+ StgTRecHeader *trec,
+ StgClosure *code);
/*
* Test whether the current transaction context is valid and, if so,
* been committed to.
*/
-extern StgBool stmCommitTransaction(Capability *cap, StgTRecHeader *trec);
-extern StgBool stmCommitNestedTransaction(Capability *cap, StgTRecHeader *trec);
+StgBool stmCommitTransaction(Capability *cap, StgTRecHeader *trec);
+StgBool stmCommitNestedTransaction(Capability *cap, StgTRecHeader *trec);
/*
* Test whether the current transaction context is valid and, if so,
* if the thread is already waiting.
*/
-extern StgBool stmWait(Capability *cap,
- StgTSO *tso,
- StgTRecHeader *trec);
+StgBool stmWait(Capability *cap, StgTSO *tso, StgTRecHeader *trec);
-extern void stmWaitUnlock(Capability *cap, StgTRecHeader *trec);
+void stmWaitUnlock(Capability *cap, StgTRecHeader *trec);
/*
* Test whether the current transaction context is valid and, if so,
* thread is not waiting.
*/
-extern StgBool stmReWait(Capability *cap, StgTSO *tso);
+StgBool stmReWait(Capability *cap, StgTSO *tso);
/*----------------------------------------------------------------------
--------------------------
*/
-extern StgTVar *stmNewTVar(Capability *cap,
- StgClosure *new_value);
+StgTVar *stmNewTVar(Capability *cap, StgClosure *new_value);
/*----------------------------------------------------------------------
* thread's current transaction.
*/
-extern StgClosure *stmReadTVar(Capability *cap,
- StgTRecHeader *trec,
- StgTVar *tvar);
+StgClosure *stmReadTVar(Capability *cap,
+ StgTRecHeader *trec,
+ StgTVar *tvar);
/* Update the logical contents of 'tvar' within the context of the
* thread's current transaction.
*/
-extern void stmWriteTVar(Capability *cap,
- StgTRecHeader *trec,
- StgTVar *tvar,
- StgClosure *new_value);
+void stmWriteTVar(Capability *cap,
+ StgTRecHeader *trec,
+ StgTVar *tvar,
+ StgClosure *new_value);
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
-#ifdef __cplusplus
-}
-#endif
+#pragma GCC visibility pop
#endif /* STM_H */
#ifdef DEBUG
+#pragma GCC visibility push(hidden)
+
# if defined(PAR)
# define PVM_PE_MASK 0xfffc0000
# define MAX_PVM_PES MAX_PES
# endif
/* debugging routines */
-extern void checkHeap ( bdescr *bd );
-extern void checkHeapChunk ( StgPtr start, StgPtr end );
-extern void checkLargeObjects ( bdescr *bd );
-extern void checkTSO ( StgTSO* tso );
-extern void checkGlobalTSOList ( rtsBool checkTSOs );
-extern void checkStaticObjects ( StgClosure* static_objects );
-extern void checkStackChunk ( StgPtr sp, StgPtr stack_end );
-extern StgOffset checkStackFrame ( StgPtr sp );
-extern StgOffset checkClosure ( StgClosure* p );
-
-extern void checkMutableList ( bdescr *bd, nat gen );
-extern void checkMutableLists ( rtsBool checkTSOs );
-
-extern void checkBQ (StgTSO *bqe, StgClosure *closure);
-
-/* test whether an object is already on update list */
-extern rtsBool isBlackhole( StgTSO* tso, StgClosure* p );
+void checkHeap ( bdescr *bd );
+void checkHeapChunk ( StgPtr start, StgPtr end );
+void checkLargeObjects ( bdescr *bd );
+void checkTSO ( StgTSO* tso );
+void checkGlobalTSOList ( rtsBool checkTSOs );
+void checkStaticObjects ( StgClosure* static_objects );
+void checkStackChunk ( StgPtr sp, StgPtr stack_end );
+StgOffset checkStackFrame ( StgPtr sp );
+StgOffset checkClosure ( StgClosure* p );
+
+void checkMutableList ( bdescr *bd, nat gen );
+void checkMutableLists ( rtsBool checkTSOs );
+
+void checkBQ (StgTSO *bqe, StgClosure *closure);
+
+#pragma GCC visibility pop
#endif /* DEBUG */
#include "Capability.h"
#include "eventlog/EventLog.h"
+#pragma GCC visibility push(hidden)
+
/* initScheduler(), exitScheduler()
* Called from STG : no
* Locks assumed : none
#endif /* !IN_STG_CODE */
+#pragma GCC visibility pop
+
#endif /* SCHEDULE_H */
#include "WSDeque.h"
+#pragma GCC visibility push(hidden)
+
/* typedef for SparkPool in RtsTypes.h */
#if defined(THREADED_RTS)
#endif // THREADED_RTS
+#pragma GCC visibility pop
+
#endif /* SPARKS_H */
#include "sm/GC.h" // for evac_fn below
-void freeStablePtr (StgStablePtr sp);
+#pragma GCC visibility push(hidden)
+
+void freeStablePtr ( StgStablePtr sp );
void initStablePtrTable ( void );
void exitStablePtrTable ( void );
void stablePtrPreGC ( void );
void stablePtrPostGC ( void );
+#pragma GCC visibility pop
+
#endif /* STABLE_H */
#include "GetTime.h"
+#pragma GCC visibility push(hidden)
+
void stat_startInit(void);
void stat_endInit(void);
void statsPrintf( char *s, ... )
GNUC3_ATTRIBUTE(format (printf, 1, 2));
+#pragma GCC visibility pop
#endif /* STATS_H */
#ifndef STGPRIMFLOAT_H
#define STGPRIMFLOAT_H
+#pragma GCC visibility push(hidden)
+
/* grimy low-level support functions defined in StgPrimFloat.c */
-extern void __decodeDouble_2Int (I_ *man_sign, W_ *man_high, W_ *man_low, I_ *exp, StgDouble dbl);
-extern void __decodeFloat_Int (I_ *man, I_ *exp, StgFloat flt);
-extern StgDouble __2Int_encodeDouble (I_ j_high, I_ j_low, I_ e);
-extern StgDouble __int_encodeDouble (I_ j, I_ e);
-extern StgDouble __word_encodeDouble (W_ j, I_ e);
-extern StgFloat __int_encodeFloat (I_ j, I_ e);
-extern StgFloat __word_encodeFloat (W_ j, I_ e);
+void __decodeDouble_2Int (I_ *man_sign, W_ *man_high, W_ *man_low, I_ *exp, StgDouble dbl);
+void __decodeFloat_Int (I_ *man, I_ *exp, StgFloat flt);
+StgDouble __2Int_encodeDouble (I_ j_high, I_ j_low, I_ e);
+StgDouble __int_encodeDouble (I_ j, I_ e);
+StgDouble __word_encodeDouble (W_ j, I_ e);
+StgFloat __int_encodeFloat (I_ j, I_ e);
+StgFloat __word_encodeFloat (W_ j, I_ e);
+
+#pragma GCC visibility pop
#endif /* STGPRIMFLOAT_H */
#ifndef STGRUN_H
#define STGRUN_H
-extern StgRegTable * StgRun(StgFunPtr f, StgRegTable *basereg);
+RTS_PRIVATE StgRegTable * StgRun (StgFunPtr f, StgRegTable *basereg);
#endif /* STGRUN_H */
#include "GetTime.h"
+#pragma GCC visibility push(hidden)
+
/*
Definition of a Task
--------------------
setMyTask(task);
}
+#pragma GCC visibility pop
+
#endif /* TASK_H */
#ifndef THREADLABELS_H
#define THREADLABELS_H
+#pragma GCC visibility push(hidden)
+
#if defined(DEBUG)
void initThreadLabelTable (void);
void freeThreadLabelTable (void);
void labelThread (StgPtr tso, char *label);
#endif
+#pragma GCC visibility pop
+
#endif /* THREADLABELS_H */
#ifndef THREADPAUSED_H
#define THREADPAUSED_H
-void threadPaused ( Capability *cap, StgTSO * );
+RTS_PRIVATE void threadPaused ( Capability *cap, StgTSO * );
#endif /* THREADPAUSED_H */
#ifndef THREADS_H
#define THREADS_H
+#pragma GCC visibility push(hidden)
+
StgTSO * unblockOne (Capability *cap, StgTSO *tso);
StgTSO * unblockOne_ (Capability *cap, StgTSO *tso, rtsBool allow_migrate);
void printThreadQueue (StgTSO *t);
#endif
+#pragma GCC visibility pop
+
#endif /* THREADS_H */
#ifndef TICKER_H
#define TICKER_H
+#pragma GCC visibility push(hidden)
+
typedef void (*TickProc)(int);
-extern void initTicker (nat ms, TickProc handle_tick);
-extern void startTicker (void);
-extern void stopTicker (void);
-extern void exitTicker (void);
+void initTicker (nat ms, TickProc handle_tick);
+void startTicker (void);
+void stopTicker (void);
+void exitTicker (void);
+
+#pragma GCC visibility pop
#endif /* TICKER_H */
#ifndef TICKY_H
#define TICKY_H
-void PrintTickyInfo(void);
+RTS_PRIVATE void PrintTickyInfo(void);
#endif /* TICKY_H */
#ifndef TIMER_H
#define TIMER_H
-void initTimer (void);
-void exitTimer (void);
+RTS_PRIVATE void initTimer (void);
+RTS_PRIVATE void exitTimer (void);
#endif /* TIMER_H */
#ifndef TRACE_H
#define TRACE_H
+#pragma GCC visibility push(hidden)
+
// -----------------------------------------------------------------------------
// Tracing functions
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
+#pragma GCC visibility pop
+
#endif /* TRACE_H */
#ifndef UPDATES_H
#define UPDATES_H
+#pragma GCC visibility push(hidden)
+
/* -----------------------------------------------------------------------------
Updates
} \
}
#endif /* CMINUSMINUS */
+
+#pragma GCC visibility pop
+
#endif /* UPDATES_H */
#include "Capability.h"
+#pragma GCC visibility push(hidden)
+
extern rtsBool running_finalizers;
extern StgWeak * weak_ptr_list;
void scheduleFinalizers(Capability *cap, StgWeak *w);
void markWeakList(void);
+#pragma GCC visibility pop
+
#endif /* WEAK_H */
#include "rts/EventLogFormat.h"
#include "Capability.h"
+#pragma GCC visibility push(hidden)
+
#ifdef EVENTLOG
/*
#endif
+#pragma GCC visibility pop
+
#endif /* EVENTLOG_H */
#ifndef POSIX_FILELOCK_H
#define POSIX_FILELOCK_H
-void initFileLocking(void);
-void freeFileLocking(void);
+RTS_PRIVATE void initFileLocking(void);
+RTS_PRIVATE void freeFileLocking(void);
#endif /* POSIX_FILELOCK_H */
#ifndef ITIMER_H
#define ITIMER_H
-extern lnat getourtimeofday ( void );
+RTS_PRIVATE lnat getourtimeofday ( void );
#endif /* ITIMER_H */
# include <signal.h>
#endif
-extern rtsBool anyUserHandlers(void);
+#pragma GCC visibility push(hidden)
+
+rtsBool anyUserHandlers(void);
#if !defined(THREADED_RTS)
extern siginfo_t pending_handler_buf[];
extern StgInt *signal_handlers;
+#pragma GCC visibility pop
+
#endif /* POSIX_SIGNALS_H */
#ifndef POSIX_TTY_H
#define POSIX_TTY_H
-void resetTerminalSettings (void);
+RTS_PRIVATE void resetTerminalSettings (void);
#endif /* POSIX_TTY_H */
-
#ifndef BLOCK_ALLOC_H
#define BLOCK_ALLOC_H
+#pragma GCC visibility push(hidden)
+
/* Debugging -------------------------------------------------------------- */
#ifdef DEBUG
-extern void checkFreeListSanity(void);
-nat countFreeList(void);
-void markBlocks (bdescr *bd);
-void reportUnmarkedBlocks (void);
+void checkFreeListSanity(void);
+nat countFreeList(void);
+void markBlocks (bdescr *bd);
+void reportUnmarkedBlocks (void);
#endif
extern lnat n_alloc_blocks; // currently allocated blocks
extern lnat hw_alloc_blocks; // high-water allocated blocks
+#pragma GCC visibility pop
+
#endif /* BLOCK_ALLOC_H */
#ifndef SM_COMPACT_H
#define SM_COMPACT_H
+#pragma GCC visibility push(hidden)
+
INLINE_HEADER rtsBool
mark_stack_empty(void)
{
return (*bitmap_word & bit_mask);
}
-extern void compact (StgClosure *static_objects);
+void compact (StgClosure *static_objects);
+
+#pragma GCC visibility pop
#endif /* SM_COMPACT_H */
#ifndef SM_EVAC_H
#define SM_EVAC_H
+#pragma GCC visibility push(hidden)
+
// Use a register argument for evacuate, if available.
// Earlier, the regparm attribute was used whenever __GNUC__ >= 2, but this
// generated warnings on PPC. So the use is restricted further.
extern lnat thunk_selector_depth;
+#pragma GCC visibility pop
+
#endif /* SM_EVAC_H */
#ifndef SM_GC_H
#define SM_GC_H
+#pragma GCC visibility push(hidden)
+
void GarbageCollect(rtsBool force_major_gc, nat gc_type, Capability *cap);
typedef void (*evac_fn)(void *user, StgClosure **root);
#define WORK_UNIT_WORDS 128
+#pragma GCC visibility pop
+
#endif /* SM_GC_H */
#include "WSDeque.h"
+#pragma GCC visibility push(hidden)
+
/* -----------------------------------------------------------------------------
General scheme
#endif
+#pragma GCC visibility pop
+
#endif // SM_GCTHREAD_H
#ifndef SM_GCUTILS_H
#define SM_GCUTILS_H
+#pragma GCC visibility push(hidden)
+
bdescr *allocBlock_sync(void);
void freeChain_sync(bdescr *bd);
*bd->free++ = (StgWord)p;
}
+#pragma GCC visibility pop
+
#endif /* SM_GCUTILS_H */
#ifndef SM_MARKWEAK_H
#define SM_MARKWEAK_H
+#pragma GCC visibility push(hidden)
+
extern StgWeak *old_weak_ptr_list;
extern StgTSO *resurrected_threads;
extern StgTSO *exception_threads;
void markWeakPtrList ( void );
rtsBool traverseBlackholeQueue ( void );
+#pragma GCC visibility pop
+
#endif /* SM_MARKWEAK_H */
#ifndef SM_OSMEM_H
#define SM_OSMEM_H
+#pragma GCC visibility push(hidden)
+
void osMemInit(void);
void *osGetMBlocks(nat n);
void osFreeAllMBlocks(void);
lnat getPageSize (void);
void setExecutable (void *p, lnat len, rtsBool exec);
+#pragma GCC visibility pop
+
#endif /* SM_OSMEM_H */
#ifndef SM_SCAV_H
#define SM_SCAV_H
+#pragma GCC visibility push(hidden)
+
void scavenge_loop (void);
void scavenge_mutable_list (bdescr *bd, generation *gen);
void scavenge_capability_mut_lists (Capability *cap);
void scavenge_capability_mut_Lists1 (Capability *cap);
#endif
+#pragma GCC visibility pop
+
#endif /* SM_SCAV_H */
#ifndef SM_STORAGE_H
#define SM_STORAGE_H
+#pragma GCC visibility push(hidden)
+
/* -----------------------------------------------------------------------------
Initialisation / De-initialisation
-------------------------------------------------------------------------- */
extern StgClosure * caf_list;
extern StgClosure * revertible_caf_list;
+#pragma GCC visibility pop
+
#endif /* SM_STORAGE_H */
#ifndef SM_SWEEP_H
#define SM_SWEEP_H
-void sweep(step *gen);
+RTS_PRIVATE void sweep(step *gen);
#endif /* SM_SWEEP_H */