diff --git a/ghc/includes/Stg.h b/ghc/includes/Stg.h index 0ae31a0d944584ec40d3296af1d6f1d908b904b5..cf0f6f5dc763f12e7cdb225be6aaf9fa65c7ef79 100644 --- a/ghc/includes/Stg.h +++ b/ghc/includes/Stg.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Stg.h,v 1.22 2000/01/13 14:34:01 hwloidl Exp $ + * $Id: Stg.h,v 1.23 2000/03/13 10:53:55 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -156,9 +156,6 @@ void _stgAssert (char *, unsigned int); /* GNU mp library */ #include "gmp.h" -/* Wired-in Prelude identifiers */ -#include "Prelude.h" - /* Storage Manager */ #include "StgStorage.h" diff --git a/ghc/rts/Main.c b/ghc/rts/Main.c index 49abe0323ddcb83fe1eebb39ce7dcb8b3d140b48..154eaa4bbbead77993594752380f0b181b02b847 100644 --- a/ghc/rts/Main.c +++ b/ghc/rts/Main.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Main.c,v 1.16 2000/01/14 13:38:54 simonmar Exp $ + * $Id: Main.c,v 1.17 2000/03/13 10:53:55 simonmar Exp $ * * (c) The GHC Team 1998-1999 * @@ -14,6 +14,7 @@ #include "SchedAPI.h" #include "RtsFlags.h" #include "RtsUtils.h" +#include "Prelude.h" #ifdef DEBUG # include "Printer.h" /* for printing */ diff --git a/ghc/rts/Prelude.h b/ghc/rts/Prelude.h new file mode 100644 index 0000000000000000000000000000000000000000..82123195b8f1358c5e66f5c7e8a54db411501423 --- /dev/null +++ b/ghc/rts/Prelude.h @@ -0,0 +1,103 @@ +/* ----------------------------------------------------------------------------- + * $Id: Prelude.h,v 1.1 2000/03/13 10:53:56 simonmar Exp $ + * + * (c) The GHC Team, 1998-1999 + * + * Prelude identifiers that we sometimes need to refer to in the RTS. + * + * ---------------------------------------------------------------------------*/ + +#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; + +/* Define canonical names so we can abstract away from the actual + * module 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 + +#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 + +#endif + +#endif /* COMPILING_RTS */ + +#endif /* PRELUDE_H */ diff --git a/ghc/rts/PrimOps.hc b/ghc/rts/PrimOps.hc index 709947a8289ef1d9860418abe8188b1efb4e4f6b..ff672a02d7e429f32d322ef7677c0862bfb34ef3 100644 --- a/ghc/rts/PrimOps.hc +++ b/ghc/rts/PrimOps.hc @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: PrimOps.hc,v 1.43 2000/02/28 13:59:43 simonmar Exp $ + * $Id: PrimOps.hc,v 1.44 2000/03/13 10:53:56 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -19,6 +19,7 @@ #include "StablePriv.h" #include "HeapStackCheck.h" #include "StgRun.h" +#include "Prelude.h" /* ** temporary ** @@ -903,7 +904,8 @@ FN_(putMVarzh_fast) #endif if (info == &FULL_MVAR_info) { - barf("putMVar#: MVar already full"); + R1.cl = (StgClosure *)&PutFullMVar_closure; + JMP_(raisezh_fast); } mvar->value = R2.cl; diff --git a/ghc/rts/RtsAPI.c b/ghc/rts/RtsAPI.c index fb4df6ced2fda128dbdd8470e133c8e36d231e47..0009fb69bdede45e0c41e431c3b967b487cd9f59 100644 --- a/ghc/rts/RtsAPI.c +++ b/ghc/rts/RtsAPI.c @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.c,v 1.10 1999/11/02 15:05:59 simonmar Exp $ + * $Id: RtsAPI.c,v 1.11 2000/03/13 10:53:56 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -13,6 +13,7 @@ #include "SchedAPI.h" #include "RtsFlags.h" #include "RtsUtils.h" +#include "Prelude.h" /* ---------------------------------------------------------------------------- Building Haskell objects from C datatypes. diff --git a/ghc/rts/Schedule.c b/ghc/rts/Schedule.c index fa7ce4136404c7ac1b470fddec52b9b2acb10b2d..a425fc203195b99b937890d4a4b78b431e83b6b9 100644 --- a/ghc/rts/Schedule.c +++ b/ghc/rts/Schedule.c @@ -1,5 +1,5 @@ /* --------------------------------------------------------------------------- - * $Id: Schedule.c,v 1.50 2000/03/13 09:57:16 simonmar Exp $ + * $Id: Schedule.c,v 1.51 2000/03/13 10:53:56 simonmar Exp $ * * (c) The GHC Team, 1998-2000 * @@ -72,6 +72,7 @@ #include "Sanity.h" #include "Stats.h" #include "Sparks.h" +#include "Prelude.h" #if defined(GRAN) || defined(PAR) # include "GranSimRts.h" # include "GranSim.h" diff --git a/ghc/rts/StgMiscClosures.hc b/ghc/rts/StgMiscClosures.hc index c904f9db6264f0989da2626235f9fa9731efa86a..5e966c39099c6a5fad5ace4d5aa11a7be4f9c2a2 100644 --- a/ghc/rts/StgMiscClosures.hc +++ b/ghc/rts/StgMiscClosures.hc @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: StgMiscClosures.hc,v 1.36 2000/03/01 16:57:57 sewardj Exp $ + * $Id: StgMiscClosures.hc,v 1.37 2000/03/13 10:53:55 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -15,6 +15,7 @@ #include "Storage.h" #include "StoragePriv.h" #include "ProfRts.h" +#include "Prelude.h" #include "SMP.h" #if defined(GRAN) || defined(PAR) # include "GranSimRts.h" /* for DumpRawGranEvent */