X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FPrelude.h;h=8e268f43f148a56b295f9027fe7cc69f99483f23;hb=423d477bfecd490de1449c59325c8776f91d7aac;hp=0e3aeec15f54ccdd8e95712dec8213434bcf8ad7;hpb=85cc3996c63bd36dabda875beb3ce19a94e38b1e;p=ghc-hetmet.git diff --git a/ghc/rts/Prelude.h b/ghc/rts/Prelude.h index 0e3aeec..8e268f4 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.26 2004/08/13 13:10:12 simonmar Exp $ * - * (c) The GHC Team, 1998-1999 + * (c) The GHC Team, 1998-2004 * * Prelude identifiers that we sometimes need to refer to in the RTS. * @@ -10,97 +10,117 @@ #ifndef PRELUDE_H #define PRELUDE_H -#ifdef COMPILING_RTS - -#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; -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 const StgClosure PrelMain_mainIO_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; -extern DLL_IMPORT const StgInfoTable PrelFloat_Dzh_static_info; -extern DLL_IMPORT const StgInfoTable PrelAddr_Azh_static_info; -extern DLL_IMPORT const StgInfoTable PrelAddr_Wzh_static_info; -extern DLL_IMPORT const StgInfoTable PrelBase_Czh_con_info; -extern DLL_IMPORT const StgInfoTable PrelBase_Izh_con_info; -extern DLL_IMPORT const StgInfoTable PrelFloat_Fzh_con_info; -extern DLL_IMPORT const StgInfoTable PrelFloat_Dzh_con_info; -extern DLL_IMPORT const StgInfoTable PrelAddr_Azh_con_info; -extern DLL_IMPORT const StgInfoTable PrelAddr_Wzh_con_info; -extern DLL_IMPORT const StgInfoTable PrelAddr_I64zh_con_info; -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; +/* These definitions are required by the RTS .cmm files too, so we + * need declarations that we can #include into the generated .hc files. + */ +#if IN_STG_CODE +#define PRELUDE_INFO(i) extern W_(i)[] +#define PRELUDE_CLOSURE(i) extern W_(i)[] +#else +#define PRELUDE_INFO(i) extern DLL_IMPORT const StgInfoTable i +#define PRELUDE_CLOSURE(i) extern DLL_IMPORT StgClosure i +#endif /* Define canonical names so we can abstract away from the actual - * module these names are defined in. + * modules these names are defined in. */ -#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 +PRELUDE_CLOSURE(GHCziBase_True_closure); +PRELUDE_CLOSURE(GHCziBase_False_closure); +PRELUDE_CLOSURE(GHCziPack_unpackCString_closure); +PRELUDE_CLOSURE(GHCziWeak_runFinalizzerBatch_closure); -#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; +#ifdef IN_STG_CODE +extern W_ ZCMain_main_closure[]; +#else +extern StgClosure ZCMain_main_closure; +#endif -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; +PRELUDE_CLOSURE(GHCziIOBase_stackOverflow_closure); +PRELUDE_CLOSURE(GHCziIOBase_heapOverflow_closure); +PRELUDE_CLOSURE(GHCziIOBase_BlockedOnDeadMVar_closure); +PRELUDE_CLOSURE(GHCziIOBase_NonTermination_closure); -#define W64zh_con_info I64zh_con_info -#define W64zh_static_info I64zh_con_info +PRELUDE_INFO(GHCziBase_Czh_static_info); +PRELUDE_INFO(GHCziBase_Izh_static_info); +PRELUDE_INFO(GHCziFloat_Fzh_static_info); +PRELUDE_INFO(GHCziFloat_Dzh_static_info); +PRELUDE_INFO(Addr_Azh_static_info); +PRELUDE_INFO(GHCziPtr_Ptr_static_info); +PRELUDE_INFO(GHCziPtr_FunPtr_static_info); +PRELUDE_INFO(GHCziInt_I8zh_static_info); +PRELUDE_INFO(GHCziInt_I16zh_static_info); +PRELUDE_INFO(GHCziInt_I32zh_static_info); +PRELUDE_INFO(GHCziInt_I64zh_static_info); +PRELUDE_INFO(GHCziWord_Wzh_static_info); +PRELUDE_INFO(GHCziWord_W8zh_static_info); +PRELUDE_INFO(GHCziWord_W16zh_static_info); +PRELUDE_INFO(GHCziWord_W32zh_static_info); +PRELUDE_INFO(GHCziWord_W64zh_static_info); +PRELUDE_INFO(GHCziBase_Czh_con_info); +PRELUDE_INFO(GHCziBase_Izh_con_info); +PRELUDE_INFO(GHCziFloat_Fzh_con_info); +PRELUDE_INFO(GHCziFloat_Dzh_con_info); +PRELUDE_INFO(GHCziPtr_Ptr_con_info); +PRELUDE_INFO(GHCziPtr_FunPtr_con_info); +PRELUDE_INFO(Addr_Azh_con_info); +PRELUDE_INFO(GHCziWord_Wzh_con_info); +PRELUDE_INFO(GHCziInt_I8zh_con_info); +PRELUDE_INFO(GHCziInt_I16zh_con_info); +PRELUDE_INFO(GHCziInt_I32zh_con_info); +PRELUDE_INFO(GHCziInt_I64zh_con_info); +PRELUDE_INFO(GHCziWord_W8zh_con_info); +PRELUDE_INFO(GHCziWord_W16zh_con_info); +PRELUDE_INFO(GHCziWord_W32zh_con_info); +PRELUDE_INFO(GHCziWord_W64zh_con_info); +PRELUDE_INFO(GHCziStable_StablePtr_static_info); +PRELUDE_INFO(GHCziStable_StablePtr_con_info); -#define PutFullMVar_closure PrelException_PutFullMVar_static_closure -extern const StgInfoTable PutFullMVar_closure; +#define True_closure (&GHCziBase_True_closure) +#define False_closure (&GHCziBase_False_closure) +#define unpackCString_closure (&GHCziPack_unpackCString_closure) +#define runFinalizerBatch_closure (&GHCziWeak_runFinalizzerBatch_closure) +#define mainIO_closure (&ZCMain_main_closure) -#endif +#define stackOverflow_closure (&GHCziIOBase_stackOverflow_closure) +#define heapOverflow_closure (&GHCziIOBase_heapOverflow_closure) +#define BlockedOnDeadMVar_closure (&GHCziIOBase_BlockedOnDeadMVar_closure) +#define NonTermination_closure (&GHCziIOBase_NonTermination_closure) -#endif /* COMPILING_RTS */ +#define Czh_static_info (&GHCziBase_Czh_static_info) +#define Fzh_static_info (&GHCziFloat_Fzh_static_info) +#define Dzh_static_info (&GHCziFloat_Dzh_static_info) +#define Azh_static_info (&Addr_Azh_static_info) +#define Izh_static_info (&GHCziBase_Izh_static_info) +#define I8zh_static_info (&GHCziInt_I8zh_static_info) +#define I16zh_static_info (&GHCziInt_I16zh_static_info) +#define I32zh_static_info (&GHCziInt_I32zh_static_info) +#define I64zh_static_info (&GHCziInt_I64zh_static_info) +#define Wzh_static_info (&GHCziWord_Wzh_static_info) +#define W8zh_static_info (&GHCziWord_W8zh_static_info) +#define W16zh_static_info (&GHCziWord_W16zh_static_info) +#define W32zh_static_info (&GHCziWord_W32zh_static_info) +#define W64zh_static_info (&GHCziWord_W64zh_static_info) +#define Ptr_static_info (&GHCziPtr_Ptr_static_info) +#define FunPtr_static_info (&GHCziPtr_FunPtr_static_info) +#define Czh_con_info (&GHCziBase_Czh_con_info) +#define Izh_con_info (&GHCziBase_Izh_con_info) +#define Fzh_con_info (&GHCziFloat_Fzh_con_info) +#define Dzh_con_info (&GHCziFloat_Dzh_con_info) +#define Azh_con_info (&Addr_Azh_con_info) +#define Wzh_con_info (&GHCziWord_Wzh_con_info) +#define W8zh_con_info (&GHCziWord_W8zh_con_info) +#define W16zh_con_info (&GHCziWord_W16zh_con_info) +#define W32zh_con_info (&GHCziWord_W32zh_con_info) +#define W64zh_con_info (&GHCziWord_W64zh_con_info) +#define I8zh_con_info (&GHCziInt_I8zh_con_info) +#define I16zh_con_info (&GHCziInt_I16zh_con_info) +#define I32zh_con_info (&GHCziInt_I32zh_con_info) +#define I64zh_con_info (&GHCziInt_I64zh_con_info) +#define I64zh_con_info (&GHCziInt_I64zh_con_info) +#define Ptr_con_info (&GHCziPtr_Ptr_con_info) +#define FunPtr_con_info (&GHCziPtr_FunPtr_con_info) +#define StablePtr_static_info (&GHCziStable_StablePtr_static_info) +#define StablePtr_con_info (&GHCziStable_StablePtr_con_info) #endif /* PRELUDE_H */