[project @ 2000-03-13 10:53:55 by simonmar]
authorsimonmar <unknown>
Mon, 13 Mar 2000 10:53:56 +0000 (10:53 +0000)
committersimonmar <unknown>
Mon, 13 Mar 2000 10:53:56 +0000 (10:53 +0000)
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
ghc/rts/Main.c
ghc/rts/Prelude.h [new file with mode: 0644]
ghc/rts/PrimOps.hc
ghc/rts/RtsAPI.c
ghc/rts/Schedule.c
ghc/rts/StgMiscClosures.hc

index 0ae31a0..cf0f6f5 100644 (file)
@@ -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"
 
index 49abe03..154eaa4 100644 (file)
@@ -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 (file)
index 0000000..8212319
--- /dev/null
@@ -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 */
index 709947a..ff672a0 100644 (file)
@@ -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;
index fb4df6c..0009fb6 100644 (file)
@@ -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.
index fa7ce41..a425fc2 100644 (file)
@@ -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"
index c904f9d..5e966c3 100644 (file)
@@ -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 */