summaryrefslogtreecommitdiff
path: root/rts/eventlog
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-08-19 15:21:26 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-10-11 23:45:10 -0400
commit866c736ef29a07c6f3aa68063ef98ee0ecea12f3 (patch)
tree2e213cf10bc8d25a31020f5128969de25b09a140 /rts/eventlog
parentf6e8feb475cf421c408102c2abd531e380b67b00 (diff)
downloadhaskell-866c736ef29a07c6f3aa68063ef98ee0ecea12f3.tar.gz
rts: Refactor IPE tracing support
Diffstat (limited to 'rts/eventlog')
-rw-r--r--rts/eventlog/EventLog.c34
-rw-r--r--rts/eventlog/EventLog.h8
2 files changed, 15 insertions, 27 deletions
diff --git a/rts/eventlog/EventLog.c b/rts/eventlog/EventLog.c
index e576a77a28..4ed48c4412 100644
--- a/rts/eventlog/EventLog.c
+++ b/rts/eventlog/EventLog.c
@@ -1411,34 +1411,28 @@ void postTickyCounterSamples(StgEntCounter *counters)
RELEASE_LOCK(&eventBufMutex);
}
#endif /* TICKY_TICKY */
-void postIPE(StgWord64 info,
- const char *table_name,
- const char *closure_desc,
- const char *ty_desc,
- const char *label,
- const char *module,
- const char *srcloc)
+void postIPE(const InfoProvEnt *ipe)
{
ACQUIRE_LOCK(&eventBufMutex);
- StgWord table_name_len = strlen(table_name);
- StgWord closure_desc_len = strlen(closure_desc);
- StgWord ty_desc_len = strlen(ty_desc);
- StgWord label_len = strlen(label);
- StgWord module_len = strlen(module);
- StgWord srcloc_len = strlen(srcloc);
+ StgWord table_name_len = strlen(ipe->prov.table_name);
+ StgWord closure_desc_len = strlen(ipe->prov.closure_desc);
+ StgWord ty_desc_len = strlen(ipe->prov.ty_desc);
+ StgWord label_len = strlen(ipe->prov.label);
+ StgWord module_len = strlen(ipe->prov.module);
+ StgWord srcloc_len = strlen(ipe->prov.srcloc);
// 8 for the info word
// 6 for the number of strings in the payload as postString adds 1 to the length
StgWord len = 8+table_name_len+closure_desc_len+ty_desc_len+label_len+module_len+srcloc_len+6;
ensureRoomForVariableEvent(&eventBuf, len);
postEventHeader(&eventBuf, EVENT_IPE);
postPayloadSize(&eventBuf, len);
- postWord64(&eventBuf, info);
- postString(&eventBuf, table_name);
- postString(&eventBuf, closure_desc);
- postString(&eventBuf, ty_desc);
- postString(&eventBuf, label);
- postString(&eventBuf, module);
- postString(&eventBuf, srcloc);
+ postWord64(&eventBuf, (StgWord) ipe->info);
+ postString(&eventBuf, ipe->prov.table_name);
+ postString(&eventBuf, ipe->prov.closure_desc);
+ postString(&eventBuf, ipe->prov.ty_desc);
+ postString(&eventBuf, ipe->prov.label);
+ postString(&eventBuf, ipe->prov.module);
+ postString(&eventBuf, ipe->prov.srcloc);
RELEASE_LOCK(&eventBufMutex);
}
diff --git a/rts/eventlog/EventLog.h b/rts/eventlog/EventLog.h
index 39be13674e..2dc4ab4c1d 100644
--- a/rts/eventlog/EventLog.h
+++ b/rts/eventlog/EventLog.h
@@ -190,13 +190,7 @@ void postProfSampleCostCentre(Capability *cap,
void postProfBegin(void);
#endif /* PROFILING */
-void postIPE(StgWord64 info,
- const char *table_name,
- const char *closure_desc,
- const char *ty_desc,
- const char *label,
- const char *module,
- const char *srcloc);
+void postIPE(const InfoProvEnt *ipe);
void postConcUpdRemSetFlush(Capability *cap);
void postConcMarkEnd(StgWord32 marked_obj_count);