/* -----------------------------------------------------------------------------
- * $Id: RtsFlags.h,v 1.27 2000/10/06 15:35:09 simonmar Exp $
+ * $Id: RtsFlags.h,v 1.35 2001/08/07 09:20:52 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
FILE *statsFile;
nat giveStats;
#define NO_GC_STATS 0
-#define SUMMARY_GC_STATS 1
-#define VERBOSE_GC_STATS 2
+#define COLLECT_GC_STATS 1
+#define ONELINE_GC_STATS 2
+#define SUMMARY_GC_STATS 3
+#define VERBOSE_GC_STATS 4
nat maxStkSize; /* in *words* */
nat initialStkSize; /* in *words* */
nat generations;
nat steps;
+ rtsBool squeezeUpdFrames;
- rtsBool ringBell;
+ rtsBool compact;
+ double compactThreshold;
- rtsBool squeezeUpdFrames;
+ rtsBool ringBell;
+ rtsBool frontpanel;
};
/* Hack: this struct uses bitfields so that we can use a binary arg
#define DEBUG_MASK(n) ((nat)(ldexp(1,n)))
#define MAX_DEBUG_MASK ((nat)(ldexp(1,(MAX_DEBUG_OPTION+1))-1))
-#if defined(PROFILING) || defined(PAR)
- /* with PROFILING, full cost-centre stuff (also PROFILING_FLAGS);
- with PAR, just the four fixed cost-centres.
- */
struct COST_CENTRE_FLAGS {
unsigned int doCostCentres;
# define COST_CENTRES_SUMMARY 1
int profilerTicks; /* derived */
int msecsPerTick; /* derived */
};
-#endif
#ifdef PROFILING
struct PROFILING_FLAGS {
unsigned int doHeapProfile;
+ nat profileFrequency; /* how often do you want */
+ /* to sample (in ms) */
+
+
# define NO_HEAP_PROFILING 0 /* N.B. Used as indexes into arrays */
# define HEAP_BY_CCS 1
# define HEAP_BY_MOD 2
# define HEAP_BY_DESCR 4
# define HEAP_BY_TYPE 5
-# define HEAP_BY_TIME 6
rtsBool showCCSOnException;
# define MODchar 'M'
# define DESCRchar 'D'
# define TYPEchar 'Y'
-# define TIMEchar 'T'
+
+ char* modSelector;
+ char* descrSelector;
+ char* typeSelector;
+ char* ccSelector;
+
+
};
#elif defined(DEBUG)
# define NO_HEAP_PROFILING 0
# define HEAP_BY_INFOPTR 1
# define HEAP_BY_CLOSURE_TYPE 2
struct PROFILING_FLAGS {
- unsigned int doHeapProfile; /* heap profile using symbol table */
+ unsigned int doHeapProfile; /* heap profile using symbol table */
+
};
#endif /* DEBUG || PROFILING */
/* currently the same as GRAN_STATS_FLAGS */
struct PAR_STATS_FLAGS {
rtsBool Full; /* Full .gr profile (rtsTrue) or only END events? */
- // rtsBool Suppressed; /* No .gr profile at all */
+ rtsBool Suppressed; /* No .gr profile at all */
rtsBool Binary; /* Binary profile? (not yet implemented) */
rtsBool Sparks; /* Info on sparks in profile? */
rtsBool Heap; /* Info on heap allocs in profile? */
struct PAR_DEBUG_FLAGS {
/* flags to control debugging output in various subsystems */
rtsBool verbose : 1; /* 1 */
- rtsBool trace : 1; /* 2 */
+ rtsBool bq : 1; /* 2 */
rtsBool schedule : 1; /* 4 */
rtsBool free : 1; /* 8 */
rtsBool resume : 1; /* 16 */
rtsBool tables : 1; /* 256 */
rtsBool packet : 1; /* 512 */
rtsBool pack : 1; /* 1024 */
+ rtsBool paranoia : 1; /* 2048 */
};
-#define MAX_PAR_DEBUG_OPTION 10
+#define MAX_PAR_DEBUG_OPTION 11
#define PAR_DEBUG_MASK(n) ((nat)(ldexp(1,n)))
#define MAX_PAR_DEBUG_MASK ((nat)(ldexp(1,(MAX_PAR_DEBUG_OPTION+1))-1))
struct PAR_STATS_FLAGS ParStats; /* profile and stats output */
struct PAR_DEBUG_FLAGS Debug; /* debugging options */
rtsBool outputDisabled; /* Disable output for performance purposes */
+ rtsBool doFairScheduling; /* Fair-ish scheduling (round robin; no time-slices) */
nat packBufferSize;
+ nat thunksToPack; /* number of thunks in packet + 1 */
+ nat globalising; /* globalisation scheme */
nat maxLocalSparks; /* spark pool size */
nat maxThreads; /* thread pool size */
nat maxFishes; /* max number of active fishes */