RtsFlags.GcFlags.maxStkSize = (8 * 1024 * 1024) / sizeof(W_);
RtsFlags.GcFlags.initialStkSize = 1024 / sizeof(W_);
- RtsFlags.GcFlags.minAllocAreaSize = (256 * 1024) / BLOCK_SIZE;
+ RtsFlags.GcFlags.minAllocAreaSize = (512 * 1024) / BLOCK_SIZE;
RtsFlags.GcFlags.minOldGenSize = (1024 * 1024) / BLOCK_SIZE;
RtsFlags.GcFlags.maxHeapSize = 0; /* off by default */
RtsFlags.GcFlags.heapSizeSuggestion = 0; /* none */
#ifdef RTS_GTK_FRONTPANEL
RtsFlags.GcFlags.frontpanel = rtsFalse;
#endif
+ RtsFlags.GcFlags.idleGCDelayTicks = 300 / TICK_MILLISECS; /* ticks */
#ifdef DEBUG
RtsFlags.DebugFlags.scheduler = rtsFalse;
RtsFlags.DebugFlags.gran = rtsFalse;
RtsFlags.DebugFlags.par = rtsFalse;
RtsFlags.DebugFlags.linker = rtsFalse;
+ RtsFlags.DebugFlags.squeeze = rtsFalse;
#endif
#if defined(PROFILING) || defined(PAR)
RtsFlags.ConcFlags.ctxtSwitchTime = CS_MIN_MILLISECS; /* In milliseconds */
-#ifdef SMP
+#ifdef THREADED_RTS
RtsFlags.ParFlags.nNodes = 1;
#endif
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 */
" -c<n> Auto-enable compaction of the oldest generation when live data is",
" at least <n>% of the maximum heap size set with -M (default: 30%)",
" -c Enable compaction for all major collections",
+#if defined(THREADED_RTS)
+" -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)",
+#endif
"",
" -t<file> One-line GC statistics (default file: <program>.stat)",
" -s<file> Summary GC statistics (with -Sstderr going to stderr)",
" -DP DEBUG: par",
" -Dl DEBUG: linker",
" -Dm DEBUG: stm",
+" -Dz DEBUG: stack squezing",
"",
-#endif // DEBUG
-#if defined(SMP)
+#endif /* DEBUG */
+#if defined(THREADED_RTS)
" -N<n> Use <n> OS threads (default: 1)",
#endif
-#if defined(SMP) || defined(PAR)
+#if defined(THREADED_RTS) || defined(PAR)
" -e<size> Size of spark pools (default 100)",
#endif
#if defined(PAR)
" -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<n> Maximum number of outstanding local sparks (default: 4096)",
#endif
#if defined(PAR)
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
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
case 'm':
RtsFlags.DebugFlags.stm = rtsTrue;
break;
+ case 'z':
+ RtsFlags.DebugFlags.squeeze = rtsTrue;
+ break;
default:
bad_option( rts_argv[arg] );
}
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;
error = rtsTrue;
}
)
-#endif // PROFILING
+#endif /* PROFILING */
break;
#if defined(PROFILING)
}
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);
#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);