aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorRichard Brooksby2012-08-31 04:25:18 +0100
committerRichard Brooksby2012-08-31 04:25:18 +0100
commit7d28876904ed310ef5b7ad7877fc8c5914ba67dc (patch)
tree9b4644ae1d26f4d7715ffd313ecbcfbc5071b9e0 /mps/code
parent71d487d995ed8209560d8442efd34fd628a0bf02 (diff)
downloademacs-7d28876904ed310ef5b7ad7877fc8c5914ba67dc.tar.gz
emacs-7d28876904ed310ef5b7ad7877fc8c5914ba67dc.zip
Expanded event parameters into separate macros annotated with parameter names, simplifying event definition macros.
Copied from Perforce Change: 179122 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/config.h2
-rw-r--r--mps/code/eventcom.h40
-rw-r--r--mps/code/eventdef.h405
-rw-r--r--mps/code/eventpro.c67
-rw-r--r--mps/code/poolmfs.c2
-rw-r--r--mps/code/seg.c2
6 files changed, 420 insertions, 98 deletions
diff --git a/mps/code/config.h b/mps/code/config.h
index 435d2a9e22a..85ae3d07eea 100644
--- a/mps/code/config.h
+++ b/mps/code/config.h
@@ -82,6 +82,8 @@
82#define CONFIG_LOG 82#define CONFIG_LOG
83#endif 83#endif
84 84
85#define CONFIG_STATS
86#define CONFIG_LOG
85 87
86/* Build Features */ 88/* Build Features */
87 89
diff --git a/mps/code/eventcom.h b/mps/code/eventcom.h
index 64fe935edde..6713b92ad33 100644
--- a/mps/code/eventcom.h
+++ b/mps/code/eventcom.h
@@ -157,36 +157,24 @@ typedef unsigned EventFU;
157typedef EventStringStruct EventFS; 157typedef EventStringStruct EventFS;
158typedef double EventFD; 158typedef double EventFD;
159 159
160/*
161for i in range(0, 15):
162 print "#define EVENT%d_STRUCT(%s) struct { EventCode code; EventSize size; EventClock clock; %s }" % (
163 i,
164 ", ".join(["p%s" % j for j in range(0, i)]),
165 " ".join("EventF##p%d f%d;" % (j, j) for j in range(0,i))
166 )
167 */
168#define EVENT0_STRUCT() struct { EventCode code; EventSize size; EventClock clock; }
169#define EVENT1_STRUCT(p0) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; }
170#define EVENT2_STRUCT(p0, p1) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; }
171#define EVENT3_STRUCT(p0, p1, p2) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; }
172#define EVENT4_STRUCT(p0, p1, p2, p3) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; }
173#define EVENT5_STRUCT(p0, p1, p2, p3, p4) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; }
174#define EVENT6_STRUCT(p0, p1, p2, p3, p4, p5) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; }
175#define EVENT7_STRUCT(p0, p1, p2, p3, p4, p5, p6) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; EventF##p6 f6; }
176#define EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; EventF##p6 f6; EventF##p7 f7; }
177#define EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; EventF##p6 f6; EventF##p7 f7; EventF##p8 f8; }
178#define EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; EventF##p6 f6; EventF##p7 f7; EventF##p8 f8; EventF##p9 f9; }
179#define EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; EventF##p6 f6; EventF##p7 f7; EventF##p8 f8; EventF##p9 f9; EventF##p10 f10; }
180#define EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; EventF##p6 f6; EventF##p7 f7; EventF##p8 f8; EventF##p9 f9; EventF##p10 f10; EventF##p11 f11; }
181#define EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; EventF##p6 f6; EventF##p7 f7; EventF##p8 f8; EventF##p9 f9; EventF##p10 f10; EventF##p11 f11; EventF##p12 f12; }
182#define EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) struct { EventCode code; EventSize size; EventClock clock; EventF##p0 f0; EventF##p1 f1; EventF##p2 f2; EventF##p3 f3; EventF##p4 f4; EventF##p5 f5; EventF##p6 f6; EventF##p7 f7; EventF##p8 f8; EventF##p9 f9; EventF##p10 f10; EventF##p11 f11; EventF##p12 f12; EventF##p13 f13; }
183
184/* Common prefix for all event structures. The size field allows an event 160/* Common prefix for all event structures. The size field allows an event
185 reader to skip over events whose codes it does not recognise. */ 161 reader to skip over events whose codes it does not recognise. */
186typedef EVENT0_STRUCT() EventAnyStruct; 162typedef struct EventAnyStruct {
163 EventCode code;
164 EventSize size;
165 EventClock clock;
166} EventAnyStruct;
167
168#define EVENT_STRUCT_FIELD(X, index, sort, ident) \
169 EventF##sort f##index;
187 170
188#define EVENT_STRUCT(X, name, _code, always, kind, count, format) \ 171#define EVENT_STRUCT(X, name, _code, always, kind, count, format) \
189 typedef EVENT##count##_STRUCT format Event##name##Struct; 172 typedef struct Event##name##Struct { \
173 EventCode code; \
174 EventSize size; \
175 EventClock clock; \
176 EVENT_##name##_PARAMS(EVENT_STRUCT_FIELD, X) \
177 } Event##name##Struct;
190 178
191EVENT_LIST(EVENT_STRUCT, X) 179EVENT_LIST(EVENT_STRUCT, X)
192 180
diff --git a/mps/code/eventdef.h b/mps/code/eventdef.h
index aaffd6cf43d..90207d0ac62 100644
--- a/mps/code/eventdef.h
+++ b/mps/code/eventdef.h
@@ -83,8 +83,8 @@
83 EVENT(X, CBSInit , 0x0019, TRUE, Pool, 2, (P,P)) \ 83 EVENT(X, CBSInit , 0x0019, TRUE, Pool, 2, (P,P)) \
84 EVENT(X, Intern , 0x001a, TRUE, User, 2, (W,S)) \ 84 EVENT(X, Intern , 0x001a, TRUE, User, 2, (W,S)) \
85 EVENT(X, Label , 0x001b, TRUE, User, 2, (A,W)) \ 85 EVENT(X, Label , 0x001b, TRUE, User, 2, (A,W)) \
86 EVENT(X, TraceStart , 0x001c, TRUE, Trace, 3, (P,P,P)) \ 86 /* EVENT(X, TraceStart , 0x001c, TRUE, Trace, 3, (P,P,P)) */ \
87 EVENT(X, TraceCreate , 0x001d, TRUE, Trace, 4, (P,P,P,U)) \ 87 /* EVENT(X, TraceCreate , 0x001d, TRUE, Trace, 4, (P,P,P,U)) */ \
88 EVENT(X, TraceDestroy , 0x001e, TRUE, Trace, 1, (P)) \ 88 EVENT(X, TraceDestroy , 0x001e, TRUE, Trace, 1, (P)) \
89 EVENT(X, SegSetGrey , 0x001f, TRUE, Seg, 3, (P,P,U)) \ 89 EVENT(X, SegSetGrey , 0x001f, TRUE, Seg, 3, (P,P,U)) \
90 EVENT(X, TraceFlipBegin , 0x0020, TRUE, Trace, 2, (P,P)) \ 90 EVENT(X, TraceFlipBegin , 0x0020, TRUE, Trace, 2, (P,P)) \
@@ -93,7 +93,7 @@
93 /* EVENT(X, TraceScan , 0x0023, TRUE, Seg, 5, (U,U,P,P,P)) */ \ 93 /* EVENT(X, TraceScan , 0x0023, TRUE, Seg, 5, (U,U,P,P,P)) */ \
94 EVENT(X, TraceAccess , 0x0024, TRUE, Seg, 3, (P,P,U)) \ 94 EVENT(X, TraceAccess , 0x0024, TRUE, Seg, 3, (P,P,U)) \
95 /* TracePoll's kind isn't really Trace, but then it isn't Seg either */ \ 95 /* TracePoll's kind isn't really Trace, but then it isn't Seg either */ \
96 EVENT(X, TracePoll , 0x0025, TRUE, Trace, 2, (P,P)) \ 96 /* EVENT(X, TracePoll , 0x0025, TRUE, Trace, 2, (P,P)) */ \
97 EVENT(X, TraceFix , 0x0026, FALSE, Ref, 4, (P,P,A,U)) \ 97 EVENT(X, TraceFix , 0x0026, FALSE, Ref, 4, (P,P,A,U)) \
98 EVENT(X, TraceFixSeg , 0x0027, FALSE, Ref, 1, (P)) \ 98 EVENT(X, TraceFixSeg , 0x0027, FALSE, Ref, 1, (P)) \
99 EVENT(X, TraceFixWhite , 0x0028, FALSE, Ref, 0, ()) \ 99 EVENT(X, TraceFixWhite , 0x0028, FALSE, Ref, 0, ()) \
@@ -105,12 +105,12 @@
105 EVENT(X, VMMap , 0x002d, TRUE, Seg, 3, (P,A,A)) \ 105 EVENT(X, VMMap , 0x002d, TRUE, Seg, 3, (P,A,A)) \
106 EVENT(X, VMUnmap , 0x002e, TRUE, Seg, 3, (P,A,A)) \ 106 EVENT(X, VMUnmap , 0x002e, TRUE, Seg, 3, (P,A,A)) \
107 EVENT(X, ArenaExtend , 0x002f, TRUE, Arena, 3, (P,A,W)) \ 107 EVENT(X, ArenaExtend , 0x002f, TRUE, Arena, 3, (P,A,W)) \
108 EVENT(X, ArenaRetract , 0x0030, TRUE, Arena, 3, (P,A,W)) \ 108 /* EVENT(X, ArenaRetract , 0x0030, TRUE, Arena, 3, (P,A,W)) */ \
109 EVENT(X, TraceSegGreyen , 0x0031, TRUE, Seg, 3, (P,P,U)) \ 109 /* EVENT(X, TraceSegGreyen , 0x0031, TRUE, Seg, 3, (P,P,U)) */ \
110 /* RootScanned abuses kind, see .kind.abuse */ \ 110 /* RootScanned abuses kind, see .kind.abuse */ \
111 EVENT(X, RootScan , 0x0032, TRUE, Seg, 3, (P,W,W)) \ 111 EVENT(X, RootScan , 0x0032, TRUE, Seg, 3, (P,W,W)) \
112 /* TraceStep abuses kind, see .kind.abuse */ \ 112 /* TraceStep abuses kind, see .kind.abuse */ \
113 EVENT(X, TraceStep , 0x0033, TRUE, Seg, 2, (P,P)) \ 113 /* EVENT(X, TraceStep , 0x0033, TRUE, Seg, 2, (P,P)) */ \
114 EVENT(X, BufferReserve , 0x0034, TRUE, Object, 3, (P,A,W)) \ 114 EVENT(X, BufferReserve , 0x0034, TRUE, Object, 3, (P,A,W)) \
115 EVENT(X, BufferCommit , 0x0035, TRUE, Object, 4, (P,A,W,A)) \ 115 EVENT(X, BufferCommit , 0x0035, TRUE, Object, 4, (P,A,W,A)) \
116 /* BufferInit/Finish abuse kind, see .kind.abuse */ \ 116 /* BufferInit/Finish abuse kind, see .kind.abuse */ \
@@ -130,8 +130,8 @@
130 EVENT(X, PoolInitMVFF , 0x0042, TRUE, Pool, 8, (P,P,W,W,W,U,U,U)) \ 130 EVENT(X, PoolInitMVFF , 0x0042, TRUE, Pool, 8, (P,P,W,W,W,U,U,U)) \
131 EVENT(X, PoolInitMV , 0x0043, TRUE, Pool, 5, (P,P,W,W,W)) \ 131 EVENT(X, PoolInitMV , 0x0043, TRUE, Pool, 5, (P,P,W,W,W)) \
132 EVENT(X, PoolInitMFS , 0x0044, TRUE, Pool, 4, (P,P,W,W)) \ 132 EVENT(X, PoolInitMFS , 0x0044, TRUE, Pool, 4, (P,P,W,W)) \
133 EVENT(X, PoolInitEPVM , 0x0045, TRUE, Pool, 5, (P,P,P,U,U)) \ 133 /* EVENT(X, PoolInitEPVM , 0x0045, TRUE, Pool, 5, (P,P,P,U,U)) */ \
134 EVENT(X, PoolInitEPDL , 0x0046, TRUE, Pool, 6, (P,P,U,W,W,W)) \ 134 /* EVENT(X, PoolInitEPDL , 0x0046, TRUE, Pool, 6, (P,P,U,W,W,W)) */ \
135 EVENT(X, PoolInitAMS , 0x0047, TRUE, Pool, 3, (P,P,P)) \ 135 EVENT(X, PoolInitAMS , 0x0047, TRUE, Pool, 3, (P,P,P)) \
136 EVENT(X, PoolInitAMC , 0x0048, TRUE, Pool, 2, (P,P)) \ 136 EVENT(X, PoolInitAMC , 0x0048, TRUE, Pool, 2, (P,P)) \
137 EVENT(X, PoolInitAMCZ , 0x0049, TRUE, Pool, 2, (P,P)) \ 137 EVENT(X, PoolInitAMCZ , 0x0049, TRUE, Pool, 2, (P,P)) \
@@ -139,24 +139,405 @@
139 EVENT(X, PoolInitLO , 0x004B, TRUE, Pool, 2, (P,P)) \ 139 EVENT(X, PoolInitLO , 0x004B, TRUE, Pool, 2, (P,P)) \
140 EVENT(X, PoolInitSNC , 0x004C, TRUE, Pool, 2, (P,P)) \ 140 EVENT(X, PoolInitSNC , 0x004C, TRUE, Pool, 2, (P,P)) \
141 EVENT(X, PoolInitMVT , 0x004D, TRUE, Pool, 6, (P,W,W,W,W,W)) \ 141 EVENT(X, PoolInitMVT , 0x004D, TRUE, Pool, 6, (P,W,W,W,W,W)) \
142 EVENT(X, BufferInitEPVM , 0x0050, TRUE, Pool, 3, (P,P,U)) \ 142 /* EVENT(X, BufferInitEPVM , 0x0050, TRUE, Pool, 3, (P,P,U)) */ \
143 EVENT(X, BufferInitSeg , 0x0051, TRUE, Pool, 3, (P,P,U)) \ 143 EVENT(X, BufferInitSeg , 0x0051, TRUE, Pool, 3, (P,P,U)) \
144 EVENT(X, BufferInitRank , 0x0052, TRUE, Pool, 4, (P,P,U,U)) \ 144 EVENT(X, BufferInitRank , 0x0052, TRUE, Pool, 4, (P,P,U,U)) \
145 /* PoolPush/Pop go under Object, because they're user ops. */ \ 145 /* PoolPush/Pop go under Object, because they're user ops. */ \
146 EVENT(X, PoolPush , 0x0060, TRUE, Object, 1, (P)) \ 146 /* EVENT(X, PoolPush , 0x0060, TRUE, Object, 1, (P)) */ \
147 EVENT(X, PoolPop , 0x0061, TRUE, Object, 2, (P,U)) \ 147 /* EVENT(X, PoolPop , 0x0061, TRUE, Object, 2, (P,U)) */ \
148 EVENT(X, ReservoirLimitSet , 0x0062, TRUE, Arena, 2, (P,W)) \ 148 EVENT(X, ReservoirLimitSet , 0x0062, TRUE, Arena, 2, (P,W)) \
149 EVENT(X, CommitLimitSet , 0x0063, TRUE, Arena, 3, (P,W,U)) \ 149 EVENT(X, CommitLimitSet , 0x0063, TRUE, Arena, 3, (P,W,U)) \
150 EVENT(X, SpareCommitLimitSet, 0x0064, TRUE, Arena, 2, (P,W)) \ 150 EVENT(X, SpareCommitLimitSet, 0x0064, TRUE, Arena, 2, (P,W)) \
151 EVENT(X, ArenaAlloc , 0x0065, TRUE, Arena, 5, (P,P,A,W,P)) \ 151 EVENT(X, ArenaAlloc , 0x0065, TRUE, Arena, 5, (P,P,A,W,P)) \
152 EVENT(X, ArenaFree , 0x0066, TRUE, Arena, 3, (P,A,W)) \ 152 EVENT(X, ArenaFree , 0x0066, TRUE, Arena, 3, (P,A,W)) \
153 EVENT(X, ArenaAllocFail , 0x0067, TRUE, Arena, 3, (P,W,P)) \ 153 EVENT(X, ArenaAllocFail , 0x0067, TRUE, Arena, 3, (P,W,P)) \
154 EVENT(X, SegMerge , 0x0068, TRUE, Seg, 3, (P,P,P)) \ 154 EVENT(X, SegMerge , 0x0068, TRUE, Seg, 3, (P,P,U)) \
155 EVENT(X, SegSplit , 0x0069, TRUE, Seg, 4, (P,P,P,A)) 155 EVENT(X, SegSplit , 0x0069, TRUE, Seg, 4, (P,P,P,A))
156 156
157/* Remember to update EventNameMAX and EventCodeMAX in eventcom.h! */ 157/* Remember to update EventNameMAX and EventCodeMAX in eventcom.h! */
158 158
159 159
160#define EVENT_AMCGenCreate_PARAMS(PARAM, X) \
161 PARAM(X, 0, P, amc) \
162 PARAM(X, 1, P, gen)
163
164#define EVENT_AMCGenDestroy_PARAMS(PARAM, X) \
165 PARAM(X, 0, P, gen)
166
167#define EVENT_AMCInit_PARAMS(PARAM, X) \
168 PARAM(X, 0, P, pool) \
169 PARAM(X, 1, P, amc)
170
171#define EVENT_AMCFinish_PARAMS(PARAM, X) \
172 PARAM(X, 0, P, amc)
173
174#define EVENT_AMCFix_PARAMS(PARAM, X)
175
176#define EVENT_ArenaCreateVM_PARAMS(PARAM, X) \
177 PARAM(X, 0, P, arena) \
178 PARAM(X, 1, W, userSize) \
179 PARAM(X, 2, W, chunkSize)
180
181#define EVENT_ArenaCreateVMNZ_PARAMS(PARAM, X) \
182 PARAM(X, 0, P, arena) \
183 PARAM(X, 1, W, userSize) \
184 PARAM(X, 2, W, chunkSize)
185
186#define EVENT_ArenaWriteFaults_PARAMS(PARAM, X) \
187 PARAM(X, 0, P, arena) \
188 PARAM(X, 1, W, writeBarrierHitCount)
189
190#define EVENT_MeterInit_PARAMS(PARAM, X) \
191 PARAM(X, 0, P, meter) \
192 PARAM(X, 1, P, owner)
193
194#define EVENT_MeterValues_PARAMS(PARAM, X) \
195 PARAM(X, 0, P, meter) \
196 PARAM(X, 1, D, total) \
197 PARAM(X, 2, D, meanSquared) \
198 PARAM(X, 3, W, count) \
199 PARAM(X, 4, W, max) \
200 PARAM(X, 5, W, min)
201
202#define EVENT_AMCScanBegin_PARAMS(PARAM, X) \
203 PARAM(X, 0, P, amc) \
204 PARAM(X, 1, P, seg) \
205 PARAM(X, 2, P, ss)
206
207#define EVENT_AMCScanEnd_PARAMS(PARAM, X) \
208 PARAM(X, 0, P, amc) \
209 PARAM(X, 1, P, seg) \
210 PARAM(X, 2, P, ss)
211
212#define EVENT_AMCFix_PARAMS(PARAM, X)
213
214#define EVENT_AMCFixInPlace_PARAMS(PARAM, X)
215
216#define EVENT_AMCFixForward_PARAMS(PARAM, X) \
217 PARAM(X, 0, A, newRef)
218
219#define EVENT_AMCReclaim_PARAMS(PARAM, X) \
220 PARAM(X, 0, P, gen) \
221 PARAM(X, 1, P, trace) \
222 PARAM(X, 2, P, seg)
223
224#define EVENT_ArenaCreateCL_PARAMS(PARAM, X) \
225 PARAM(X, 0, P, arena) \
226 PARAM(X, 1, W, size) \
227 PARAM(X, 2, A, base)
228
229#define EVENT_ArenaDestroy_PARAMS(PARAM, X) \
230 PARAM(X, 0, P, arena)
231
232#define EVENT_SegAlloc_PARAMS(PARAM, X) \
233 PARAM(X, 0, P, arena) \
234 PARAM(X, 1, P, seg) \
235 PARAM(X, 2, A, base) \
236 PARAM(X, 3, W, size) \
237 PARAM(X, 4, P, pool)
238
239#define EVENT_SegFree_PARAMS(PARAM, X) \
240 PARAM(X, 0, P, arena) \
241 PARAM(X, 1, P, seg)
242
243#define EVENT_PoolInit_PARAMS(PARAM, X) \
244 PARAM(X, 0, P, pool) \
245 PARAM(X, 1, P, arena) \
246 PARAM(X, 2, P, poolClass)
247
248#define EVENT_PoolFinish_PARAMS(PARAM, X) \
249 PARAM(X, 0, P, pool)
250
251#define EVENT_PoolAlloc_PARAMS(PARAM, X) \
252 PARAM(X, 0, P, pool) \
253 PARAM(X, 1, A, pReturn) \
254 PARAM(X, 2, W, size)
255
256#define EVENT_PoolFree_PARAMS(PARAM, X) \
257 PARAM(X, 0, P, pool) \
258 PARAM(X, 1, A, old) \
259 PARAM(X, 2, W, size)
260
261#define EVENT_CBSInit_PARAMS(PARAM, X) \
262 PARAM(X, 0, P, cbs) \
263 PARAM(X, 1, P, owner)
264
265#define EVENT_Intern_PARAMS(PARAM, X) \
266 PARAM(X, 0, W, stringId) \
267 PARAM(X, 1, S, string)
268
269#define EVENT_Label_PARAMS(PARAM, X) \
270 PARAM(X, 0, A, address) \
271 PARAM(X, 1, W, stringId)
272
273#define EVENT_TraceDestroy_PARAMS(PARAM, X) \
274 PARAM(X, 0, P, trace)
275
276#define EVENT_SegSetGrey_PARAMS(PARAM, X) \
277 PARAM(X, 0, P, arena) \
278 PARAM(X, 1, P, seg) \
279 PARAM(X, 2, U, grey)
280
281#define EVENT_TraceFlipBegin_PARAMS(PARAM, X) \
282 PARAM(X, 0, P, trace) \
283 PARAM(X, 1, P, arena)
284
285#define EVENT_TraceFlipEnd_PARAMS(PARAM, X) \
286 PARAM(X, 0, P, trace) \
287 PARAM(X, 1, P, arena)
288
289#define EVENT_TraceReclaim_PARAMS(PARAM, X) \
290 PARAM(X, 0, P, trace)
291
292#define EVENT_TraceAccess_PARAMS(PARAM, X) \
293 PARAM(X, 0, P, arena) \
294 PARAM(X, 1, P, seg) \
295 PARAM(X, 2, U, mode)
296
297#define EVENT_TraceFix_PARAMS(PARAM, X) \
298 PARAM(X, 0, P, ss) \
299 PARAM(X, 1, P, refIO) \
300 PARAM(X, 2, A, ref) \
301 PARAM(X, 3, U, rank)
302
303#define EVENT_TraceFixSeg_PARAMS(PARAM, X) \
304 PARAM(X, 0, P, seg)
305
306#define EVENT_TraceFixWhite_PARAMS(PARAM, X)
307
308#define EVENT_TraceScanArea_PARAMS(PARAM, X) \
309 PARAM(X, 0, P, ss) \
310 PARAM(X, 1, P, base) \
311 PARAM(X, 2, P, limit)
312
313#define EVENT_TraceScanAreaTagged_PARAMS(PARAM, X) \
314 PARAM(X, 0, P, ss) \
315 PARAM(X, 1, P, base) \
316 PARAM(X, 2, P, limit)
317
318#define EVENT_VMCreate_PARAMS(PARAM, X) \
319 PARAM(X, 0, P, vm) \
320 PARAM(X, 1, A, base) \
321 PARAM(X, 2, A, limit)
322
323#define EVENT_VMDestroy_PARAMS(PARAM, X) \
324 PARAM(X, 0, P, vm)
325
326#define EVENT_VMMap_PARAMS(PARAM, X) \
327 PARAM(X, 0, P, vm) \
328 PARAM(X, 1, A, base) \
329 PARAM(X, 2, A, limit)
330
331#define EVENT_VMUnmap_PARAMS(PARAM, X) \
332 PARAM(X, 0, P, vm) \
333 PARAM(X, 1, A, base) \
334 PARAM(X, 2, A, limit)
335
336#define EVENT_ArenaExtend_PARAMS(PARAM, X) \
337 PARAM(X, 0, P, arena) \
338 PARAM(X, 1, A, base) \
339 PARAM(X, 2, W, size)
340
341#define EVENT_RootScan_PARAMS(PARAM, X) \
342 PARAM(X, 0, P, root) \
343 PARAM(X, 1, W, ts) \
344 PARAM(X, 2, W, summary)
345
346#define EVENT_BufferReserve_PARAMS(PARAM, X) \
347 PARAM(X, 0, P, buffer) \
348 PARAM(X, 1, A, init) \
349 PARAM(X, 2, W, size)
350
351#define EVENT_BufferCommit_PARAMS(PARAM, X) \
352 PARAM(X, 0, P, buffer) \
353 PARAM(X, 1, A, p) \
354 PARAM(X, 2, W, size) \
355 PARAM(X, 3, A, clientClass)
356
357#define EVENT_BufferInit_PARAMS(PARAM, X) \
358 PARAM(X, 0, P, buffer) \
359 PARAM(X, 1, P, pool) \
360 PARAM(X, 2, U, isMutator)
361
362#define EVENT_BufferFinish_PARAMS(PARAM, X) \
363 PARAM(X, 0, P, buffer)
364
365#define EVENT_BufferFill_PARAMS(PARAM, X) \
366 PARAM(X, 0, P, buffer) \
367 PARAM(X, 1, W, size) \
368 PARAM(X, 2, A, base) \
369 PARAM(X, 3, W, filled)
370
371#define EVENT_BufferEmpty_PARAMS(PARAM, X) \
372 PARAM(X, 0, P, buffer) \
373 PARAM(X, 1, W, spare)
374
375#define EVENT_SegAllocFail_PARAMS(PARAM, X) \
376 PARAM(X, 0, P, arena) \
377 PARAM(X, 1, W, size) \
378 PARAM(X, 2, P, pool)
379
380#define EVENT_TraceScanSeg_PARAMS(PARAM, X) \
381 PARAM(X, 0, U, ts) \
382 PARAM(X, 1, U, rank) \
383 PARAM(X, 2, P, arena) \
384 PARAM(X, 3, P, seg)
385
386#define EVENT_TraceScanSingleRef_PARAMS(PARAM, X) \
387 PARAM(X, 0, U, ts) \
388 PARAM(X, 1, U, rank) \
389 PARAM(X, 2, P, arena) \
390 PARAM(X, 3, A, refIO)
391
392#define EVENT_TraceStatCondemn_PARAMS(PARAM, X) \
393 PARAM(X, 0, P, trace) \
394 PARAM(X, 1, W, condemned) \
395 PARAM(X, 2, W, notCondemned) \
396 PARAM(X, 3, W, foundation) \
397 PARAM(X, 4, W, rate) \
398 PARAM(X, 5, D, mortality) \
399 PARAM(X, 6, D, finishingTime)
400
401#define EVENT_TraceStatScan_PARAMS(PARAM, X) \
402 PARAM(X, 0, P, trace) \
403 PARAM(X, 1, W, rootScanCount) \
404 PARAM(X, 2, W, rootScanSize) \
405 PARAM(X, 3, W, rootCopiedSize) \
406 PARAM(X, 4, W, segScanCount) \
407 PARAM(X, 5, W, segScanSize) \
408 PARAM(X, 6, W, segCopiedSize) \
409 PARAM(X, 7, W, singleScanCount) \
410 PARAM(X, 8, W, singleScanSize) \
411 PARAM(X, 9, W, singleCopiedSize) \
412 PARAM(X, 10, W, readBarrierHitCount) \
413 PARAM(X, 11, W, greySegMax) \
414 PARAM(X, 12, W, pointlessScanCount)
415
416#define EVENT_TraceStatFix_PARAMS(PARAM, X) \
417 PARAM(X, 0, P, trace) \
418 PARAM(X, 1, W, fixRefCount) \
419 PARAM(X, 2, W, segRefCount) \
420 PARAM(X, 3, W, whiteSegRefCount) \
421 PARAM(X, 4, W, nailCount) \
422 PARAM(X, 5, W, snapCount) \
423 PARAM(X, 6, W, forwardedCount) \
424 PARAM(X, 7, W, forwardedSize) \
425 PARAM(X, 8, W, preservedInPlaceCount) \
426 PARAM(X, 9, W, preservedInPlaceSize)
427
428#define EVENT_TraceStatReclaim_PARAMS(PARAM, X) \
429 PARAM(X, 0, P, trace) \
430 PARAM(X, 1, W, reclaimCount) \
431 PARAM(X, 2, W, reclaimSize)
432
433#define EVENT_PoolInitMVFF_PARAMS(PARAM, X) \
434 PARAM(X, 0, P, pool) \
435 PARAM(X, 1, P, arena) \
436 PARAM(X, 2, W, extendBy) \
437 PARAM(X, 3, W, avgSize) \
438 PARAM(X, 4, W, align) \
439 PARAM(X, 5, U, slotHigh) \
440 PARAM(X, 6, U, arenaHigh) \
441 PARAM(X, 7, U, firstFit)
442
443#define EVENT_PoolInitMV_PARAMS(PARAM, X) \
444 PARAM(X, 0, P, pool) \
445 PARAM(X, 1, P, arena) \
446 PARAM(X, 2, W, extendBy) \
447 PARAM(X, 3, W, avgSize) \
448 PARAM(X, 4, W, maxSize)
449
450#define EVENT_PoolInitMFS_PARAMS(PARAM, X) \
451 PARAM(X, 0, P, pool) \
452 PARAM(X, 1, P, arena) \
453 PARAM(X, 2, W, extendBy) \
454 PARAM(X, 3, W, unitSize)
455
456#define EVENT_PoolInitAMS_PARAMS(PARAM, X) \
457 PARAM(X, 0, P, pool) \
458 PARAM(X, 1, P, arena) \
459 PARAM(X, 2, P, format)
460
461#define EVENT_PoolInitAMC_PARAMS(PARAM, X) \
462 PARAM(X, 0, P, pool) \
463 PARAM(X, 1, P, format)
464
465#define EVENT_PoolInitAMCZ_PARAMS(PARAM, X) \
466 PARAM(X, 0, P, pool) \
467 PARAM(X, 1, P, format)
468
469#define EVENT_PoolInitAWL_PARAMS(PARAM, X) \
470 PARAM(X, 0, P, pool) \
471 PARAM(X, 1, P, format)
472
473#define EVENT_PoolInitLO_PARAMS(PARAM, X) \
474 PARAM(X, 0, P, pool) \
475 PARAM(X, 1, P, format)
476
477#define EVENT_PoolInitSNC_PARAMS(PARAM, X) \
478 PARAM(X, 0, P, pool) \
479 PARAM(X, 1, P, format)
480
481#define EVENT_PoolInitMVT_PARAMS(PARAM, X) \
482 PARAM(X, 0, P, pool) \
483 PARAM(X, 1, W, minSize) \
484 PARAM(X, 2, W, meanSize) \
485 PARAM(X, 3, W, maxSize) \
486 PARAM(X, 4, W, reserveDepth) \
487 PARAM(X, 5, W, fragLimig)
488
489#define EVENT_BufferInitSeg_PARAMS(PARAM, X) \
490 PARAM(X, 0, P, buffer) \
491 PARAM(X, 1, P, pool) \
492 PARAM(X, 2, U, isMutator)
493
494#define EVENT_BufferInitRank_PARAMS(PARAM, X) \
495 PARAM(X, 0, P, buffer) \
496 PARAM(X, 1, P, pool) \
497 PARAM(X, 2, U, isMutator) \
498 PARAM(X, 3, U, rank)
499
500#define EVENT_ReservoirLimitSet_PARAMS(PARAM, X) \
501 PARAM(X, 0, P, arena) \
502 PARAM(X, 1, W, size)
503
504#define EVENT_CommitLimitSet_PARAMS(PARAM, X) \
505 PARAM(X, 0, P, arena) \
506 PARAM(X, 1, W, limit) \
507 PARAM(X, 2, U, OK)
508
509#define EVENT_SpareCommitLimitSet_PARAMS(PARAM, X) \
510 PARAM(X, 0, P, arena) \
511 PARAM(X, 1, W, limit)
512
513#define EVENT_ArenaAlloc_PARAMS(PARAM, X) \
514 PARAM(X, 0, P, arena) \
515 PARAM(X, 1, P, baseTract) \
516 PARAM(X, 2, A, base) \
517 PARAM(X, 3, W, size) \
518 PARAM(X, 4, P, pool)
519
520#define EVENT_ArenaFree_PARAMS(PARAM, X) \
521 PARAM(X, 0, P, arena) \
522 PARAM(X, 1, A, base) \
523 PARAM(X, 2, W, size)
524
525#define EVENT_ArenaAllocFail_PARAMS(PARAM, X) \
526 PARAM(X, 0, P, arena) \
527 PARAM(X, 1, W, size) \
528 PARAM(X, 2, P, pool)
529
530#define EVENT_SegMerge_PARAMS(PARAM, X) \
531 PARAM(X, 0, P, segLo) \
532 PARAM(X, 1, P, segHi) \
533 PARAM(X, 2, U, withReservoirPermit)
534
535#define EVENT_SegSplit_PARAMS(PARAM, X) \
536 PARAM(X, 0, P, seg) \
537 PARAM(X, 1, P, segLo) \
538 PARAM(X, 2, P, segHi) \
539 PARAM(X, 3, A, at)
540
160#endif /* eventdef_h */ 541#endif /* eventdef_h */
161 542
162/* C. COPYRIGHT AND LICENSE 543/* C. COPYRIGHT AND LICENSE
diff --git a/mps/code/eventpro.c b/mps/code/eventpro.c
index 1dc7a2f0a11..0abc8e8735f 100644
--- a/mps/code/eventpro.c
+++ b/mps/code/eventpro.c
@@ -78,70 +78,21 @@ typedef struct {
78 EventSize offsets[15]; /* FIXME: literal constant */ 78 EventSize offsets[15]; /* FIXME: literal constant */
79} eventRecord; 79} eventRecord;
80 80
81/* EVENTn_FORMAT produces a short string version of an event format, e.g. 81#define EVENT_FORMAT_PARAM(X, index, sort, ident) #sort
82 it converts (P,P,W) into "PPW" 82
83 83#define EVENT_OFFSETS_PARAM(name, index, sort, ident) \
84for i in range(1,15): 84 offsetof(Event##name##Struct, f##index),
85 print "#define EVENT%d_FORMAT(%s) %s" % (
86 i,
87 ", ".join(["p%d" % j for j in range(0, i)]),
88 " ".join(["#p%d" % j for j in range(0, i)])
89 )
90*/
91#define EVENT0_FORMAT() ""
92#define EVENT1_FORMAT(p0) #p0
93#define EVENT2_FORMAT(p0, p1) #p0 #p1
94#define EVENT3_FORMAT(p0, p1, p2) #p0 #p1 #p2
95#define EVENT4_FORMAT(p0, p1, p2, p3) #p0 #p1 #p2 #p3
96#define EVENT5_FORMAT(p0, p1, p2, p3, p4) #p0 #p1 #p2 #p3 #p4
97#define EVENT6_FORMAT(p0, p1, p2, p3, p4, p5) #p0 #p1 #p2 #p3 #p4 #p5
98#define EVENT7_FORMAT(p0, p1, p2, p3, p4, p5, p6) #p0 #p1 #p2 #p3 #p4 #p5 #p6
99#define EVENT8_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7
100#define EVENT9_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8
101#define EVENT10_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9
102#define EVENT11_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10
103#define EVENT12_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10 #p11
104#define EVENT13_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10 #p11 #p12
105#define EVENT14_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10 #p11 #p12 #p13
106#define EVENT15_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10 #p11 #p12 #p13 #p14
107
108/* EVENTn_OFFSETS is a macro which produces an. array initializer containing
109 the offsets of the fields within an event structure with the specified
110 format.
111
112for i in range(1, 15):
113 plist = ", ".join(["p%d" % i for i in range(0, i)])
114 print "#define EVENT%d_OFFSETS(%s) {%s}" % (
115 i, plist,
116 ", ".join(["offsetof(EVENT%d_STRUCT(%s), f%d)" % (i, plist, j)
117 for j in range(0, i)])
118 )
119*/
120#define EVENT0_OFFSETS() {0}
121#define EVENT1_OFFSETS(p0) {offsetof(EVENT1_STRUCT(p0), f0)}
122#define EVENT2_OFFSETS(p0, p1) {offsetof(EVENT2_STRUCT(p0, p1), f0), offsetof(EVENT2_STRUCT(p0, p1), f1)}
123#define EVENT3_OFFSETS(p0, p1, p2) {offsetof(EVENT3_STRUCT(p0, p1, p2), f0), offsetof(EVENT3_STRUCT(p0, p1, p2), f1), offsetof(EVENT3_STRUCT(p0, p1, p2), f2)}
124#define EVENT4_OFFSETS(p0, p1, p2, p3) {offsetof(EVENT4_STRUCT(p0, p1, p2, p3), f0), offsetof(EVENT4_STRUCT(p0, p1, p2, p3), f1), offsetof(EVENT4_STRUCT(p0, p1, p2, p3), f2), offsetof(EVENT4_STRUCT(p0, p1, p2, p3), f3)}
125#define EVENT5_OFFSETS(p0, p1, p2, p3, p4) {offsetof(EVENT5_STRUCT(p0, p1, p2, p3, p4), f0), offsetof(EVENT5_STRUCT(p0, p1, p2, p3, p4), f1), offsetof(EVENT5_STRUCT(p0, p1, p2, p3, p4), f2), offsetof(EVENT5_STRUCT(p0, p1, p2, p3, p4), f3), offsetof(EVENT5_STRUCT(p0, p1, p2, p3, p4), f4)}
126#define EVENT6_OFFSETS(p0, p1, p2, p3, p4, p5) {offsetof(EVENT6_STRUCT(p0, p1, p2, p3, p4, p5), f0), offsetof(EVENT6_STRUCT(p0, p1, p2, p3, p4, p5), f1), offsetof(EVENT6_STRUCT(p0, p1, p2, p3, p4, p5), f2), offsetof(EVENT6_STRUCT(p0, p1, p2, p3, p4, p5), f3), offsetof(EVENT6_STRUCT(p0, p1, p2, p3, p4, p5), f4), offsetof(EVENT6_STRUCT(p0, p1, p2, p3, p4, p5), f5)}
127#define EVENT7_OFFSETS(p0, p1, p2, p3, p4, p5, p6) {offsetof(EVENT7_STRUCT(p0, p1, p2, p3, p4, p5, p6), f0), offsetof(EVENT7_STRUCT(p0, p1, p2, p3, p4, p5, p6), f1), offsetof(EVENT7_STRUCT(p0, p1, p2, p3, p4, p5, p6), f2), offsetof(EVENT7_STRUCT(p0, p1, p2, p3, p4, p5, p6), f3), offsetof(EVENT7_STRUCT(p0, p1, p2, p3, p4, p5, p6), f4), offsetof(EVENT7_STRUCT(p0, p1, p2, p3, p4, p5, p6), f5), offsetof(EVENT7_STRUCT(p0, p1, p2, p3, p4, p5, p6), f6)}
128#define EVENT8_OFFSETS(p0, p1, p2, p3, p4, p5, p6, p7) {offsetof(EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7), f0), offsetof(EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7), f1), offsetof(EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7), f2), offsetof(EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7), f3), offsetof(EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7), f4), offsetof(EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7), f5), offsetof(EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7), f6), offsetof(EVENT8_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7), f7)}
129#define EVENT9_OFFSETS(p0, p1, p2, p3, p4, p5, p6, p7, p8) {offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f0), offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f1), offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f2), offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f3), offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f4), offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f5), offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f6), offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f7), offsetof(EVENT9_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8), f8)}
130#define EVENT10_OFFSETS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) {offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f0), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f1), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f2), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f3), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f4), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f5), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f6), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f7), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f8), offsetof(EVENT10_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9), f9)}
131#define EVENT11_OFFSETS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) {offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f0), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f1), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f2), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f3), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f4), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f5), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f6), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f7), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f8), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f9), offsetof(EVENT11_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), f10)}
132#define EVENT12_OFFSETS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) {offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f0), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f1), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f2), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f3), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f4), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f5), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f6), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f7), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f8), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f9), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f10), offsetof(EVENT12_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), f11)}
133#define EVENT13_OFFSETS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) {offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f0), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f1), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f2), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f3), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f4), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f5), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f6), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f7), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f8), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f9), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f10), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f11), offsetof(EVENT13_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), f12)}
134#define EVENT14_OFFSETS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) {offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f0), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f1), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f2), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f3), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f4), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f5), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f6), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f7), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f8), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f9), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f10), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f11), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f12), offsetof(EVENT14_STRUCT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), f13)}
135 85
136static eventRecord eventTypes[] = {
137 {"(unused)", 0, 0, 0, "", {0}},
138#define EVENT_INIT(X, name, code, always, kind, count, format) \ 86#define EVENT_INIT(X, name, code, always, kind, count, format) \
139 {#name, \ 87 {#name, \
140 code, \ 88 code, \
141 EventSizeAlign(sizeof(Event##name##Struct)), \ 89 EventSizeAlign(sizeof(Event##name##Struct)), \
142 count, \ 90 count, \
143 EVENT##count##_FORMAT format, \ 91 "" EVENT_##name##_PARAMS(EVENT_FORMAT_PARAM, X), \
144 EVENT##count##_OFFSETS format}, 92 { EVENT_##name##_PARAMS(EVENT_OFFSETS_PARAM, name) 0 }},
93
94static eventRecord eventTypes[] = {
95 {"(unused)", 0, 0, 0, "", {0}},
145 EVENT_LIST(EVENT_INIT, X) 96 EVENT_LIST(EVENT_INIT, X)
146}; 97};
147 98
diff --git a/mps/code/poolmfs.c b/mps/code/poolmfs.c
index 4e31e87fccf..82044e37589 100644
--- a/mps/code/poolmfs.c
+++ b/mps/code/poolmfs.c
@@ -106,7 +106,7 @@ static Res MFSInit(Pool pool, va_list arg)
106 mfs->sig = MFSSig; 106 mfs->sig = MFSSig;
107 107
108 AVERT(MFS, mfs); 108 AVERT(MFS, mfs);
109 EVENT3(PoolInit, pool, arena, ClassOfPool(pool)); 109 EVENT4(PoolInitMFS, pool, arena, extendBy, unitSize);
110 return ResOK; 110 return ResOK;
111} 111}
112 112
diff --git a/mps/code/seg.c b/mps/code/seg.c
index 4ea3f0c8aaa..243a5877e85 100644
--- a/mps/code/seg.c
+++ b/mps/code/seg.c
@@ -526,7 +526,7 @@ Res SegMerge(Seg *mergedSegReturn, Seg segLo, Seg segHi,
526 if (ResOK != res) 526 if (ResOK != res)
527 goto failMerge; 527 goto failMerge;
528 528
529 EVENT3(SegMerge, segLo, segLo, segHi); 529 EVENT3(SegMerge, segLo, segHi, withReservoirPermit);
530 /* Deallocate segHi object */ 530 /* Deallocate segHi object */
531 ControlFree(arena, segHi, class->size); 531 ControlFree(arena, segHi, class->size);
532 AVERT(Seg, segLo); 532 AVERT(Seg, segLo);