X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FPrelude.h;h=c2f6ca99983d009387ccd4ed7e87c2a70456ca89;hb=3cb2f910c98f448abdda935b85fe02fc4a138856;hp=0e3aeec15f54ccdd8e95712dec8213434bcf8ad7;hpb=85cc3996c63bd36dabda875beb3ce19a94e38b1e;p=ghc-hetmet.git diff --git a/ghc/rts/Prelude.h b/ghc/rts/Prelude.h index 0e3aeec..c2f6ca9 100644 --- a/ghc/rts/Prelude.h +++ b/ghc/rts/Prelude.h @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------------- - * $Id: Prelude.h,v 1.2 2000/03/13 13:00:00 sewardj Exp $ + * $Id: Prelude.h,v 1.12 2000/07/07 11:03:57 simonmar Exp $ * - * (c) The GHC Team, 1998-1999 + * (c) The GHC Team, 1998-2000 * * Prelude identifiers that we sometimes need to refer to in the RTS. * @@ -10,20 +10,23 @@ #ifndef PRELUDE_H #define PRELUDE_H -#ifdef COMPILING_RTS +/* Define canonical names so we can abstract away from the actual + * module these names are defined in. + */ -#ifdef COMPILER -extern DLL_IMPORT const StgClosure PrelBase_Z91Z93_static_closure; -extern DLL_IMPORT const StgClosure PrelBase_Z40Z41_static_closure; -extern DLL_IMPORT const StgClosure PrelBase_True_static_closure; -extern DLL_IMPORT const StgClosure PrelBase_False_static_closure; +#ifndef INTERPRETER +extern DLL_IMPORT const StgClosure PrelBase_True_closure; +extern DLL_IMPORT const StgClosure PrelBase_False_closure; extern DLL_IMPORT const StgClosure PrelPack_unpackCString_closure; -extern DLL_IMPORT const StgClosure PrelException_stackOverflow_closure; -extern DLL_IMPORT const StgClosure PrelException_heapOverflow_closure; -extern DLL_IMPORT const StgClosure PrelException_PutFullMVar_static_closure; -extern DLL_IMPORT const StgClosure PrelException_NonTermination_static_closure; +extern DLL_IMPORT const StgClosure PrelWeak_runFinalizzerBatch_closure; extern const StgClosure PrelMain_mainIO_closure; +extern DLL_IMPORT const StgClosure PrelIOBase_stackOverflow_closure; +extern DLL_IMPORT const StgClosure PrelIOBase_heapOverflow_closure; +extern DLL_IMPORT const StgClosure PrelIOBase_PutFullMVar_closure; +extern DLL_IMPORT const StgClosure PrelIOBase_BlockedOnDeadMVar_closure; +extern DLL_IMPORT const StgClosure PrelIOBase_NonTermination_closure; + extern DLL_IMPORT const StgInfoTable PrelBase_Czh_static_info; extern DLL_IMPORT const StgInfoTable PrelBase_Izh_static_info; extern DLL_IMPORT const StgInfoTable PrelFloat_Fzh_static_info; @@ -41,66 +44,106 @@ extern DLL_IMPORT const StgInfoTable PrelAddr_W64zh_con_info; extern DLL_IMPORT const StgInfoTable PrelStable_StablePtr_static_info; extern DLL_IMPORT const StgInfoTable PrelStable_StablePtr_con_info; -/* Define canonical names so we can abstract away from the actual - * module these names are defined in. +#define True_closure (&PrelBase_True_closure) +#define False_closure (&PrelBase_False_closure) +#define unpackCString_closure (&PrelPack_unpackCString_closure) +#define runFinalizerBatch_closure (&PrelWeak_runFinalizzerBatch_closure) +#define mainIO_closure (&PrelMain_mainIO_closure) + +#define stackOverflow_closure (&PrelIOBase_stackOverflow_closure) +#define heapOverflow_closure (&PrelIOBase_heapOverflow_closure) +#define PutFullMVar_closure (&PrelIOBase_PutFullMVar_closure) +#define BlockedOnDeadMVar_closure (&PrelIOBase_BlockedOnDeadMVar_closure) +#define NonTermination_closure (&PrelIOBase_NonTermination_closure) + +#define Czh_static_info (&PrelBase_Czh_static_info) +#define Izh_static_info (&PrelBase_Izh_static_info) +#define Fzh_static_info (&PrelFloat_Fzh_static_info) +#define Dzh_static_info (&PrelFloat_Dzh_static_info) +#define Azh_static_info (&PrelAddr_Azh_static_info) +#define Wzh_static_info (&PrelAddr_Wzh_static_info) +#define Czh_con_info (&PrelBase_Czh_con_info) +#define Izh_con_info (&PrelBase_Izh_con_info) +#define Fzh_con_info (&PrelFloat_Fzh_con_info) +#define Dzh_con_info (&PrelFloat_Dzh_con_info) +#define Azh_con_info (&PrelAddr_Azh_con_info) +#define Wzh_con_info (&PrelAddr_Wzh_con_info) +#define W64zh_con_info (&PrelAddr_W64zh_con_info) +#define I64zh_con_info (&PrelAddr_I64zh_con_info) +#define StablePtr_static_info (&PrelStable_StablePtr_static_info) +#define StablePtr_con_info (&PrelStable_StablePtr_con_info) + +#else /* INTERPRETER */ + +/* We need indirections to the Prelude stuff, because we can't link + * these symbols statically. */ +extern const StgClosure *ind_True_closure; +extern const StgClosure *ind_False_closure; +extern const StgClosure *ind_unpackCString_closure; +extern const StgClosure *ind_runFinalizerBatch_closure; + +extern const StgClosure *ind_stackOverflow_closure; +extern const StgClosure *ind_heapOverflow_closure; +extern const StgClosure *ind_PutFullMVar_closure; +extern const StgClosure *ind_BlockedOnDeadMVar_closure; +extern const StgClosure *ind_NonTermination_closure; + +extern const StgInfoTable *ind_Czh_static_info; +extern const StgInfoTable *ind_Izh_static_info; +extern const StgInfoTable *ind_Fzh_static_info; +extern const StgInfoTable *ind_Dzh_static_info; +extern const StgInfoTable *ind_Azh_static_info; +extern const StgInfoTable *ind_Wzh_static_info; +extern const StgInfoTable *ind_Czh_con_info; +extern const StgInfoTable *ind_Izh_con_info; +extern const StgInfoTable *ind_Fzh_con_info; +extern const StgInfoTable *ind_Dzh_con_info; +extern const StgInfoTable *ind_Azh_con_info; +extern const StgInfoTable *ind_Wzh_con_info; +extern const StgInfoTable *ind_I64zh_con_info; +extern const StgInfoTable *ind_W64zh_con_info; +extern const StgInfoTable *ind_StablePtr_static_info; +extern const StgInfoTable *ind_StablePtr_con_info; + +#define True_closure ind_True_closure +#define False_closure ind_False_closure +#define unpackCString_closure ind_unpackCString_closure +#define runFinalizerBatch_closure ind_runFinalizerBatch_closure + +#define stackOverflow_closure ind_stackOverflow_closure +#define heapOverflow_closure ind_heapOverflow_closure +#define PutFullMVar_closure ind_PutFullMVar_closure +#define BlockedOnDeadMVar_closure ind_BlockedOnDeadMVar_closure +#define NonTermination_closure ind_NonTermination_closure -#define Nil_closure PrelBase_ZMZN_static_closure -#define Unit_closure PrelBase_Z0T_static_closure -#define True_closure PrelBase_True_static_closure -#define False_closure PrelBase_False_static_closure -#define stackOverflow_closure PrelException_stackOverflow_closure -#define heapOverflow_closure PrelException_heapOverflow_closure -#define PutFullMVar_closure PrelException_PutFullMVar_static_closure -#define NonTermination_closure PrelException_NonTermination_static_closure -#define Czh_static_info PrelBase_Czh_static_info -#define Izh_static_info PrelBase_Izh_static_info -#define Fzh_static_info PrelFloat_Fzh_static_info -#define Dzh_static_info PrelFloat_Dzh_static_info -#define Azh_static_info PrelAddr_Azh_static_info -#define Wzh_static_info PrelAddr_Wzh_static_info -#define Czh_con_info PrelBase_Czh_con_info -#define Izh_con_info PrelBase_Izh_con_info -#define Fzh_con_info PrelFloat_Fzh_con_info -#define Dzh_con_info PrelFloat_Dzh_con_info -#define Azh_con_info PrelAddr_Azh_con_info -#define Wzh_con_info PrelAddr_Wzh_con_info -#define W64zh_con_info PrelAddr_W64zh_con_info -#define I64zh_con_info PrelAddr_I64zh_con_info -#define StablePtr_static_info PrelStable_StablePtr_static_info -#define StablePtr_con_info PrelStable_StablePtr_con_info - -#define mainIO_closure PrelMain_mainIO_closure -#define unpackCString_closure PrelPack_unpackCString_closure - -#else /* INTERPRETER, I guess */ - -extern const StgInfoTable Czh_con_info; -extern const StgInfoTable Izh_con_info; -extern const StgInfoTable I64zh_con_info; -extern const StgInfoTable Fzh_con_info; -extern const StgInfoTable Dzh_con_info; -extern const StgInfoTable Azh_con_info; -extern const StgInfoTable Wzh_con_info; -extern const StgInfoTable StablePtr_con_info; - -extern const StgInfoTable Czh_static_info; -extern const StgInfoTable Izh_static_info; -extern const StgInfoTable I64zh_static_info; -extern const StgInfoTable Fzh_static_info; -extern const StgInfoTable Dzh_static_info; -extern const StgInfoTable Azh_static_info; -extern const StgInfoTable Wzh_static_info; -extern const StgInfoTable StablePtr_static_info; - -#define W64zh_con_info I64zh_con_info -#define W64zh_static_info I64zh_con_info - -#define PutFullMVar_closure PrelException_PutFullMVar_static_closure -extern const StgInfoTable PutFullMVar_closure; +#define Czh_static_info ind_Czh_static_info +#define Izh_static_info ind_Izh_static_info +#define Fzh_static_info ind_Fzh_static_info +#define Dzh_static_info ind_Dzh_static_info +#define Azh_static_info ind_Azh_static_info +#define Wzh_static_info ind_Wzh_static_info +#define Czh_con_info ind_Czh_con_info +#define Izh_con_info ind_Izh_con_info +#define Fzh_con_info ind_Fzh_con_info +#define Dzh_con_info ind_Dzh_con_info +#define Azh_con_info ind_Azh_con_info +#define Wzh_con_info ind_Wzh_con_info +#define W64zh_con_info ind_W64zh_con_info +#define I64zh_con_info ind_I64zh_con_info +#define StablePtr_static_info ind_StablePtr_static_info +#define StablePtr_con_info ind_StablePtr_con_info + +#ifdef XMLAMBDA +/* The Inj constructor. Not present in combined mode or compiled code. */ + +extern const StgInfoTable *ind_Inj_con_info; +#define Inj_con_info ind_Inj_con_info + +#endif #endif -#endif /* COMPILING_RTS */ +void fixupRTStoPreludeRefs( void*(*)(char*) ); #endif /* PRELUDE_H */