summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2021-09-07 11:13:03 -0400
committerBen Gamari <ben@smart-cactus.org>2021-09-07 11:13:24 -0400
commit33b5ed322d4de2489dfb614bf8f77cd6472de477 (patch)
tree0216e4cb1016c7f0aa40e536bbd485ad4456a1f6
parent5b41353355022c1247e0516d541b7f7fb49f0e29 (diff)
downloadhaskell-wip/eventlog-2.tar.gz
rts: Factor out TRACE_ cache update logicwip/eventlog-2
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.