summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2021-09-07 11:13:03 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-09-08 03:01:32 -0400
commit9fc0fe008c13782cb7b1962b0ebed0bb09ecfb6f (patch)
tree3b2704f62be9b248778c5c704a8b5b682f38091d
parent330e6e9c7a88d2be6d3f78eff44a9a6fcf9733a2 (diff)
downloadhaskell-9fc0fe008c13782cb7b1962b0ebed0bb09ecfb6f.tar.gz
rts: Factor out TRACE_ cache update logic
Just a small refactoring to perhaps enable code reuse later.
-rw-r--r--rts/Trace.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/rts/Trace.c b/rts/Trace.c
index 8f2877a536..dace0970e6 100644
--- a/rts/Trace.c
+++ b/rts/Trace.c
@@ -49,12 +49,12 @@ static void traceCap_stderr(Capability *cap, char *msg, ...);
Starting up / shutting down the tracing facilities
--------------------------------------------------------------------------- */
-void initTracing (void)
+/*
+ * Update the TRACE_* globals. Must be called whenever RtsFlags.TraceFlags is
+ * modified.
+ */
+static void updateTraceFlagCache (void)
{
-#if defined(THREADED_RTS)
- initMutex(&trace_utx);
-#endif
-
// -Ds turns on scheduler tracing too
TRACE_sched =
RtsFlags.TraceFlags.scheduler ||
@@ -65,9 +65,6 @@ void initTracing (void)
RtsFlags.TraceFlags.gc ||
RtsFlags.DebugFlags.gc ||
RtsFlags.DebugFlags.scheduler;
- if (TRACE_gc && RtsFlags.GcFlags.giveStats == NO_GC_STATS) {
- RtsFlags.GcFlags.giveStats = COLLECT_GC_STATS;
- }
TRACE_nonmoving_gc =
RtsFlags.TraceFlags.nonmoving_gc;
@@ -90,6 +87,19 @@ void initTracing (void)
TRACE_spark_sampled ||
TRACE_spark_full ||
TRACE_user;
+}
+
+void initTracing (void)
+{
+#if defined(THREADED_RTS)
+ initMutex(&trace_utx);
+#endif
+
+ updateTraceFlagCache();
+
+ if (TRACE_gc && RtsFlags.GcFlags.giveStats == NO_GC_STATS) {
+ RtsFlags.GcFlags.giveStats = COLLECT_GC_STATS;
+ }
/* Note: we can have any of the TRACE_* flags turned on even when
eventlog_enabled is off. In the DEBUG way we may be tracing to stderr.