rtsBool compact; /* True <=> "compact all the time" */
double compactThreshold;
+ rtsBool sweep; /* use "mostly mark-sweep" instead of copying
+ * for the oldest generation */
rtsBool ringBell;
rtsBool frontpanel;
rtsBool migrate; /* migrate threads between capabilities */
rtsBool wakeupMigrate; /* migrate a thread on wakeup */
unsigned int maxLocalSparks;
+ nat gcThreads; /* number of threads for parallel GC */
};
#endif /* THREADED_RTS */
struct TRACE_FLAGS {
rtsBool sched; /* trace scheduler events for profiling */
+ rtsBool gc; /* trace GC events */
rtsBool timestamp; /* add timestamps to traces */
};
-/* Put them together: */
-
#ifdef USE_PAPI
+#define MAX_PAPI_USER_EVENTS 8
+
struct PAPI_FLAGS {
nat eventType; /* The type of events to count */
+ nat numUserEvents;
+ char * userEvents[MAX_PAPI_USER_EVENTS];
};
#define PAPI_FLAG_CACHE_L1 1
#define PAPI_FLAG_BRANCH 3
#define PAPI_FLAG_STALLS 4
#define PAPI_FLAG_CB_EVENTS 5
+#define PAPI_USER_EVENTS 6
#endif
+/* Put them together: */
+
typedef struct _RTS_FLAGS {
/* The first portion of RTS_FLAGS is invariant. */
struct GC_FLAGS GcFlags;