From 0d5d32bf62c39c390934d9ef4b01e2bf2db910f8 Mon Sep 17 00:00:00 2001 From: simonmar <unknown> Date: Mon, 13 Mar 2000 10:53:56 +0000 Subject: [PATCH] [project @ 2000-03-13 10:53:55 by simonmar] Move Prelude.h from ghc/includes into ghc/rts. It's essentially a list of the things from the Prelude that the RTS depends on, and isn't relevant to STG code. Furthermore, this helps to clarify which parts of the RTS depend on things from the Prelude (by an explicity #include). --- ghc/includes/Stg.h | 5 +- ghc/rts/Main.c | 3 +- ghc/rts/Prelude.h | 103 +++++++++++++++++++++++++++++++++++++ ghc/rts/PrimOps.hc | 6 ++- ghc/rts/RtsAPI.c | 3 +- ghc/rts/Schedule.c | 3 +- ghc/rts/StgMiscClosures.hc | 3 +- 7 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 ghc/rts/Prelude.h diff --git a/ghc/includes/Stg.h b/ghc/includes/Stg.h index 0ae31a0d9445..cf0f6f5dc763 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 49abe0323ddc..154eaa4bbbea 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 000000000000..82123195b8f1 --- /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 709947a8289e..ff672a02d7e4 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 fb4df6ced2fd..0009fb69bded 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 fa7ce4136404..a425fc203195 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 c904f9db6264..5e966c39099c 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 */ -- GitLab