diff options
| author | Richard Brooksby | 2012-08-31 04:25:18 +0100 |
|---|---|---|
| committer | Richard Brooksby | 2012-08-31 04:25:18 +0100 |
| commit | 7d28876904ed310ef5b7ad7877fc8c5914ba67dc (patch) | |
| tree | 9b4644ae1d26f4d7715ffd313ecbcfbc5071b9e0 /mps/code | |
| parent | 71d487d995ed8209560d8442efd34fd628a0bf02 (diff) | |
| download | emacs-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.h | 2 | ||||
| -rw-r--r-- | mps/code/eventcom.h | 40 | ||||
| -rw-r--r-- | mps/code/eventdef.h | 405 | ||||
| -rw-r--r-- | mps/code/eventpro.c | 67 | ||||
| -rw-r--r-- | mps/code/poolmfs.c | 2 | ||||
| -rw-r--r-- | mps/code/seg.c | 2 |
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; | |||
| 157 | typedef EventStringStruct EventFS; | 157 | typedef EventStringStruct EventFS; |
| 158 | typedef double EventFD; | 158 | typedef double EventFD; |
| 159 | 159 | ||
| 160 | /* | ||
| 161 | for 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. */ |
| 186 | typedef EVENT0_STRUCT() EventAnyStruct; | 162 | typedef 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 | ||
| 191 | EVENT_LIST(EVENT_STRUCT, X) | 179 | EVENT_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) \ | |
| 84 | for 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 | |||
| 112 | for 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 | ||
| 136 | static 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 | |||
| 94 | static 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); |