X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FRtsFlags.c;h=f24912fe46777204542aa97fffd178161f443680;hb=7f24ae51ed36c5c0308a2d0de23e243f32a0043c;hp=3b88496deef5ea11e697322429583f735ecbae27;hpb=a92f0373b89e6bf5a1d6f13845ba2def43d6fba0;p=ghc-hetmet.git diff --git a/ghc/rts/RtsFlags.c b/ghc/rts/RtsFlags.c index 3b88496..f24912f 100644 --- a/ghc/rts/RtsFlags.c +++ b/ghc/rts/RtsFlags.c @@ -173,6 +173,7 @@ void initRtsFlagsDefaults(void) #ifdef RTS_GTK_FRONTPANEL RtsFlags.GcFlags.frontpanel = rtsFalse; #endif + RtsFlags.GcFlags.idleGCDelayTicks = 300 / TICK_MILLISECS; /* ticks */ #ifdef DEBUG RtsFlags.DebugFlags.scheduler = rtsFalse; @@ -189,6 +190,7 @@ void initRtsFlagsDefaults(void) RtsFlags.DebugFlags.gran = rtsFalse; RtsFlags.DebugFlags.par = rtsFalse; RtsFlags.DebugFlags.linker = rtsFalse; + RtsFlags.DebugFlags.squeeze = rtsFalse; #endif #if defined(PROFILING) || defined(PAR) @@ -215,7 +217,7 @@ void initRtsFlagsDefaults(void) RtsFlags.ConcFlags.ctxtSwitchTime = CS_MIN_MILLISECS; /* In milliseconds */ -#ifdef SMP +#ifdef THREADED_RTS RtsFlags.ParFlags.nNodes = 1; #endif @@ -242,9 +244,9 @@ void initRtsFlagsDefaults(void) RtsFlags.ParFlags.fishDelay = FISH_DELAY; #endif -#if defined(PAR) || defined(SMP) +#if defined(PAR) || defined(THREADED_RTS) RtsFlags.ParFlags.maxLocalSparks = 4096; -#endif /* PAR || SMP */ +#endif /* PAR || THREADED_RTS */ #if defined(GRAN) /* ToDo: check defaults for GranSim and GUM */ @@ -346,6 +348,9 @@ usage_text[] = { " -c Auto-enable compaction of the oldest generation when live data is", " at least % of the maximum heap size set with -M (default: 30%)", " -c Enable compaction for all major collections", +#if defined(THREADED_RTS) +" -I Perform full GC after idle time (default: 0.3, 0 == off)", +#endif "", " -t One-line GC statistics (default file: .stat)", " -s Summary GC statistics (with -Sstderr going to stderr)", @@ -427,12 +432,13 @@ usage_text[] = { " -DP DEBUG: par", " -Dl DEBUG: linker", " -Dm DEBUG: stm", +" -Dz DEBUG: stack squezing", "", #endif /* DEBUG */ -#if defined(SMP) +#if defined(THREADED_RTS) " -N Use OS threads (default: 1)", #endif -#if defined(SMP) || defined(PAR) +#if defined(THREADED_RTS) || defined(PAR) " -e Size of spark pools (default 100)", #endif #if defined(PAR) @@ -442,7 +448,7 @@ usage_text[] = { " -qd Turn on PVM-ish debugging", " -qO Disable output for performance measurement", #endif -#if defined(SMP) || defined(PAR) +#if defined(THREADED_RTS) || defined(PAR) " -e Maximum number of outstanding local sparks (default: 4096)", #endif #if defined(PAR) @@ -605,14 +611,6 @@ errorBelch("not built for: -prof"); \ error = rtsTrue; #endif -#ifdef SMP -# define SMP_BUILD_ONLY(x) x -#else -# define SMP_BUILD_ONLY(x) \ -errorBelch("not built for: -smp"); \ -error = rtsTrue; -#endif - #ifdef PAR # define PAR_BUILD_ONLY(x) x #else @@ -621,10 +619,18 @@ errorBelch("not built for: -parallel"); \ error = rtsTrue; #endif -#if defined(SMP) || defined(PAR) -# define PAR_OR_SMP_BUILD_ONLY(x) x +#ifdef THREADED_RTS +# define THREADED_BUILD_ONLY(x) x +#else +# define THREADED_BUILD_ONLY(x) \ +errorBelch("not built for: -smp"); \ +error = rtsTrue; +#endif + +#if defined(THREADED_RTS) || defined(PAR) +# define PAR_OR_THREADED_BUILD_ONLY(x) x #else -# define PAR_OR_SMP_BUILD_ONLY(x) \ +# define PAR_OR_THREADED_BUILD_ONLY(x) \ errorBelch("not built for: -parallel or -smp"); \ error = rtsTrue; #endif @@ -722,6 +728,9 @@ error = rtsTrue; case 'm': RtsFlags.DebugFlags.stm = rtsTrue; break; + case 'z': + RtsFlags.DebugFlags.squeeze = rtsTrue; + break; default: bad_option( rts_argv[arg] ); } @@ -793,6 +802,23 @@ error = rtsTrue; break; #endif + case 'I': /* idle GC delay */ + if (rts_argv[arg][2] == '\0') { + /* use default */ + } else { + I_ cst; /* tmp */ + + /* Convert to ticks */ + cst = (I_) ((atof(rts_argv[arg]+2) * 1000)); + if (cst > 0 && cst < TICK_MILLISECS) { + cst = TICK_MILLISECS; + } else { + cst = cst / TICK_MILLISECS; + } + RtsFlags.GcFlags.idleGCDelayTicks = cst; + } + break; + case 'S': RtsFlags.GcFlags.giveStats = VERBOSE_GC_STATS; goto stats; @@ -1011,9 +1037,9 @@ error = rtsTrue; } break; -#ifdef SMP +#ifdef THREADED_RTS case 'N': - SMP_BUILD_ONLY( + THREADED_BUILD_ONLY( if (rts_argv[arg][2] != '\0') { RtsFlags.ParFlags.nNodes = strtol(rts_argv[arg]+2, (char **) NULL, 10); @@ -1026,7 +1052,7 @@ error = rtsTrue; #endif /* =========== PARALLEL =========================== */ case 'e': - PAR_OR_SMP_BUILD_ONLY( + PAR_OR_THREADED_BUILD_ONLY( if (rts_argv[arg][2] != '\0') { RtsFlags.ParFlags.maxLocalSparks = strtol(rts_argv[arg]+2, (char **) NULL, 10);