[project @ 2000-01-06 11:57:11 by sewardj]
[ghc-hetmet.git] / ghc / includes / options.h
index ee54649..7775e56 100644 (file)
@@ -13,8 +13,8 @@
  * Hugs version 1.4, December 1997
  *
  * $RCSfile: options.h,v $
- * $Revision: 1.3 $
- * $Date: 1999/01/13 16:26:37 $
+ * $Revision: 1.16 $
+ * $Date: 2000/01/06 11:57:11 $
  * ------------------------------------------------------------------------*/
 
 
@@ -34,7 +34,7 @@
  * for HUGSFLAGS in the registry (Win32 only).  In all cases, use a 
  * string of the form -P"...".  
  */
-#define HUGSPATH ""
+#define HUGSPATH "."
 
 /* The directory name which is substituted for the string "{Hugs}"
  * in a path variable.  This normally points to where the Hugs libraries
  */
 #define PATH_CANONICALIZATION 0
 
-/* Define if a command line editor is available and should be used. 
- * There are two choices of command line editor that can be used with Hugs:
- * GNU readline and editline (from comp.sources.misc, vol 31, issue 71)
- */
-#define USE_READLINE 0
-
 /* Define if you want the small startup banner.
  */
 #define SMALL_BANNER 0
 #define LARGE_HUGS   1
 
 #define NUM_SYNTAX         100
-#define NUM_TUPLES         100
+#define NUM_TUPLES         37
 #define NUM_OFFSETS        1024
 #define NUM_CHARS          256
 #if TREX
 
 #define MINIMUMHEAP        Pick(7500,   19000,      19000)
 #define MAXIMUMHEAP        Pick(32765,  0,          0)
-#define DEFAULTHEAP        Pick(28000,  50000,      300000)
+#define DEFAULTHEAP        Pick(28000,  50000,      350000)
 
 #define NUM_SCRIPTS        Pick(64,     100,        100)
 #define NUM_MODULE         NUM_SCRIPTS
 #define NUM_NAME           Pick(1000,   2000,       16000)
 #define NUM_CLASSES        Pick(30,     40,         80)
 #define NUM_INSTS          Pick(200,    300,        600)
-#define NUM_TEXT           Pick(12000,  20000,      80000)
+#define NUM_TEXT           Pick(12000,  20000,      100000)
 #define NUM_TEXTH          Pick(1,      10,         10)
 #define NUM_TYVARS         Pick(800,    2000,       4000)
 #define NUM_STACK          Pick(1800,   12000,      16000)
 /* Should quantifiers be displayed in error messages.
  * Warning: not consistently used.
  */
-#define DISPLAY_QUANTIFIERS 1
+#define DISPLAY_QUANTIFIERS 0
 
 /* Flags to determine which raw representations and operations are available
  * Notes:
- * o the INTEGER implementation is quite different from GHC's
- *   implementation so you usually don't PROVIDE_INTEGER if
- *   using GHC compiled code.
  * o if you turn everything on, you might end up with more then 256
  *   bytecodes: check the value of i_ccall (the lst bytecode) to check
- * o Addrs are used to represent literal Strings in Hugs - so you can't
- *   really turn them off.
- * o Either Int64 or Integer has to be provided so that we can
- *   define BIGNUMTYPE (below)
+ * (JRS), 22apr99: I don't think any of the #undef'd ones will work
+ * without attention.  However, standard Haskell 98 is supported 
+ * is supported without needing them.
  */
+#undef  PROVIDE_STABLE
+#undef  PROVIDE_FOREIGN
+#undef  PROVIDE_WEAK
+#undef  PROVIDE_CONCURRENT
+#undef  PROVIDE_PTREQUALITY
+#undef  PROVIDE_COERCE
 
-#define        PROVIDE_INTEGER
-#define        PROVIDE_INT64
-#define        PROVIDE_WORD
-#define        PROVIDE_ADDR
-#define PROVIDE_STABLE
-#define PROVIDE_FOREIGN
-#define PROVIDE_WEAK
-#define PROVIDE_ARRAY
-#define PROVIDE_CONCURRENT
-#define PROVIDE_PTREQUALITY
-#define PROVIDE_COERCE
-
-/* The following aren't options at the moment - but could be
- * #define PROVIDE_FLOAT
- * #define PROVIDE_DOUBLE
- */
 
-/* Flags to determine how Haskell types are mapped onto internal types.
- * Note that this has to be an injection: you can't have two names
- * for the same internal type.
- * Also, the settings have to be consistent with GHC if GHC is being used.
- */
+/* Set to 1 to use a non-GMP implementation of integer, in the
+   standalone Hugs.  Set to 0 in the combined GHC-Hugs system,
+   in which case GNU MP will be used.
+*/
+#define STANDALONE_INTEGER 1
 
-#define BIGNUM_IS_INTEGER 1
-#define BIGNUM_IS_INT64   0
+/* Enable a crude profiler which counts BCO entries, bytes allocated
+   and bytecode insns executed on a per-fn basis.  Used for assessing
+   the effect of the simplifier/optimiser.
+*/
+#undef CRUDE_PROFILING
 
-#if BIGNUM_IS_INT64
-#define BIGNUMTYPE Int64
-#elif BIGNUM_IS_INTEGER
-#define BIGNUMTYPE Integer
-#else
-#warning BIGNUMTYPE undefined
-#endif
 
 /* Is the default default (Int,Double) or (Integer,Double)?
  */
-#define DEFAULT_BIGNUM 0
-
-/* Should lambda lifter lift constant expressions out to top level?
- * Experimental optimisation.
- */
-#define LIFT_CONSTANTS 1
-
-/* Should we run optimizer on Hugs code?
- * Experimental optimisation.
- */
-#define USE_HUGS_OPTIMIZER 1
+#define DEFAULT_BIGNUM 1
 
 /* Are things being used in an interactive setting or a batch setting?
  * In an interactive setting, System.exitWith should not call _exit
 
 /* Turn on debugging output and some sanity checks
  */
-/*#define DEBUG  */
-/*#define NDEBUG */
+/*#define DEBUG*/
 
-/* Make stack tags more informative than just their size.
- * Helps when printing the stack and when running sanity checks.
+/* NB: LAZY_BLACKHOLING has been moved up to Stg.h where both Hugs and GHC can see it,
+ * and EAGER_BLACKHOLING has been introduced also.  KSW 1999-01.
  */
-/*#define DEBUG_EXTRA */
-
-/* Turn lazy blackholing on/off.
- * Warning: Lazy blackholing can't be disabled in GHC generated code.
- *
- * Using eager blackholing makes things easier to debug because
- * the blackholes are more predicatable - but it's slower and less sexy.
- */
-#define LAZY_BLACKHOLING 
 
 /* Turn miniinterpreter on/off.
  * 
 /* Doesn't work in current system - I don't know what the primops do       */
 #define TREX 0
 
+/* Define if :xplain should be enabled                                    */
+#define EXPLAIN_INSTANCE_RESOLUTION 0
+
+
 /* Define if you want to run Haskell code through a preprocessor
  * 
  * Note that the :reload command doesn't know about any dependencies
  * these flags.
  * ------------------------------------------------------------------------*/
 
-/* Define if you want to be able to derive instances of each class. */
-#define DERIVE_EQ      1
-#define DERIVE_ORD     1
-#define DERIVE_ENUM    1
-#define DERIVE_IX      1
-#define DERIVE_SHOW    1
-#define DERIVE_READ    1
-#define DERIVE_BOUNDED 1
-
 /* Define if single-element dictionaries are implemented by newtype.
  * Should be turned on.  Mostly used to make it easier to find which
  * bits of code implement this optimisation and as a way of documenting
  */
 #define USE_ADDR_FOR_STRINGS 1
 
-/* turn this off to avoid wrapping int and float literals in "fromInt"
- * or "fromFloat" */
-#define OVERLOADED_CONSTANTS 1
-
-/* turn this off to remove the ultramagical treatment of the Eval class */
-#define EVAL_INSTANCES 0
-
 /* Define to include support for (n+k) patterns. 
  * Warning: many people in the Haskell committee want to remove n+k patterns.
  */
 /* Define if you want to use a low-level printer from within a debugger    */
 #define DEBUG_PRINTER 1
 
-
 /* --------------------------------------------------------------------------
  * Experimental features
  * These are likely to disappear/change in future versions and should not