/* -----------------------------------------------------------------------------
- * $Id: StgMiscClosures.h,v 1.22 2000/11/13 14:40:36 simonmar Exp $
+ * $Id: StgMiscClosures.h,v 1.38 2001/03/22 03:51:09 hwloidl Exp $
*
* (c) The GHC Team, 1998-1999
*
STGFUN(stg_IND_OLDGEN_PERM_entry);
STGFUN(stg_CAF_UNENTERED_entry);
STGFUN(stg_CAF_ENTERED_entry);
-STGFUN(stg_CAF_BLACKHOLE_entry);
STGFUN(stg_BLACKHOLE_entry);
+STGFUN(stg_CAF_BLACKHOLE_entry);
STGFUN(stg_BLACKHOLE_BQ_entry);
#ifdef SMP
STGFUN(stg_WHITEHOLE_entry);
STGFUN(stg_END_MUT_LIST_entry);
STGFUN(stg_dummy_ret_entry);
-#ifdef GHCI
-/* entry code for constructors created by the metacircular interpreter */
-STGFUN(stg_mci_constr_entry);
-STGFUN(stg_mci_constr1_entry);
-STGFUN(stg_mci_constr2_entry);
-STGFUN(stg_mci_constr3_entry);
-STGFUN(stg_mci_constr4_entry);
-STGFUN(stg_mci_constr5_entry);
-STGFUN(stg_mci_constr6_entry);
-STGFUN(stg_mci_constr7_entry);
-STGFUN(stg_mci_constr8_entry);
-#endif
-
+/* entry code for constructors created by the bytecode interpreter */
+STGFUN(stg_interp_constr_entry);
+STGFUN(stg_interp_constr1_entry);
+STGFUN(stg_interp_constr2_entry);
+STGFUN(stg_interp_constr3_entry);
+STGFUN(stg_interp_constr4_entry);
+STGFUN(stg_interp_constr5_entry);
+STGFUN(stg_interp_constr6_entry);
+STGFUN(stg_interp_constr7_entry);
+STGFUN(stg_interp_constr8_entry);
+
+/* Magic glue code for when compiled code returns a value in R1/F1/D1
+ or a VoidRep to the interpreter. */
+extern DLL_IMPORT_RTS const vec_info_8 stg_ctoi_ret_R1p_info;
+extern DLL_IMPORT_RTS const vec_info_8 stg_ctoi_ret_R1n_info;
+extern DLL_IMPORT_RTS const vec_info_8 stg_ctoi_ret_F1_info;
+extern DLL_IMPORT_RTS const vec_info_8 stg_ctoi_ret_D1_info;
+extern DLL_IMPORT_RTS const vec_info_8 stg_ctoi_ret_V_info;
+
+/* Used by the interpreter to return an unboxed value on the stack to
+ compiled code. */
+extern DLL_IMPORT_RTS const StgInfoTable stg_gc_unbx_r1_info;
+extern DLL_IMPORT_RTS const StgInfoTable stg_gc_f1_info;
+extern DLL_IMPORT_RTS const StgInfoTable stg_gc_d1_info;
+
+/* this is the NIL ptr for a TSO queue (e.g. runnable queue) */
+#define END_TSO_QUEUE ((StgTSO *)(void*)&stg_END_TSO_QUEUE_closure)
+/* this is the NIL ptr for a list CAFs */
+#define END_ECAF_LIST ((StgCAF *)(void*)&stg_END_TSO_QUEUE_closure)
#if defined(PAR) || defined(GRAN)
/* this is the NIL ptr for a blocking queue */
-# define END_BQ_QUEUE ((StgBlockingQueueElement *)(void*)&END_TSO_QUEUE_closure)
+# define END_BQ_QUEUE ((StgBlockingQueueElement *)(void*)&stg_END_TSO_QUEUE_closure)
/* this is the NIL ptr for a blocked fetch queue (as in PendingFetches in GUM) */
-# define END_BF_QUEUE ((StgBlockedFetch *)(void*)&END_TSO_QUEUE_closure)
+# define END_BF_QUEUE ((StgBlockedFetch *)(void*)&stg_END_TSO_QUEUE_closure)
#endif
+/* ToDo?: different name for end of sleeping queue ? -- HWL */
/* info tables */
extern DLL_IMPORT_RTS const StgInfoTable stg_IND_OLDGEN_PERM_info;
extern DLL_IMPORT_RTS const StgInfoTable stg_CAF_UNENTERED_info;
extern DLL_IMPORT_RTS const StgInfoTable stg_CAF_ENTERED_info;
-extern DLL_IMPORT_RTS const StgInfoTable stg_CAF_BLACKHOLE_info;
extern DLL_IMPORT_RTS const StgInfoTable stg_BLACKHOLE_info;
+extern DLL_IMPORT_RTS const StgInfoTable stg_CAF_BLACKHOLE_info;
extern DLL_IMPORT_RTS const StgInfoTable stg_BLACKHOLE_BQ_info;
#ifdef SMP
extern DLL_IMPORT_RTS const StgInfoTable stg_WHITEHOLE_info;
#if defined(PAR) || defined(GRAN)
extern DLL_IMPORT_RTS const StgInfoTable stg_RBH_info;
#endif
+#if defined(PAR)
+extern DLL_IMPORT_RTS const StgInfoTable stg_FETCH_ME_BQ_info;
+#endif
extern DLL_IMPORT_RTS const StgInfoTable stg_BCO_info;
extern DLL_IMPORT_RTS const StgInfoTable stg_EVACUATED_info;
extern DLL_IMPORT_RTS const StgInfoTable stg_FOREIGN_info;
extern DLL_IMPORT_RTS const StgInfoTable stg_seq_info;
extern DLL_IMPORT_RTS const StgInfoTable stg_dummy_ret_info;
-#ifdef INTERPRETER
-
-EXTFUN(Hugs_CONSTR_entry);
-
-extern const vec_info_8 stg_ret_bco_info;
-
-#endif /* INTERPRETER */
-
/* closures */
extern DLL_IMPORT_RTS StgClosure stg_END_TSO_QUEUE_closure;