summaryrefslogtreecommitdiff
path: root/rts/IPE.h
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-08-18 20:03:15 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-10-11 23:45:10 -0400
commit6b0d2022699d3d8b446d024ee837c0d07e2c1aa0 (patch)
tree3981c27bcbfd7ac99eb5c0b46cea5090d8a27ec9 /rts/IPE.h
parent866c736ef29a07c6f3aa68063ef98ee0ecea12f3 (diff)
downloadhaskell-6b0d2022699d3d8b446d024ee837c0d07e2c1aa0.tar.gz
Refactor IPE initialization
Here we refactor the representation of info table provenance information in object code to significantly reduce its size and link-time impact. Specifically, we deduplicate strings and represent them as 32-bit offsets into a common string table. In addition, we rework the registration logic to eliminate allocation from the registration path, which is run from a static initializer where things like allocation are technically undefined behavior (although it did previously seem to work). For similar reasons we eliminate lock usage from registration path, instead relying on atomic CAS. Closes #22077.
Diffstat (limited to 'rts/IPE.h')
-rw-r--r--rts/IPE.h12
1 files changed, 2 insertions, 10 deletions
diff --git a/rts/IPE.h b/rts/IPE.h
index 267e386f00..cc2d4eca50 100644
--- a/rts/IPE.h
+++ b/rts/IPE.h
@@ -13,17 +13,9 @@
#include "BeginPrivate.h"
-#define IPE_LIST_NODE_BUFFER_SIZE 126
-
-typedef struct IpeBufferListNode_ {
- InfoProvEnt **buffer[IPE_LIST_NODE_BUFFER_SIZE];
- StgWord8 count;
- struct IpeBufferListNode_ *next;
-} IpeBufferListNode;
-
void dumpIPEToEventLog(void);
void updateIpeMap(void);
-void initIpeMapLock(void);
-void closeIpeMapLock(void);
+void initIpe(void);
+void exitIpe(void);
#include "EndPrivate.h"