* included in the distribution.
*
* $RCSfile: connect.h,v $
- * $Revision: 1.37 $
- * $Date: 2000/04/06 00:01:26 $
+ * $Revision: 1.44 $
+ * $Date: 2000/06/28 10:42:17 $
* ------------------------------------------------------------------------*/
/* --------------------------------------------------------------------------
extern Float whnfFloat; /* float value of term in whnf */
extern Long numCells; /* number of cells allocated */
extern Int numGcs; /* number of garbage collections */
+extern int numEnters; /* number of enters */
extern Bool preludeLoaded; /* TRUE => prelude has been loaded */
extern Bool flagAssert; /* TRUE => assert False <e> causes
an assertion failure */
extern Void liftControl ( Int );
extern Void substitution ( Int );
extern Void typeChecker ( Int );
-extern Void interface ( Int );
+extern Void interfayce ( Int );
extern Void storage ( Int );
extern Void foreignExport ( Cell,Text,Cell,Cell,Cell );
extern Void implementForeignImport ( Name );
+extern Text makeTypeDescrText ( Type );
extern Void implementForeignExport ( Name );
extern List foreignExports; /* foreign export declarations */
extern Int outColumn; /* current output column number */
-
-/*---------------------------------------------------------------------------
- * Crude profiling (probably doesn't work)
- *-------------------------------------------------------------------------*/
-
-#ifdef CRUDE_PROFILING
-extern void cp_init ( void );
-extern void cp_enter ( Cell /*StgVar*/ );
-extern void cp_bill_words ( int );
-extern void cp_bill_insns ( int );
-extern void cp_show ( void );
-#endif
-
-
/*---------------------------------------------------------------------------
* For dynamic.c and general object-related stuff
*-------------------------------------------------------------------------*/
to get the signal mask to a sane state each time.
*/
#include <signal.h>
+
+#if !defined(mingw32_TARGET_OS)
+
#define setHandler(bh) { sigset_t mask; \
signal(SIGINT,bh); \
sigemptyset(&mask); \
sigprocmask(SIG_UNBLOCK, &mask, NULL); \
}
+#else
+
+#define setHandler(bh) { void* old_hdlr = signal(SIGINT,bh);\
+ if (old_hdlr == SIG_ERR) internal("setHandler"); \
+ }
+
+#endif /* !defined(mingw32_TARGET_OS) */
/*---------------------------------------------------------------------------
* Environment variables and the registry
*-------------------------------------------------------------------------*/
-/* On Win32 we can use the registry to supplement info in environment
- * variables.
- */
-/* AJG: Commented out for now for development */
-/* #define USE_REGISTRY (HAVE_WINDOWS_H && !__MSDOS__) */
-
-#ifdef USE_REGISTRY
-Bool writeRegString ( String var, String val );
-String readRegString ( String var, String def );
-Int readRegInt ( String var, Int def );
-Bool writeRegInt ( String var, Int val );
-#endif
-
#define N_INSTALLDIR 200
extern char installDir[N_INSTALLDIR];
* Freevar analysis: list of free vars after
* Lambda lifting: freevar list or UNIT on input, discarded after
* Code generation: unused
- * Optimisation: number of uses (sort-of) of let-bound variable
* ------------------------------------------------------------------------*/
typedef Cell StgRhs;
extern Name implementRecEq ( Text );
#endif
-/* Association list storing globals assigned to dictionaries, tuples, etc */
-extern List stgGlobals;
-
-extern List liftBinds ( List binds );
+extern void liftModule ( Module );
extern StgExpr substExpr ( List sub, StgExpr e );
extern List freeVarsBind ( List, StgVar );
-extern Void cgBinds ( StgRhs );
-extern void* closureOfVar ( StgVar );
+extern Void cgModule ( Module );
extern char* lookupHugsName ( void* );