diff options
| author | Richard Brooksby | 2012-08-21 22:48:11 +0100 |
|---|---|---|
| committer | Richard Brooksby | 2012-08-21 22:48:11 +0100 |
| commit | 4009b8a55918aa368510106468e153039986fffc (patch) | |
| tree | 46efac076c43461993fb5038fba438fea6e9fd49 /mps/code | |
| parent | ab85e6ff329c0237cbe3160f2e10b70ab9c0a182 (diff) | |
| download | emacs-4009b8a55918aa368510106468e153039986fffc.tar.gz emacs-4009b8a55918aa368510106468e153039986fffc.zip | |
Abolishing eventgen.pl. event structures are now expanded by the preprocessor.
Abolishing event formats. Each event now has its own structure.
Event parameters are now written directly into the event buffer, rather than being copied twice.
Copied from Perforce
Change: 179010
ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
34 files changed, 1090 insertions, 1450 deletions
diff --git a/mps/code/arena.c b/mps/code/arena.c index 704d13f60db..8a83b26fe5a 100644 --- a/mps/code/arena.c +++ b/mps/code/arena.c | |||
| @@ -529,7 +529,7 @@ Res ArenaAlloc(Addr *baseReturn, SegPref pref, Size size, Pool pool, | |||
| 529 | if (res == ResOK) | 529 | if (res == ResOK) |
| 530 | goto goodAlloc; | 530 | goto goodAlloc; |
| 531 | } | 531 | } |
| 532 | EVENT_PWP(ArenaAllocFail, arena, size, pool); | 532 | EVENT3(ArenaAllocFail, arena, size, pool); |
| 533 | return res; | 533 | return res; |
| 534 | 534 | ||
| 535 | goodAlloc: | 535 | goodAlloc: |
| @@ -537,7 +537,7 @@ goodAlloc: | |||
| 537 | arena->lastTract = baseTract; | 537 | arena->lastTract = baseTract; |
| 538 | arena->lastTractBase = base; | 538 | arena->lastTractBase = base; |
| 539 | 539 | ||
| 540 | EVENT_PPAWP(ArenaAlloc, arena, baseTract, base, size, pool); | 540 | EVENT5(ArenaAlloc, arena, baseTract, base, size, pool); |
| 541 | *baseReturn = base; | 541 | *baseReturn = base; |
| 542 | return ResOK; | 542 | return ResOK; |
| 543 | } | 543 | } |
| @@ -577,7 +577,7 @@ void ArenaFree(Addr base, Size size, Pool pool) | |||
| 577 | ReservoirDeposit(reservoir, base, size); | 577 | ReservoirDeposit(reservoir, base, size); |
| 578 | } | 578 | } |
| 579 | 579 | ||
| 580 | EVENT_PAW(ArenaFree, arena, base, size); | 580 | EVENT3(ArenaFree, arena, base, size); |
| 581 | return; | 581 | return; |
| 582 | } | 582 | } |
| 583 | 583 | ||
| @@ -616,7 +616,7 @@ void ArenaSetSpareCommitLimit(Arena arena, Size limit) | |||
| 616 | arena->class->spareCommitExceeded(arena); | 616 | arena->class->spareCommitExceeded(arena); |
| 617 | } | 617 | } |
| 618 | 618 | ||
| 619 | EVENT_PW(SpareCommitLimitSet, arena, limit); | 619 | EVENT2(SpareCommitLimitSet, arena, limit); |
| 620 | return; | 620 | return; |
| 621 | } | 621 | } |
| 622 | 622 | ||
| @@ -658,7 +658,7 @@ Res ArenaSetCommitLimit(Arena arena, Size limit) | |||
| 658 | arena->commitLimit = limit; | 658 | arena->commitLimit = limit; |
| 659 | res = ResOK; | 659 | res = ResOK; |
| 660 | } | 660 | } |
| 661 | EVENT_PWU(CommitLimitSet, arena, limit, (res == ResOK)); | 661 | EVENT3(CommitLimitSet, arena, limit, (res == ResOK)); |
| 662 | return res; | 662 | return res; |
| 663 | } | 663 | } |
| 664 | 664 | ||
| @@ -690,7 +690,7 @@ Res ArenaExtend(Arena arena, Addr base, Size size) | |||
| 690 | if (res != ResOK) | 690 | if (res != ResOK) |
| 691 | return res; | 691 | return res; |
| 692 | 692 | ||
| 693 | EVENT_PAW(ArenaExtend, arena, base, size); | 693 | EVENT3(ArenaExtend, arena, base, size); |
| 694 | return ResOK; | 694 | return ResOK; |
| 695 | } | 695 | } |
| 696 | 696 | ||
diff --git a/mps/code/arenacl.c b/mps/code/arenacl.c index 5d59abb9827..077c972dc9e 100644 --- a/mps/code/arenacl.c +++ b/mps/code/arenacl.c | |||
| @@ -236,7 +236,7 @@ static Res ClientArenaInit(Arena *arenaReturn, ArenaClass class, | |||
| 236 | /* arena if the size is not a power of 2. */ | 236 | /* arena if the size is not a power of 2. */ |
| 237 | arena->zoneShift = SizeFloorLog2(size >> MPS_WORD_SHIFT); | 237 | arena->zoneShift = SizeFloorLog2(size >> MPS_WORD_SHIFT); |
| 238 | 238 | ||
| 239 | EVENT_PWA(ArenaCreateCL, arena, size, base); | 239 | EVENT3(ArenaCreateCL, arena, size, base); |
| 240 | AVERT(ClientArena, clientArena); | 240 | AVERT(ClientArena, clientArena); |
| 241 | *arenaReturn = arena; | 241 | *arenaReturn = arena; |
| 242 | return ResOK; | 242 | return ResOK; |
diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index 81caf8bead5..b0d69b6b246 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c | |||
| @@ -529,9 +529,9 @@ static Res VMArenaInit(Arena *arenaReturn, ArenaClass class, va_list args) | |||
| 529 | 529 | ||
| 530 | AVERT(VMArena, vmArena); | 530 | AVERT(VMArena, vmArena); |
| 531 | if ((ArenaClass)mps_arena_class_vm() == class) | 531 | if ((ArenaClass)mps_arena_class_vm() == class) |
| 532 | EVENT_PWW(ArenaCreateVM, arena, userSize, chunkSize); | 532 | EVENT3(ArenaCreateVM, arena, userSize, chunkSize); |
| 533 | else | 533 | else |
| 534 | EVENT_PWW(ArenaCreateVMNZ, arena, userSize, chunkSize); | 534 | EVENT3(ArenaCreateVMNZ, arena, userSize, chunkSize); |
| 535 | *arenaReturn = arena; | 535 | *arenaReturn = arena; |
| 536 | return ResOK; | 536 | return ResOK; |
| 537 | 537 | ||
| @@ -573,7 +573,7 @@ static void VMArenaFinish(Arena arena) | |||
| 573 | 573 | ||
| 574 | VMUnmap(arenaVM, VMBase(arenaVM), VMLimit(arenaVM)); | 574 | VMUnmap(arenaVM, VMBase(arenaVM), VMLimit(arenaVM)); |
| 575 | VMDestroy(arenaVM); | 575 | VMDestroy(arenaVM); |
| 576 | EVENT_P(ArenaDestroy, vmArena); | 576 | EVENT1(ArenaDestroy, vmArena); |
| 577 | } | 577 | } |
| 578 | 578 | ||
| 579 | 579 | ||
diff --git a/mps/code/buffer.c b/mps/code/buffer.c index d8346c49e9c..95397240083 100644 --- a/mps/code/buffer.c +++ b/mps/code/buffer.c | |||
| @@ -361,7 +361,7 @@ void BufferDetach(Buffer buffer, Pool pool) | |||
| 361 | ~(BufferModeATTACHED|BufferModeFLIPPED|BufferModeTRANSITION); | 361 | ~(BufferModeATTACHED|BufferModeFLIPPED|BufferModeTRANSITION); |
| 362 | BufferFrameSetState(buffer, BufferFrameDISABLED); | 362 | BufferFrameSetState(buffer, BufferFrameDISABLED); |
| 363 | 363 | ||
| 364 | EVENT_PW(BufferEmpty, buffer, spare); | 364 | EVENT2(BufferEmpty, buffer, spare); |
| 365 | } | 365 | } |
| 366 | } | 366 | } |
| 367 | 367 | ||
| @@ -416,7 +416,7 @@ void BufferFinish(Buffer buffer) | |||
| 416 | /* Finish off the generic buffer fields. */ | 416 | /* Finish off the generic buffer fields. */ |
| 417 | RingFinish(&buffer->poolRing); | 417 | RingFinish(&buffer->poolRing); |
| 418 | 418 | ||
| 419 | EVENT_P(BufferFinish, buffer); | 419 | EVENT1(BufferFinish, buffer); |
| 420 | } | 420 | } |
| 421 | 421 | ||
| 422 | 422 | ||
| @@ -682,7 +682,7 @@ void BufferAttach(Buffer buffer, Addr base, Addr limit, | |||
| 682 | buffer->class->attach(buffer, base, limit, init, size); | 682 | buffer->class->attach(buffer, base, limit, init, size); |
| 683 | 683 | ||
| 684 | AVERT(Buffer, buffer); | 684 | AVERT(Buffer, buffer); |
| 685 | EVENT_PWAW(BufferFill, buffer, size, base, filled); | 685 | EVENT4(BufferFill, buffer, size, base, filled); |
| 686 | } | 686 | } |
| 687 | 687 | ||
| 688 | 688 | ||
| @@ -727,7 +727,7 @@ Res BufferFill(Addr *pReturn, Buffer buffer, Size size, | |||
| 727 | next <= buffer->poolLimit) { | 727 | next <= buffer->poolLimit) { |
| 728 | buffer->apStruct.alloc = next; | 728 | buffer->apStruct.alloc = next; |
| 729 | if (buffer->mode & BufferModeLOGGED) { | 729 | if (buffer->mode & BufferModeLOGGED) { |
| 730 | EVENT_PAW(BufferReserve, buffer, buffer->apStruct.init, size); | 730 | EVENT3(BufferReserve, buffer, buffer->apStruct.init, size); |
| 731 | } | 731 | } |
| 732 | *pReturn = buffer->apStruct.init; | 732 | *pReturn = buffer->apStruct.init; |
| 733 | return ResOK; | 733 | return ResOK; |
| @@ -752,7 +752,7 @@ Res BufferFill(Addr *pReturn, Buffer buffer, Size size, | |||
| 752 | BufferAttach(buffer, base, limit, base, size); | 752 | BufferAttach(buffer, base, limit, base, size); |
| 753 | 753 | ||
| 754 | if (buffer->mode & BufferModeLOGGED) { | 754 | if (buffer->mode & BufferModeLOGGED) { |
| 755 | EVENT_PAW(BufferReserve, buffer, buffer->apStruct.init, size); | 755 | EVENT3(BufferReserve, buffer, buffer->apStruct.init, size); |
| 756 | } | 756 | } |
| 757 | 757 | ||
| 758 | *pReturn = base; | 758 | *pReturn = base; |
| @@ -869,7 +869,7 @@ Bool BufferTrip(Buffer buffer, Addr p, Size size) | |||
| 869 | } else { | 869 | } else { |
| 870 | clientClass = (Addr)0; | 870 | clientClass = (Addr)0; |
| 871 | } | 871 | } |
| 872 | EVENT_PAWA(BufferCommit, buffer, p, size, clientClass); | 872 | EVENT4(BufferCommit, buffer, p, size, clientClass); |
| 873 | /* Of course, it's not _really_ unused unless you're not */ | 873 | /* Of course, it's not _really_ unused unless you're not */ |
| 874 | /* using telemetry. This is a HACK @@@@. It should be */ | 874 | /* using telemetry. This is a HACK @@@@. It should be */ |
| 875 | /* removed when telemetry is fixed to use its arguments. */ | 875 | /* removed when telemetry is fixed to use its arguments. */ |
| @@ -1089,7 +1089,7 @@ static Res bufferTrivInit (Buffer buffer, Pool pool, va_list args) | |||
| 1089 | AVERT(Buffer, buffer); | 1089 | AVERT(Buffer, buffer); |
| 1090 | AVERT(Pool, pool); | 1090 | AVERT(Pool, pool); |
| 1091 | UNUSED(args); | 1091 | UNUSED(args); |
| 1092 | EVENT_PPU(BufferInit, buffer, pool, buffer->isMutator); | 1092 | EVENT3(BufferInit, buffer, pool, buffer->isMutator); |
| 1093 | return ResOK; | 1093 | return ResOK; |
| 1094 | } | 1094 | } |
| 1095 | 1095 | ||
| @@ -1299,7 +1299,7 @@ static Res segBufInit (Buffer buffer, Pool pool, va_list args) | |||
| 1299 | segbuf->rankSet = RankSetEMPTY; | 1299 | segbuf->rankSet = RankSetEMPTY; |
| 1300 | 1300 | ||
| 1301 | AVERT(SegBuf, segbuf); | 1301 | AVERT(SegBuf, segbuf); |
| 1302 | EVENT_PPU(BufferInitSeg, buffer, pool, buffer->isMutator); | 1302 | EVENT3(BufferInitSeg, buffer, pool, buffer->isMutator); |
| 1303 | return ResOK; | 1303 | return ResOK; |
| 1304 | } | 1304 | } |
| 1305 | 1305 | ||
| @@ -1513,7 +1513,7 @@ static Res rankBufInit (Buffer buffer, Pool pool, va_list args) | |||
| 1513 | BufferSetRankSet(buffer, RankSetSingle(rank)); | 1513 | BufferSetRankSet(buffer, RankSetSingle(rank)); |
| 1514 | 1514 | ||
| 1515 | /* There's nothing to check that the superclass doesn't, so no AVERT. */ | 1515 | /* There's nothing to check that the superclass doesn't, so no AVERT. */ |
| 1516 | EVENT_PPUU(BufferInitRank, buffer, pool, buffer->isMutator, rank); | 1516 | EVENT4(BufferInitRank, buffer, pool, buffer->isMutator, rank); |
| 1517 | return ResOK; | 1517 | return ResOK; |
| 1518 | } | 1518 | } |
| 1519 | 1519 | ||
diff --git a/mps/code/cbs.c b/mps/code/cbs.c index e3f5204e03e..c01ec28013d 100644 --- a/mps/code/cbs.c +++ b/mps/code/cbs.c | |||
| @@ -313,7 +313,7 @@ Res CBSInit(Arena arena, CBS cbs, void *owner, | |||
| 313 | cbs->sig = CBSSig; | 313 | cbs->sig = CBSSig; |
| 314 | 314 | ||
| 315 | AVERT(CBS, cbs); | 315 | AVERT(CBS, cbs); |
| 316 | EVENT_PP(CBSInit, cbs, owner); | 316 | EVENT2(CBSInit, cbs, owner); |
| 317 | UNUSED(owner); /* @@@@ hack: unused in non-event varieties */ | 317 | UNUSED(owner); /* @@@@ hack: unused in non-event varieties */ |
| 318 | CBSLeave(cbs); | 318 | CBSLeave(cbs); |
| 319 | return ResOK; | 319 | return ResOK; |
diff --git a/mps/code/dumper.c b/mps/code/dumper.c index b34fd02fb99..08edabe5726 100644 --- a/mps/code/dumper.c +++ b/mps/code/dumper.c | |||
| @@ -136,7 +136,7 @@ int main(int argc, char *argv[]) { | |||
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | switch(header[0]) { | 138 | switch(header[0]) { |
| 139 | #define EVENT_CASE(X, type, code, always, kind, format) \ | 139 | #define EVENT_CASE(X, type, code, always, kind, count, format) \ |
| 140 | case Event ## type: \ | 140 | case Event ## type: \ |
| 141 | readEvent(#type, #format, header[0], header[1], header[2]); \ | 141 | readEvent(#type, #format, header[0], header[1], header[2]); \ |
| 142 | break; | 142 | break; |
diff --git a/mps/code/event.c b/mps/code/event.c index 19e387abcfc..d4b32f83a2c 100644 --- a/mps/code/event.c +++ b/mps/code/event.c | |||
| @@ -37,7 +37,6 @@ static char eventBuffer[EventBufferSIZE]; | |||
| 37 | static Count eventUserCount; | 37 | static Count eventUserCount; |
| 38 | static Serial EventInternSerial; | 38 | static Serial EventInternSerial; |
| 39 | 39 | ||
| 40 | EventUnion EventMould; /* Used by macros in <code/event.h> */ | ||
| 41 | char *EventNext, *EventLimit; /* Used by macros in <code/event.h> */ | 40 | char *EventNext, *EventLimit; /* Used by macros in <code/event.h> */ |
| 42 | Word EventKindControl; /* Bit set used to control output. */ | 41 | Word EventKindControl; /* Bit set used to control output. */ |
| 43 | 42 | ||
| @@ -145,7 +144,7 @@ Word EventInternString(const char *label) | |||
| 145 | 144 | ||
| 146 | id = (Word)EventInternSerial; | 145 | id = (Word)EventInternSerial; |
| 147 | ++EventInternSerial; | 146 | ++EventInternSerial; |
| 148 | EVENT_WS(Intern, id, StringLength(label), label); | 147 | EVENT2S(Intern, id, StringLength(label), label); |
| 149 | return id; | 148 | return id; |
| 150 | } | 149 | } |
| 151 | 150 | ||
| @@ -160,7 +159,7 @@ Word EventInternGenString(size_t len, const char *label) | |||
| 160 | 159 | ||
| 161 | id = (Word)EventInternSerial; | 160 | id = (Word)EventInternSerial; |
| 162 | ++EventInternSerial; | 161 | ++EventInternSerial; |
| 163 | EVENT_WS(Intern, id, len, label); | 162 | EVENT2S(Intern, id, len, label); |
| 164 | return id; | 163 | return id; |
| 165 | } | 164 | } |
| 166 | 165 | ||
| @@ -171,7 +170,7 @@ void EventLabelAddr(Addr addr, Word id) | |||
| 171 | { | 170 | { |
| 172 | AVER((Serial)id < EventInternSerial); | 171 | AVER((Serial)id < EventInternSerial); |
| 173 | 172 | ||
| 174 | EVENT_AW(Label, addr, id); | 173 | EVENT2(Label, addr, id); |
| 175 | } | 174 | } |
| 176 | 175 | ||
| 177 | 176 | ||
diff --git a/mps/code/event.h b/mps/code/event.h index d2740e9d8b4..139460955fa 100644 --- a/mps/code/event.h +++ b/mps/code/event.h | |||
| @@ -58,13 +58,12 @@ extern Res EventFlush(void); | |||
| 58 | */ | 58 | */ |
| 59 | 59 | ||
| 60 | /* Note that enum values can be up to fifteen bits long portably. */ | 60 | /* Note that enum values can be up to fifteen bits long portably. */ |
| 61 | #define EVENT_ENUM(X, type, code, always, kind, format) \ | 61 | #define EVENT_ENUM(X, type, code, always, kind, count, format) \ |
| 62 | enum { \ | 62 | enum { \ |
| 63 | Event##type##High = ((code >> 8) & 0xFF), \ | 63 | Event##type##High = ((code >> 8) & 0xFF), \ |
| 64 | Event##type##Low = (code & 0xFF), \ | 64 | Event##type##Low = (code & 0xFF), \ |
| 65 | Event##type##Always = always, \ | 65 | Event##type##Always = always, \ |
| 66 | Event##type##Kind = EventKind##kind, \ | 66 | Event##type##Kind = EventKind##kind \ |
| 67 | Event##type##Format = EventFormat##format \ | ||
| 68 | }; | 67 | }; |
| 69 | 68 | ||
| 70 | EVENT_LIST(EVENT_ENUM, X) | 69 | EVENT_LIST(EVENT_ENUM, X) |
| @@ -72,27 +71,24 @@ EVENT_LIST(EVENT_ENUM, X) | |||
| 72 | 71 | ||
| 73 | /* Event writing support */ | 72 | /* Event writing support */ |
| 74 | 73 | ||
| 75 | extern EventUnion EventMould; | 74 | /* extern EventUnion EventMould; */ |
| 76 | extern char *EventNext, *EventLimit; | 75 | extern char *EventNext, *EventLimit; |
| 77 | extern Word EventKindControl; | 76 | extern Word EventKindControl; |
| 78 | 77 | ||
| 79 | #define EVENT_BEGIN(type) \ | 78 | #define EVENT_BEGIN(name, size) \ |
| 80 | BEGIN \ | 79 | BEGIN \ |
| 81 | if(BS_IS_MEMBER(EventKindControl, ((Index)Event##type##Kind))) { \ | 80 | if(BS_IS_MEMBER(EventKindControl, ((Index)Event##name##Kind))) { \ |
| 82 | size_t _length; | 81 | Event##name##Struct *_event; \ |
| 83 | 82 | size_t _size = size_tAlignUp(size, MPS_PF_ALIGN); \ | |
| 84 | #define EVENT_END(type, format, length) \ | 83 | if (_size > (size_t)(EventLimit - EventNext)) \ |
| 85 | AVER(EventFormat##format == Event##type##Format); \ | 84 | EventFlush(); \ |
| 86 | /* @@@@ As an interim measure, send the old event codes */ \ | 85 | AVER(_size <= (size_t)(EventLimit - EventNext)); \ |
| 87 | EventMould.any.code = Event##type; \ | 86 | _event = (void *)EventNext; \ |
| 88 | EventMould.any.clock = mps_clock(); \ | 87 | _event->code = Event##name; \ |
| 89 | AVER(EventNext <= EventLimit); \ | 88 | _event->clock = mps_clock(); |
| 90 | _length = size_tAlignUp(length, sizeof(Word)); \ | 89 | |
| 91 | if(_length > (size_t)(EventLimit - EventNext)) \ | 90 | #define EVENT_END(name, size) \ |
| 92 | EventFlush(); /* @@@@ should pass length */ \ | 91 | EventNext += _size; \ |
| 93 | AVER(_length <= (size_t)(EventLimit - EventNext)); \ | ||
| 94 | mps_lib_memcpy(EventNext, &EventMould, _length); \ | ||
| 95 | EventNext += _length; \ | ||
| 96 | } \ | 92 | } \ |
| 97 | END | 93 | END |
| 98 | 94 | ||
diff --git a/mps/code/eventcnv.c b/mps/code/eventcnv.c index ca51cf9022b..0f71680becd 100644 --- a/mps/code/eventcnv.c +++ b/mps/code/eventcnv.c | |||
| @@ -459,79 +459,79 @@ static void readLog(EventProc proc) | |||
| 459 | case EventLabel: { | 459 | case EventLabel: { |
| 460 | switch (style) { | 460 | switch (style) { |
| 461 | case '\0': case 'C': { | 461 | case '\0': case 'C': { |
| 462 | EventString sym = LabelText(proc, event->aw.w1); | 462 | EventString sym = LabelText(proc, event->Label.f1); |
| 463 | printf(style == '\0' ? | 463 | printf(style == '\0' ? |
| 464 | " %08"PRIXLONGEST" " : | 464 | " %08"PRIXLONGEST" " : |
| 465 | ", %"PRIuLONGEST", ", | 465 | ", %"PRIuLONGEST", ", |
| 466 | (ulongest_t)event->aw.a0); | 466 | (ulongest_t)event->Label.f0); |
| 467 | if (sym != NULL) { | 467 | if (sym != NULL) { |
| 468 | printStr(sym, (style == 'C')); | 468 | printStr(sym, (style == 'C')); |
| 469 | } else { | 469 | } else { |
| 470 | printf(style == '\0' ? | 470 | printf(style == '\0' ? |
| 471 | "sym %05"PRIXLONGEST : | 471 | "sym %05"PRIXLONGEST : |
| 472 | "sym %"PRIXLONGEST"\"", | 472 | "sym %"PRIXLONGEST"\"", |
| 473 | (ulongest_t)event->aw.w1); | 473 | (ulongest_t)event->Label.f1); |
| 474 | } | 474 | } |
| 475 | } break; | 475 | } break; |
| 476 | case 'L': { | 476 | case 'L': { |
| 477 | printf(" %"PRIXLONGEST" %"PRIXLONGEST, | 477 | printf(" %"PRIXLONGEST" %"PRIXLONGEST, |
| 478 | (ulongest_t)event->aw.a0, | 478 | (ulongest_t)event->Label.f0, |
| 479 | (ulongest_t)event->aw.w1); | 479 | (ulongest_t)event->Label.f1); |
| 480 | } break; | 480 | } break; |
| 481 | } | 481 | } |
| 482 | } break; | 482 | } break; |
| 483 | case EventMeterValues: { | 483 | case EventMeterValues: { |
| 484 | switch (style) { | 484 | switch (style) { |
| 485 | case '\0': { | 485 | case '\0': { |
| 486 | if (event->pddwww.w3 == 0) { | 486 | if (event->MeterValues.f3 == 0) { |
| 487 | printf(" %08"PRIXLONGEST" 0 N/A N/A N/A N/A", | 487 | printf(" %08"PRIXLONGEST" 0 N/A N/A N/A N/A", |
| 488 | (ulongest_t)event->pddwww.p0); | 488 | (ulongest_t)event->MeterValues.f0); |
| 489 | } else { | 489 | } else { |
| 490 | double mean = event->pddwww.d1 / (double)event->pddwww.w3; | 490 | double mean = event->MeterValues.f1 / (double)event->MeterValues.f3; |
| 491 | /* .stddev: stddev = sqrt(meanSquared - mean^2), but see */ | 491 | /* .stddev: stddev = sqrt(meanSquared - mean^2), but see */ |
| 492 | /* <code/meter.c#limitation.variance>. */ | 492 | /* <code/meter.c#limitation.variance>. */ |
| 493 | double stddev = sqrt(fabs(event->pddwww.d2 | 493 | double stddev = sqrt(fabs(event->MeterValues.f2 |
| 494 | - (mean * mean))); | 494 | - (mean * mean))); |
| 495 | printf(" %08"PRIXLONGEST" %8u %8u %8u %#8.3g %#8.3g", | 495 | printf(" %08"PRIXLONGEST" %8u %8u %8u %#8.3g %#8.3g", |
| 496 | (ulongest_t)event->pddwww.p0, (uint)event->pddwww.w3, | 496 | (ulongest_t)event->MeterValues.f0, (uint)event->MeterValues.f3, |
| 497 | (uint)event->pddwww.w4, (uint)event->pddwww.w5, | 497 | (uint)event->MeterValues.f4, (uint)event->MeterValues.f5, |
| 498 | mean, stddev); | 498 | mean, stddev); |
| 499 | } | 499 | } |
| 500 | printAddr(proc, (Addr)event->pddwww.p0); | 500 | printAddr(proc, (Addr)event->MeterValues.f0); |
| 501 | } break; | 501 | } break; |
| 502 | case 'C': { | 502 | case 'C': { |
| 503 | putchar(','); | 503 | putchar(','); |
| 504 | printAddr(proc, (Addr)event->pddwww.p0); | 504 | printAddr(proc, (Addr)event->MeterValues.f0); |
| 505 | printf(", %.10G, %.10G, %u, %u, %u", | 505 | printf(", %.10G, %.10G, %u, %u, %u", |
| 506 | event->pddwww.d1, event->pddwww.d2, | 506 | event->MeterValues.f1, event->MeterValues.f2, |
| 507 | (uint)event->pddwww.w3, (uint)event->pddwww.w4, | 507 | (uint)event->MeterValues.f3, (uint)event->MeterValues.f4, |
| 508 | (uint)event->pddwww.w5); | 508 | (uint)event->MeterValues.f5); |
| 509 | } break; | 509 | } break; |
| 510 | case 'L': { | 510 | case 'L': { |
| 511 | printf(" %"PRIXLONGEST" %#.10G %#.10G %X %X %X", | 511 | printf(" %"PRIXLONGEST" %#.10G %#.10G %X %X %X", |
| 512 | (ulongest_t)event->pddwww.p0, | 512 | (ulongest_t)event->MeterValues.f0, |
| 513 | event->pddwww.d1, event->pddwww.d2, | 513 | event->MeterValues.f1, event->MeterValues.f2, |
| 514 | (uint)event->pddwww.w3, (uint)event->pddwww.w4, | 514 | (uint)event->MeterValues.f3, (uint)event->MeterValues.f4, |
| 515 | (uint)event->pddwww.w5); | 515 | (uint)event->MeterValues.f5); |
| 516 | } break; | 516 | } break; |
| 517 | } | 517 | } |
| 518 | } break; | 518 | } break; |
| 519 | case EventPoolInit: { /* pool, arena, class */ | 519 | case EventPoolInit: { /* pool, arena, class */ |
| 520 | printf(styleConv, (ulongest_t)event->ppp.p0); | 520 | printf(styleConv, (ulongest_t)event->PoolInit.f0); |
| 521 | printf(styleConv, (ulongest_t)event->ppp.p1); | 521 | printf(styleConv, (ulongest_t)event->PoolInit.f1); |
| 522 | /* class is a Pointer, but we label them, so call printAddr */ | 522 | /* class is a Pointer, but we label them, so call printAddr */ |
| 523 | if (style != 'L') { | 523 | if (style != 'L') { |
| 524 | if (style == 'C') putchar(','); | 524 | if (style == 'C') putchar(','); |
| 525 | printAddr(proc, (Addr)event->ppp.p2); | 525 | printAddr(proc, (Addr)event->PoolInit.f2); |
| 526 | } else | 526 | } else |
| 527 | printf(styleConv, (ulongest_t)event->ppp.p2); | 527 | printf(styleConv, (ulongest_t)event->PoolInit.f2); |
| 528 | } break; | 528 | } break; |
| 529 | default: | 529 | default: |
| 530 | for (i = 0; i < argCount; ++i) { | 530 | for (i = 0; i < argCount; ++i) { |
| 531 | switch(code) { | 531 | switch(code) { |
| 532 | #define EVENT_CASE(X, name, code, always, kind, format) \ | 532 | #define EVENT_CASE(X, name, code, always, kind, count, format) \ |
| 533 | case code: { \ | 533 | case code: { \ |
| 534 | printArg(proc, EVENT_##format##_FIELD_PTR(event, i), \ | 534 | printArg(proc, EVENT##count##_FIELD_PTR(name, event, i), \ |
| 535 | eventFormat[i], styleConv); \ | 535 | eventFormat[i], styleConv); \ |
| 536 | } break; | 536 | } break; |
| 537 | EVENT_LIST(EVENT_CASE, X) | 537 | EVENT_LIST(EVENT_CASE, X) |
diff --git a/mps/code/eventdef.h b/mps/code/eventdef.h index a9903e5dbea..266f6550dad 100644 --- a/mps/code/eventdef.h +++ b/mps/code/eventdef.h | |||
| @@ -48,7 +48,8 @@ | |||
| 48 | * varieties, not currently used; | 48 | * varieties, not currently used; |
| 49 | * - Kind: Category into which this event falls, without the | 49 | * - Kind: Category into which this event falls, without the |
| 50 | * leading "EventKind"; | 50 | * leading "EventKind"; |
| 51 | * - Format: Character sequence indicating the format of the event | 51 | * - Parameter Count |
| 52 | * - Format: Tuple indicating the format of the event | ||
| 52 | * parameters, similar to writef (Pointer, Addr, Word, Unsigned, | 53 | * parameters, similar to writef (Pointer, Addr, Word, Unsigned, |
| 53 | * String, Double). | 54 | * String, Double). |
| 54 | */ | 55 | */ |
| @@ -56,103 +57,103 @@ | |||
| 56 | /* FIXME: Work out why not-in-use events were not in use and restore or delete them. */ | 57 | /* FIXME: Work out why not-in-use events were not in use and restore or delete them. */ |
| 57 | 58 | ||
| 58 | #define EVENT_LIST(EVENT, X) \ | 59 | #define EVENT_LIST(EVENT, X) \ |
| 59 | EVENT(X, AMCGenCreate , 0x0001, TRUE, Pool, PP) \ | 60 | EVENT(X, AMCGenCreate , 0x0001, TRUE, Pool, 2, (P,P)) \ |
| 60 | EVENT(X, AMCGenDestroy , 0x0002, TRUE, Pool, P) \ | 61 | EVENT(X, AMCGenDestroy , 0x0002, TRUE, Pool, 1, (P)) \ |
| 61 | EVENT(X, AMCInit , 0x0003, TRUE, Pool, PP) \ | 62 | EVENT(X, AMCInit , 0x0003, TRUE, Pool, 2, (P,P)) \ |
| 62 | EVENT(X, AMCFinish , 0x0004, TRUE, Pool, P) \ | 63 | EVENT(X, AMCFinish , 0x0004, TRUE, Pool, 1, (P)) \ |
| 63 | EVENT(X, ArenaCreateVM , 0x0005, TRUE, Arena, PWW) \ | 64 | EVENT(X, ArenaCreateVM , 0x0005, TRUE, Arena, 3, (P,W,W)) \ |
| 64 | EVENT(X, ArenaCreateVMNZ , 0x0006, TRUE, Arena, PWW) \ | 65 | EVENT(X, ArenaCreateVMNZ , 0x0006, TRUE, Arena, 3, (P,W,W)) \ |
| 65 | EVENT(X, ArenaWriteFaults , 0x0007, TRUE, Trace, PW) \ | 66 | EVENT(X, ArenaWriteFaults , 0x0007, TRUE, Trace, 2, (P,W)) \ |
| 66 | EVENT(X, MeterInit , 0x0008, TRUE, Pool, PP) \ | 67 | EVENT(X, MeterInit , 0x0008, TRUE, Pool, 2, (P,P)) \ |
| 67 | EVENT(X, MeterValues , 0x0009, TRUE, Pool, PDDWWW) \ | 68 | EVENT(X, MeterValues , 0x0009, TRUE, Pool, 6, (P,D,D,W,W,W)) \ |
| 68 | EVENT(X, AMCScanBegin , 0x000a, TRUE, Seg, PPP) \ | 69 | EVENT(X, AMCScanBegin , 0x000a, TRUE, Seg, 3, (P,P,P)) \ |
| 69 | EVENT(X, AMCScanEnd , 0x000b, TRUE, Seg, PPP) \ | 70 | EVENT(X, AMCScanEnd , 0x000b, TRUE, Seg, 3, (P,P,P)) \ |
| 70 | EVENT(X, AMCFix , 0x000c, TRUE, Ref, 0) \ | 71 | EVENT(X, AMCFix , 0x000c, TRUE, Ref, 0, ()) \ |
| 71 | EVENT(X, AMCFixInPlace , 0x000d, TRUE, Ref, 0) \ | 72 | EVENT(X, AMCFixInPlace , 0x000d, TRUE, Ref, 0, ()) \ |
| 72 | EVENT(X, AMCFixForward , 0x000e, TRUE, Ref, A) \ | 73 | EVENT(X, AMCFixForward , 0x000e, TRUE, Ref, 1, (A)) \ |
| 73 | EVENT(X, AMCReclaim , 0x000f, TRUE, Seg, PPP) \ | 74 | EVENT(X, AMCReclaim , 0x000f, TRUE, Seg, 3, (P,P,P)) \ |
| 74 | /* EVENT(X, AMCTraceEnd , 0x0010, TRUE, Trace, PPP) */ \ | 75 | /* EVENT(X, AMCTraceEnd , 0x0010, TRUE, Trace, 3, (P,P,P)) */ \ |
| 75 | EVENT(X, ArenaCreateCL , 0x0011, TRUE, Arena, PWA) \ | 76 | EVENT(X, ArenaCreateCL , 0x0011, TRUE, Arena, 3, (P,W,A)) \ |
| 76 | EVENT(X, ArenaDestroy , 0x0012, TRUE, Arena, P) \ | 77 | EVENT(X, ArenaDestroy , 0x0012, TRUE, Arena, 1, (P)) \ |
| 77 | EVENT(X, SegAlloc , 0x0013, TRUE, Seg, PPAWP) \ | 78 | EVENT(X, SegAlloc , 0x0013, TRUE, Seg, 5, (P,P,A,W,P)) \ |
| 78 | EVENT(X, SegFree , 0x0014, TRUE, Seg, PP) \ | 79 | EVENT(X, SegFree , 0x0014, TRUE, Seg, 2, (P,P)) \ |
| 79 | EVENT(X, PoolInit , 0x0015, TRUE, Pool, PPP) \ | 80 | EVENT(X, PoolInit , 0x0015, TRUE, Pool, 3, (P,P,P)) \ |
| 80 | EVENT(X, PoolFinish , 0x0016, TRUE, Pool, P) \ | 81 | EVENT(X, PoolFinish , 0x0016, TRUE, Pool, 1, (P)) \ |
| 81 | EVENT(X, PoolAlloc , 0x0017, TRUE, Object, PAW) \ | 82 | EVENT(X, PoolAlloc , 0x0017, TRUE, Object, 3, (P,A,W)) \ |
| 82 | EVENT(X, PoolFree , 0x0018, TRUE, Object, PAW) \ | 83 | EVENT(X, PoolFree , 0x0018, TRUE, Object, 3, (P,A,W)) \ |
| 83 | EVENT(X, CBSInit , 0x0019, TRUE, Pool, PP) \ | 84 | EVENT(X, CBSInit , 0x0019, TRUE, Pool, 2, (P,P)) \ |
| 84 | EVENT(X, Intern , 0x001a, TRUE, User, WS) \ | 85 | EVENT(X, Intern , 0x001a, TRUE, User, 2, (W,S)) \ |
| 85 | EVENT(X, Label , 0x001b, TRUE, User, AW) \ | 86 | EVENT(X, Label , 0x001b, TRUE, User, 2, (A,W)) \ |
| 86 | EVENT(X, TraceStart , 0x001c, TRUE, Trace, PPP) \ | 87 | EVENT(X, TraceStart , 0x001c, TRUE, Trace, 3, (P,P,P)) \ |
| 87 | EVENT(X, TraceCreate , 0x001d, TRUE, Trace, PPPU) \ | 88 | EVENT(X, TraceCreate , 0x001d, TRUE, Trace, 4, (P,P,P,U)) \ |
| 88 | EVENT(X, TraceDestroy , 0x001e, TRUE, Trace, P) \ | 89 | EVENT(X, TraceDestroy , 0x001e, TRUE, Trace, 1, (P)) \ |
| 89 | EVENT(X, SegSetGrey , 0x001f, TRUE, Seg, PPU) \ | 90 | EVENT(X, SegSetGrey , 0x001f, TRUE, Seg, 3, (P,P,U)) \ |
| 90 | EVENT(X, TraceFlipBegin , 0x0020, TRUE, Trace, PP) \ | 91 | EVENT(X, TraceFlipBegin , 0x0020, TRUE, Trace, 2, (P,P)) \ |
| 91 | EVENT(X, TraceFlipEnd , 0x0021, TRUE, Trace, PP) \ | 92 | EVENT(X, TraceFlipEnd , 0x0021, TRUE, Trace, 2, (P,P)) \ |
| 92 | EVENT(X, TraceReclaim , 0x0022, TRUE, Seg, P) \ | 93 | EVENT(X, TraceReclaim , 0x0022, TRUE, Seg, 1, (P)) \ |
| 93 | /* EVENT(X, TraceScan , 0x0023, TRUE, Seg, UUPPP) */ \ | 94 | /* EVENT(X, TraceScan , 0x0023, TRUE, Seg, 5, (U,U,P,P,P)) */ \ |
| 94 | EVENT(X, TraceAccess , 0x0024, TRUE, Seg, PPU) \ | 95 | 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 */ \ | 96 | /* TracePoll's kind isn't really Trace, but then it isn't Seg either */ \ |
| 96 | EVENT(X, TracePoll , 0x0025, TRUE, Trace, PP) \ | 97 | EVENT(X, TracePoll , 0x0025, TRUE, Trace, 2, (P,P)) \ |
| 97 | EVENT(X, TraceFix , 0x0026, TRUE, Ref, PPAU) \ | 98 | EVENT(X, TraceFix , 0x0026, TRUE, Ref, 4, (P,P,A,U)) \ |
| 98 | EVENT(X, TraceFixSeg , 0x0027, TRUE, Ref, P) \ | 99 | EVENT(X, TraceFixSeg , 0x0027, TRUE, Ref, 1, (P)) \ |
| 99 | EVENT(X, TraceFixWhite , 0x0028, TRUE, Ref, 0) \ | 100 | EVENT(X, TraceFixWhite , 0x0028, TRUE, Ref, 0, ()) \ |
| 100 | /* TraceScanArea{Tagged} abuses kind, see .kind.abuse */ \ | 101 | /* TraceScanArea{Tagged} abuses kind, see .kind.abuse */ \ |
| 101 | EVENT(X, TraceScanArea , 0x0029, TRUE, Seg, PPP) \ | 102 | EVENT(X, TraceScanArea , 0x0029, TRUE, Seg, 3, (P,P,P)) \ |
| 102 | EVENT(X, TraceScanAreaTagged , 0x002a, TRUE, Seg, PPP) \ | 103 | EVENT(X, TraceScanAreaTagged , 0x002a, TRUE, Seg, 3, (P,P,P)) \ |
| 103 | EVENT(X, VMCreate , 0x002b, TRUE, Arena, PAA) \ | 104 | EVENT(X, VMCreate , 0x002b, TRUE, Arena, 3, (P,A,A)) \ |
| 104 | EVENT(X, VMDestroy , 0x002c, TRUE, Arena, P) \ | 105 | EVENT(X, VMDestroy , 0x002c, TRUE, Arena, 1, (P)) \ |
| 105 | EVENT(X, VMMap , 0x002d, TRUE, Seg, PAA) \ | 106 | EVENT(X, VMMap , 0x002d, TRUE, Seg, 3, (P,A,A)) \ |
| 106 | EVENT(X, VMUnmap , 0x002e, TRUE, Seg, PAA) \ | 107 | EVENT(X, VMUnmap , 0x002e, TRUE, Seg, 3, (P,A,A)) \ |
| 107 | EVENT(X, ArenaExtend , 0x002f, TRUE, Arena, PAW) \ | 108 | EVENT(X, ArenaExtend , 0x002f, TRUE, Arena, 3, (P,A,W)) \ |
| 108 | EVENT(X, ArenaRetract , 0x0030, TRUE, Arena, PAW) \ | 109 | EVENT(X, ArenaRetract , 0x0030, TRUE, Arena, 3, (P,A,W)) \ |
| 109 | EVENT(X, TraceSegGreyen , 0x0031, TRUE, Seg, PPU) \ | 110 | EVENT(X, TraceSegGreyen , 0x0031, TRUE, Seg, 3, (P,P,U)) \ |
| 110 | /* RootScanned abuses kind, see .kind.abuse */ \ | 111 | /* RootScanned abuses kind, see .kind.abuse */ \ |
| 111 | EVENT(X, RootScan , 0x0032, TRUE, Seg, PWW) \ | 112 | EVENT(X, RootScan , 0x0032, TRUE, Seg, 3, (P,W,W)) \ |
| 112 | /* TraceStep abuses kind, see .kind.abuse */ \ | 113 | /* TraceStep abuses kind, see .kind.abuse */ \ |
| 113 | EVENT(X, TraceStep , 0x0033, TRUE, Seg, PP) \ | 114 | EVENT(X, TraceStep , 0x0033, TRUE, Seg, 2, (P,P)) \ |
| 114 | EVENT(X, BufferReserve , 0x0034, TRUE, Object, PAW) \ | 115 | EVENT(X, BufferReserve , 0x0034, TRUE, Object, 3, (P,A,W)) \ |
| 115 | EVENT(X, BufferCommit , 0x0035, TRUE, Object, PAWA) \ | 116 | EVENT(X, BufferCommit , 0x0035, TRUE, Object, 4, (P,A,W,A)) \ |
| 116 | /* BufferInit/Finish abuse kind, see .kind.abuse */ \ | 117 | /* BufferInit/Finish abuse kind, see .kind.abuse */ \ |
| 117 | EVENT(X, BufferInit , 0x0036, TRUE, Pool, PPU) \ | 118 | EVENT(X, BufferInit , 0x0036, TRUE, Pool, 3, (P,P,U)) \ |
| 118 | EVENT(X, BufferFinish , 0x0037, TRUE, Pool, P) \ | 119 | EVENT(X, BufferFinish , 0x0037, TRUE, Pool, 1, (P)) \ |
| 119 | /* EVENT(X, MVTFinish , 0x0038, TRUE, Pool, P) */ \ | 120 | /* EVENT(X, MVTFinish , 0x0038, TRUE, Pool, 1, (P)) */ \ |
| 120 | EVENT(X, BufferFill , 0x0039, TRUE, Seg, PWAW) \ | 121 | EVENT(X, BufferFill , 0x0039, TRUE, Seg, 4, (P,W,A,W)) \ |
| 121 | EVENT(X, BufferEmpty , 0x003A, TRUE, Seg, PW) \ | 122 | EVENT(X, BufferEmpty , 0x003A, TRUE, Seg, 2, (P,W)) \ |
| 122 | EVENT(X, SegAllocFail , 0x003B, TRUE, Seg, PWP) \ | 123 | EVENT(X, SegAllocFail , 0x003B, TRUE, Seg, 3, (P,W,P)) \ |
| 123 | EVENT(X, TraceScanSeg , 0x003C, TRUE, Seg, UUPP) \ | 124 | EVENT(X, TraceScanSeg , 0x003C, TRUE, Seg, 4, (U,U,P,P)) \ |
| 124 | /* TraceScanSingleRef abuses kind, see .kind.abuse */ \ | 125 | /* TraceScanSingleRef abuses kind, see .kind.abuse */ \ |
| 125 | EVENT(X, TraceScanSingleRef , 0x003D, TRUE, Seg, UUPA) \ | 126 | EVENT(X, TraceScanSingleRef , 0x003D, TRUE, Seg, 4, (U,U,P,A)) \ |
| 126 | EVENT(X, TraceStatCondemn , 0x003E, TRUE, Trace, PWWWWDD) \ | 127 | EVENT(X, TraceStatCondemn , 0x003E, TRUE, Trace, 7, (P,W,W,W,W,D,D)) \ |
| 127 | EVENT(X, TraceStatScan , 0x003F, TRUE, Trace, PWWWWWWWWWWWW) \ | 128 | EVENT(X, TraceStatScan , 0x003F, TRUE, Trace, 13, (P,W,W,W,W,W,W,W,W,W,W,W,W)) \ |
| 128 | EVENT(X, TraceStatFix , 0x0040, TRUE, Trace, PWWWWWWWWW) \ | 129 | EVENT(X, TraceStatFix , 0x0040, TRUE, Trace, 10, (P,W,W,W,W,W,W,W,W,W)) \ |
| 129 | EVENT(X, TraceStatReclaim , 0x0041, TRUE, Trace, PWW) \ | 130 | EVENT(X, TraceStatReclaim , 0x0041, TRUE, Trace, 3, (P,W,W)) \ |
| 130 | EVENT(X, PoolInitMVFF , 0x0042, TRUE, Pool, PPWWWUUU) \ | 131 | EVENT(X, PoolInitMVFF , 0x0042, TRUE, Pool, 8, (P,P,W,W,W,U,U,U)) \ |
| 131 | EVENT(X, PoolInitMV , 0x0043, TRUE, Pool, PPWWW) \ | 132 | EVENT(X, PoolInitMV , 0x0043, TRUE, Pool, 5, (P,P,W,W,W)) \ |
| 132 | EVENT(X, PoolInitMFS , 0x0044, TRUE, Pool, PPWW) \ | 133 | EVENT(X, PoolInitMFS , 0x0044, TRUE, Pool, 4, (P,P,W,W)) \ |
| 133 | EVENT(X, PoolInitEPVM , 0x0045, TRUE, Pool, PPPUU) \ | 134 | EVENT(X, PoolInitEPVM , 0x0045, TRUE, Pool, 5, (P,P,P,U,U)) \ |
| 134 | EVENT(X, PoolInitEPDL , 0x0046, TRUE, Pool, PPUWWW) \ | 135 | EVENT(X, PoolInitEPDL , 0x0046, TRUE, Pool, 6, (P,P,U,W,W,W)) \ |
| 135 | EVENT(X, PoolInitAMS , 0x0047, TRUE, Pool, PPP) \ | 136 | EVENT(X, PoolInitAMS , 0x0047, TRUE, Pool, 3, (P,P,P)) \ |
| 136 | EVENT(X, PoolInitAMC , 0x0048, TRUE, Pool, PP) \ | 137 | EVENT(X, PoolInitAMC , 0x0048, TRUE, Pool, 2, (P,P)) \ |
| 137 | EVENT(X, PoolInitAMCZ , 0x0049, TRUE, Pool, PP) \ | 138 | EVENT(X, PoolInitAMCZ , 0x0049, TRUE, Pool, 2, (P,P)) \ |
| 138 | EVENT(X, PoolInitAWL , 0x004A, TRUE, Pool, PP) \ | 139 | EVENT(X, PoolInitAWL , 0x004A, TRUE, Pool, 2, (P,P)) \ |
| 139 | EVENT(X, PoolInitLO , 0x004B, TRUE, Pool, PP) \ | 140 | EVENT(X, PoolInitLO , 0x004B, TRUE, Pool, 2, (P,P)) \ |
| 140 | EVENT(X, PoolInitSNC , 0x004C, TRUE, Pool, PP) \ | 141 | EVENT(X, PoolInitSNC , 0x004C, TRUE, Pool, 2, (P,P)) \ |
| 141 | EVENT(X, PoolInitMVT , 0x004D, TRUE, Pool, PWWWWW) \ | 142 | EVENT(X, PoolInitMVT , 0x004D, TRUE, Pool, 6, (P,W,W,W,W,W)) \ |
| 142 | EVENT(X, BufferInitEPVM , 0x0050, TRUE, Pool, PPU) \ | 143 | EVENT(X, BufferInitEPVM , 0x0050, TRUE, Pool, 3, (P,P,U)) \ |
| 143 | EVENT(X, BufferInitSeg , 0x0051, TRUE, Pool, PPU) \ | 144 | EVENT(X, BufferInitSeg , 0x0051, TRUE, Pool, 3, (P,P,U)) \ |
| 144 | EVENT(X, BufferInitRank , 0x0052, TRUE, Pool, PPUU) \ | 145 | EVENT(X, BufferInitRank , 0x0052, TRUE, Pool, 4, (P,P,U,U)) \ |
| 145 | /* PoolPush/Pop go under Object, because they're user ops. */ \ | 146 | /* PoolPush/Pop go under Object, because they're user ops. */ \ |
| 146 | EVENT(X, PoolPush , 0x0060, TRUE, Object, P) \ | 147 | EVENT(X, PoolPush , 0x0060, TRUE, Object, 1, (P)) \ |
| 147 | EVENT(X, PoolPop , 0x0061, TRUE, Object, PU) \ | 148 | EVENT(X, PoolPop , 0x0061, TRUE, Object, 2, (P,U)) \ |
| 148 | EVENT(X, ReservoirLimitSet , 0x0062, TRUE, Arena, PW) \ | 149 | EVENT(X, ReservoirLimitSet , 0x0062, TRUE, Arena, 2, (P,W)) \ |
| 149 | EVENT(X, CommitLimitSet , 0x0063, TRUE, Arena, PWU) \ | 150 | EVENT(X, CommitLimitSet , 0x0063, TRUE, Arena, 3, (P,W,U)) \ |
| 150 | EVENT(X, SpareCommitLimitSet , 0x0064, TRUE, Arena, PW) \ | 151 | EVENT(X, SpareCommitLimitSet , 0x0064, TRUE, Arena, 2, (P,W)) \ |
| 151 | EVENT(X, ArenaAlloc , 0x0065, TRUE, Arena, PPAWP) \ | 152 | EVENT(X, ArenaAlloc , 0x0065, TRUE, Arena, 5, (P,P,A,W,P)) \ |
| 152 | EVENT(X, ArenaFree , 0x0066, TRUE, Arena, PAW) \ | 153 | EVENT(X, ArenaFree , 0x0066, TRUE, Arena, 3, (P,A,W)) \ |
| 153 | EVENT(X, ArenaAllocFail , 0x0067, TRUE, Arena, PWP) \ | 154 | EVENT(X, ArenaAllocFail , 0x0067, TRUE, Arena, 3, (P,W,P)) \ |
| 154 | EVENT(X, SegMerge , 0x0068, TRUE, Seg, PPP) \ | 155 | EVENT(X, SegMerge , 0x0068, TRUE, Seg, 3, (P,P,P)) \ |
| 155 | EVENT(X, SegSplit , 0x0069, TRUE, Seg, PPPA) | 156 | EVENT(X, SegSplit , 0x0069, TRUE, Seg, 4, (P,P,P,A)) |
| 156 | 157 | ||
| 157 | /* Remember to update EventNameMAX and EventCodeMAX in eventcom.h! */ | 158 | /* Remember to update EventNameMAX and EventCodeMAX in eventcom.h! */ |
| 158 | 159 | ||
diff --git a/mps/code/eventgen.h b/mps/code/eventgen.h index 354673cde13..a3e95f1a23e 100644 --- a/mps/code/eventgen.h +++ b/mps/code/eventgen.h | |||
| @@ -9,1002 +9,842 @@ | |||
| 9 | 9 | ||
| 10 | #ifdef EVENT | 10 | #ifdef EVENT |
| 11 | 11 | ||
| 12 | typedef struct { | 12 | #include "eventdef.h" |
| 13 | Word code; | ||
| 14 | Word clock; | ||
| 15 | } Event0Struct; | ||
| 16 | 13 | ||
| 17 | #define EVENT_0_FIELD_PTR(event, i) \ | 14 | typedef void *EventFP; |
| 18 | (NULL) | 15 | typedef Addr EventFA; |
| 16 | typedef Word EventFW; | ||
| 17 | typedef unsigned EventFU; | ||
| 18 | typedef EventStringStruct EventFS; | ||
| 19 | typedef double EventFD; | ||
| 19 | 20 | ||
| 20 | typedef struct { | 21 | typedef struct EventAnyStruct { |
| 21 | Word code; | 22 | Word code; |
| 22 | Word clock; | 23 | Word clock; |
| 23 | Addr a0; | 24 | } EventAnyStruct; |
| 24 | } EventAStruct; | ||
| 25 | |||
| 26 | #define EVENT_A_FIELD_PTR(event, i) \ | ||
| 27 | (((i) == 0) ? (void *)&((event)->a.a0) \ | ||
| 28 | : NULL) | ||
| 29 | 25 | ||
| 30 | typedef struct { | 26 | #define EVENT_STRUCT(X, name, _code, always, kind, count, format) \ |
| 31 | Word code; | 27 | typedef struct Event##name##Struct { \ |
| 32 | Word clock; | 28 | Word code; \ |
| 33 | Addr a0; | 29 | Word clock; \ |
| 34 | Word w1; | 30 | EVENT_STRUCT_FIELDS_##count format \ |
| 35 | } EventAWStruct; | 31 | } Event##name##Struct; |
| 36 | 32 | ||
| 37 | #define EVENT_AW_FIELD_PTR(event, i) \ | 33 | #define EVENT_STRUCT_FIELDS_0() |
| 38 | (((i) == 0) ? (void *)&((event)->aw.a0) \ | ||
| 39 | : ((i) == 1) ? (void *)&((event)->aw.w1) \ | ||
| 40 | : NULL) | ||
| 41 | 34 | ||
| 42 | typedef struct { | 35 | /* |
| 43 | Word code; | 36 | for i in range(0, 20): print "#define EVENT_STRUCT_FIELDS_%d(%s) \\\n%s\n" % (i, ", ".join(["p%s" % j for j in range(0, i)]), " \\\n".join(" EventF##p%d f%d;" % (j, j) for j in range(0,i))) |
| 44 | Word clock; | 37 | */ |
| 45 | void * p0; | ||
| 46 | } EventPStruct; | ||
| 47 | |||
| 48 | #define EVENT_P_FIELD_PTR(event, i) \ | ||
| 49 | (((i) == 0) ? (void *)&((event)->p.p0) \ | ||
| 50 | : NULL) | ||
| 51 | |||
| 52 | typedef struct { | ||
| 53 | Word code; | ||
| 54 | Word clock; | ||
| 55 | void * p0; | ||
| 56 | Addr a1; | ||
| 57 | Addr a2; | ||
| 58 | } EventPAAStruct; | ||
| 59 | |||
| 60 | #define EVENT_PAA_FIELD_PTR(event, i) \ | ||
| 61 | (((i) == 0) ? (void *)&((event)->paa.p0) \ | ||
| 62 | : ((i) == 1) ? (void *)&((event)->paa.a1) \ | ||
| 63 | : ((i) == 2) ? (void *)&((event)->paa.a2) \ | ||
| 64 | : NULL) | ||
| 65 | |||
| 66 | typedef struct { | ||
| 67 | Word code; | ||
| 68 | Word clock; | ||
| 69 | void * p0; | ||
| 70 | Addr a1; | ||
| 71 | Word w2; | ||
| 72 | } EventPAWStruct; | ||
| 73 | |||
| 74 | #define EVENT_PAW_FIELD_PTR(event, i) \ | ||
| 75 | (((i) == 0) ? (void *)&((event)->paw.p0) \ | ||
| 76 | : ((i) == 1) ? (void *)&((event)->paw.a1) \ | ||
| 77 | : ((i) == 2) ? (void *)&((event)->paw.w2) \ | ||
| 78 | : NULL) | ||
| 79 | |||
| 80 | typedef struct { | ||
| 81 | Word code; | ||
| 82 | Word clock; | ||
| 83 | void * p0; | ||
| 84 | Addr a1; | ||
| 85 | Word w2; | ||
| 86 | Addr a3; | ||
| 87 | } EventPAWAStruct; | ||
| 88 | |||
| 89 | #define EVENT_PAWA_FIELD_PTR(event, i) \ | ||
| 90 | (((i) == 0) ? (void *)&((event)->pawa.p0) \ | ||
| 91 | : ((i) == 1) ? (void *)&((event)->pawa.a1) \ | ||
| 92 | : ((i) == 2) ? (void *)&((event)->pawa.w2) \ | ||
| 93 | : ((i) == 3) ? (void *)&((event)->pawa.a3) \ | ||
| 94 | : NULL) | ||
| 95 | |||
| 96 | typedef struct { | ||
| 97 | Word code; | ||
| 98 | Word clock; | ||
| 99 | void * p0; | ||
| 100 | double d1; | ||
| 101 | double d2; | ||
| 102 | Word w3; | ||
| 103 | Word w4; | ||
| 104 | Word w5; | ||
| 105 | } EventPDDWWWStruct; | ||
| 106 | |||
| 107 | #define EVENT_PDDWWW_FIELD_PTR(event, i) \ | ||
| 108 | (((i) == 0) ? (void *)&((event)->pddwww.p0) \ | ||
| 109 | : ((i) == 1) ? (void *)&((event)->pddwww.d1) \ | ||
| 110 | : ((i) == 2) ? (void *)&((event)->pddwww.d2) \ | ||
| 111 | : ((i) == 3) ? (void *)&((event)->pddwww.w3) \ | ||
| 112 | : ((i) == 4) ? (void *)&((event)->pddwww.w4) \ | ||
| 113 | : ((i) == 5) ? (void *)&((event)->pddwww.w5) \ | ||
| 114 | : NULL) | ||
| 115 | |||
| 116 | typedef struct { | ||
| 117 | Word code; | ||
| 118 | Word clock; | ||
| 119 | void * p0; | ||
| 120 | void * p1; | ||
| 121 | } EventPPStruct; | ||
| 122 | 38 | ||
| 123 | #define EVENT_PP_FIELD_PTR(event, i) \ | 39 | #define EVENT_STRUCT_FIELDS_1(p0) \ |
| 124 | (((i) == 0) ? (void *)&((event)->pp.p0) \ | 40 | EventF##p0 f0; |
| 125 | : ((i) == 1) ? (void *)&((event)->pp.p1) \ | 41 | |
| 126 | : NULL) | 42 | #define EVENT_STRUCT_FIELDS_2(p0, p1) \ |
| 43 | EventF##p0 f0; \ | ||
| 44 | EventF##p1 f1; | ||
| 45 | |||
| 46 | #define EVENT_STRUCT_FIELDS_3(p0, p1, p2) \ | ||
| 47 | EventF##p0 f0; \ | ||
| 48 | EventF##p1 f1; \ | ||
| 49 | EventF##p2 f2; | ||
| 50 | |||
| 51 | #define EVENT_STRUCT_FIELDS_4(p0, p1, p2, p3) \ | ||
| 52 | EventF##p0 f0; \ | ||
| 53 | EventF##p1 f1; \ | ||
| 54 | EventF##p2 f2; \ | ||
| 55 | EventF##p3 f3; | ||
| 56 | |||
| 57 | #define EVENT_STRUCT_FIELDS_5(p0, p1, p2, p3, p4) \ | ||
| 58 | EventF##p0 f0; \ | ||
| 59 | EventF##p1 f1; \ | ||
| 60 | EventF##p2 f2; \ | ||
| 61 | EventF##p3 f3; \ | ||
| 62 | EventF##p4 f4; | ||
| 63 | |||
| 64 | #define EVENT_STRUCT_FIELDS_6(p0, p1, p2, p3, p4, p5) \ | ||
| 65 | EventF##p0 f0; \ | ||
| 66 | EventF##p1 f1; \ | ||
| 67 | EventF##p2 f2; \ | ||
| 68 | EventF##p3 f3; \ | ||
| 69 | EventF##p4 f4; \ | ||
| 70 | EventF##p5 f5; | ||
| 71 | |||
| 72 | #define EVENT_STRUCT_FIELDS_7(p0, p1, p2, p3, p4, p5, p6) \ | ||
| 73 | EventF##p0 f0; \ | ||
| 74 | EventF##p1 f1; \ | ||
| 75 | EventF##p2 f2; \ | ||
| 76 | EventF##p3 f3; \ | ||
| 77 | EventF##p4 f4; \ | ||
| 78 | EventF##p5 f5; \ | ||
| 79 | EventF##p6 f6; | ||
| 80 | |||
| 81 | #define EVENT_STRUCT_FIELDS_8(p0, p1, p2, p3, p4, p5, p6, p7) \ | ||
| 82 | EventF##p0 f0; \ | ||
| 83 | EventF##p1 f1; \ | ||
| 84 | EventF##p2 f2; \ | ||
| 85 | EventF##p3 f3; \ | ||
| 86 | EventF##p4 f4; \ | ||
| 87 | EventF##p5 f5; \ | ||
| 88 | EventF##p6 f6; \ | ||
| 89 | EventF##p7 f7; | ||
| 90 | |||
| 91 | #define EVENT_STRUCT_FIELDS_9(p0, p1, p2, p3, p4, p5, p6, p7, p8) \ | ||
| 92 | EventF##p0 f0; \ | ||
| 93 | EventF##p1 f1; \ | ||
| 94 | EventF##p2 f2; \ | ||
| 95 | EventF##p3 f3; \ | ||
| 96 | EventF##p4 f4; \ | ||
| 97 | EventF##p5 f5; \ | ||
| 98 | EventF##p6 f6; \ | ||
| 99 | EventF##p7 f7; \ | ||
| 100 | EventF##p8 f8; | ||
| 101 | |||
| 102 | #define EVENT_STRUCT_FIELDS_10(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) \ | ||
| 103 | EventF##p0 f0; \ | ||
| 104 | EventF##p1 f1; \ | ||
| 105 | EventF##p2 f2; \ | ||
| 106 | EventF##p3 f3; \ | ||
| 107 | EventF##p4 f4; \ | ||
| 108 | EventF##p5 f5; \ | ||
| 109 | EventF##p6 f6; \ | ||
| 110 | EventF##p7 f7; \ | ||
| 111 | EventF##p8 f8; \ | ||
| 112 | EventF##p9 f9; | ||
| 113 | |||
| 114 | #define EVENT_STRUCT_FIELDS_11(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) \ | ||
| 115 | EventF##p0 f0; \ | ||
| 116 | EventF##p1 f1; \ | ||
| 117 | EventF##p2 f2; \ | ||
| 118 | EventF##p3 f3; \ | ||
| 119 | EventF##p4 f4; \ | ||
| 120 | EventF##p5 f5; \ | ||
| 121 | EventF##p6 f6; \ | ||
| 122 | EventF##p7 f7; \ | ||
| 123 | EventF##p8 f8; \ | ||
| 124 | EventF##p9 f9; \ | ||
| 125 | EventF##p10 f10; | ||
| 126 | |||
| 127 | #define EVENT_STRUCT_FIELDS_12(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) \ | ||
| 128 | EventF##p0 f0; \ | ||
| 129 | EventF##p1 f1; \ | ||
| 130 | EventF##p2 f2; \ | ||
| 131 | EventF##p3 f3; \ | ||
| 132 | EventF##p4 f4; \ | ||
| 133 | EventF##p5 f5; \ | ||
| 134 | EventF##p6 f6; \ | ||
| 135 | EventF##p7 f7; \ | ||
| 136 | EventF##p8 f8; \ | ||
| 137 | EventF##p9 f9; \ | ||
| 138 | EventF##p10 f10; \ | ||
| 139 | EventF##p11 f11; | ||
| 140 | |||
| 141 | #define EVENT_STRUCT_FIELDS_13(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) \ | ||
| 142 | EventF##p0 f0; \ | ||
| 143 | EventF##p1 f1; \ | ||
| 144 | EventF##p2 f2; \ | ||
| 145 | EventF##p3 f3; \ | ||
| 146 | EventF##p4 f4; \ | ||
| 147 | EventF##p5 f5; \ | ||
| 148 | EventF##p6 f6; \ | ||
| 149 | EventF##p7 f7; \ | ||
| 150 | EventF##p8 f8; \ | ||
| 151 | EventF##p9 f9; \ | ||
| 152 | EventF##p10 f10; \ | ||
| 153 | EventF##p11 f11; \ | ||
| 154 | EventF##p12 f12; | ||
| 155 | |||
| 156 | #define EVENT_STRUCT_FIELDS_14(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) \ | ||
| 157 | EventF##p0 f0; \ | ||
| 158 | EventF##p1 f1; \ | ||
| 159 | EventF##p2 f2; \ | ||
| 160 | EventF##p3 f3; \ | ||
| 161 | EventF##p4 f4; \ | ||
| 162 | EventF##p5 f5; \ | ||
| 163 | EventF##p6 f6; \ | ||
| 164 | EventF##p7 f7; \ | ||
| 165 | EventF##p8 f8; \ | ||
| 166 | EventF##p9 f9; \ | ||
| 167 | EventF##p10 f10; \ | ||
| 168 | EventF##p11 f11; \ | ||
| 169 | EventF##p12 f12; \ | ||
| 170 | EventF##p13 f13; | ||
| 171 | |||
| 172 | #define EVENT_STRUCT_FIELDS_15(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) \ | ||
| 173 | EventF##p0 f0; \ | ||
| 174 | EventF##p1 f1; \ | ||
| 175 | EventF##p2 f2; \ | ||
| 176 | EventF##p3 f3; \ | ||
| 177 | EventF##p4 f4; \ | ||
| 178 | EventF##p5 f5; \ | ||
| 179 | EventF##p6 f6; \ | ||
| 180 | EventF##p7 f7; \ | ||
| 181 | EventF##p8 f8; \ | ||
| 182 | EventF##p9 f9; \ | ||
| 183 | EventF##p10 f10; \ | ||
| 184 | EventF##p11 f11; \ | ||
| 185 | EventF##p12 f12; \ | ||
| 186 | EventF##p13 f13; \ | ||
| 187 | EventF##p14 f14; | ||
| 188 | |||
| 189 | #define EVENT_STRUCT_FIELDS_16(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) \ | ||
| 190 | EventF##p0 f0; \ | ||
| 191 | EventF##p1 f1; \ | ||
| 192 | EventF##p2 f2; \ | ||
| 193 | EventF##p3 f3; \ | ||
| 194 | EventF##p4 f4; \ | ||
| 195 | EventF##p5 f5; \ | ||
| 196 | EventF##p6 f6; \ | ||
| 197 | EventF##p7 f7; \ | ||
| 198 | EventF##p8 f8; \ | ||
| 199 | EventF##p9 f9; \ | ||
| 200 | EventF##p10 f10; \ | ||
| 201 | EventF##p11 f11; \ | ||
| 202 | EventF##p12 f12; \ | ||
| 203 | EventF##p13 f13; \ | ||
| 204 | EventF##p14 f14; \ | ||
| 205 | EventF##p15 f15; | ||
| 206 | |||
| 207 | #define EVENT_STRUCT_FIELDS_17(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) \ | ||
| 208 | EventF##p0 f0; \ | ||
| 209 | EventF##p1 f1; \ | ||
| 210 | EventF##p2 f2; \ | ||
| 211 | EventF##p3 f3; \ | ||
| 212 | EventF##p4 f4; \ | ||
| 213 | EventF##p5 f5; \ | ||
| 214 | EventF##p6 f6; \ | ||
| 215 | EventF##p7 f7; \ | ||
| 216 | EventF##p8 f8; \ | ||
| 217 | EventF##p9 f9; \ | ||
| 218 | EventF##p10 f10; \ | ||
| 219 | EventF##p11 f11; \ | ||
| 220 | EventF##p12 f12; \ | ||
| 221 | EventF##p13 f13; \ | ||
| 222 | EventF##p14 f14; \ | ||
| 223 | EventF##p15 f15; \ | ||
| 224 | EventF##p16 f16; | ||
| 225 | |||
| 226 | #define EVENT_STRUCT_FIELDS_18(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17) \ | ||
| 227 | EventF##p0 f0; \ | ||
| 228 | EventF##p1 f1; \ | ||
| 229 | EventF##p2 f2; \ | ||
| 230 | EventF##p3 f3; \ | ||
| 231 | EventF##p4 f4; \ | ||
| 232 | EventF##p5 f5; \ | ||
| 233 | EventF##p6 f6; \ | ||
| 234 | EventF##p7 f7; \ | ||
| 235 | EventF##p8 f8; \ | ||
| 236 | EventF##p9 f9; \ | ||
| 237 | EventF##p10 f10; \ | ||
| 238 | EventF##p11 f11; \ | ||
| 239 | EventF##p12 f12; \ | ||
| 240 | EventF##p13 f13; \ | ||
| 241 | EventF##p14 f14; \ | ||
| 242 | EventF##p15 f15; \ | ||
| 243 | EventF##p16 f16; \ | ||
| 244 | EventF##p17 f17; | ||
| 245 | |||
| 246 | #define EVENT_STRUCT_FIELDS_19(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) \ | ||
| 247 | EventF##p0 f0; \ | ||
| 248 | EventF##p1 f1; \ | ||
| 249 | EventF##p2 f2; \ | ||
| 250 | EventF##p3 f3; \ | ||
| 251 | EventF##p4 f4; \ | ||
| 252 | EventF##p5 f5; \ | ||
| 253 | EventF##p6 f6; \ | ||
| 254 | EventF##p7 f7; \ | ||
| 255 | EventF##p8 f8; \ | ||
| 256 | EventF##p9 f9; \ | ||
| 257 | EventF##p10 f10; \ | ||
| 258 | EventF##p11 f11; \ | ||
| 259 | EventF##p12 f12; \ | ||
| 260 | EventF##p13 f13; \ | ||
| 261 | EventF##p14 f14; \ | ||
| 262 | EventF##p15 f15; \ | ||
| 263 | EventF##p16 f16; \ | ||
| 264 | EventF##p17 f17; \ | ||
| 265 | EventF##p18 f18; | ||
| 266 | |||
| 267 | EVENT_LIST(EVENT_STRUCT, X) | ||
| 268 | |||
| 269 | |||
| 270 | #define EVENT_UNION_MEMBER(X, name, code, always, kind, count, format) \ | ||
| 271 | Event##name##Struct name; | ||
| 272 | |||
| 273 | typedef union EventUnion { | ||
| 274 | EventAnyStruct any; | ||
| 275 | EVENT_LIST(EVENT_UNION_MEMBER, X) | ||
| 276 | } EventUnion, *Event; | ||
| 277 | |||
| 278 | |||
| 279 | #define EVENT2S(name, p0, length, string) \ | ||
| 280 | BEGIN \ | ||
| 281 | size_t _string_len = (length); \ | ||
| 282 | size_t size; \ | ||
| 283 | AVER(_string_len < EventStringLengthMAX); \ | ||
| 284 | size = offsetof(Event##name##Struct, f1.str) + _string_len; \ | ||
| 285 | EVENT_BEGIN(name, size) \ | ||
| 286 | _event->f0 = (p0); \ | ||
| 287 | _event->f1.len = _string_len; \ | ||
| 288 | mps_lib_memcpy(_event->f1.str, (string), _string_len); \ | ||
| 289 | EVENT_END(name, size); \ | ||
| 290 | END | ||
| 291 | |||
| 292 | #define EVENT0(name) \ | ||
| 293 | EVENT_BEGIN(name, 0) \ | ||
| 294 | EVENT_END(name, 0) | ||
| 295 | |||
| 296 | /* | ||
| 297 | for i in range(1,20): print "#define EVENT%d(name, %s) \\\n EVENT_BEGIN(name, sizeof(Event##name##Struct)) \\\n%s \\\n EVENT_END(name, sizeof(Event##name##Struct))\n" % (i, ", ".join(["p%d" % j for j in range(0, i)]), " \\\n".join([" _event->f%d = (p%d);" % (j, j) for j in range(0, i)])) | ||
| 298 | */ | ||
| 127 | 299 | ||
| 128 | typedef struct { | 300 | #define EVENT1(name, p0) \ |
| 129 | Word code; | 301 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 130 | Word clock; | 302 | _event->f0 = (p0); \ |
| 131 | void * p0; | 303 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 132 | void * p1; | 304 | |
| 133 | Addr a2; | 305 | #define EVENT2(name, p0, p1) \ |
| 134 | unsigned u3; | 306 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 135 | } EventPPAUStruct; | 307 | _event->f0 = (p0); \ |
| 136 | 308 | _event->f1 = (p1); \ | |
| 137 | #define EVENT_PPAU_FIELD_PTR(event, i) \ | 309 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 138 | (((i) == 0) ? (void *)&((event)->ppau.p0) \ | 310 | |
| 139 | : ((i) == 1) ? (void *)&((event)->ppau.p1) \ | 311 | #define EVENT3(name, p0, p1, p2) \ |
| 140 | : ((i) == 2) ? (void *)&((event)->ppau.a2) \ | 312 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 141 | : ((i) == 3) ? (void *)&((event)->ppau.u3) \ | 313 | _event->f0 = (p0); \ |
| 142 | : NULL) | 314 | _event->f1 = (p1); \ |
| 143 | 315 | _event->f2 = (p2); \ | |
| 144 | typedef struct { | 316 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 145 | Word code; | 317 | |
| 146 | Word clock; | 318 | #define EVENT4(name, p0, p1, p2, p3) \ |
| 147 | void * p0; | 319 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 148 | void * p1; | 320 | _event->f0 = (p0); \ |
| 149 | Addr a2; | 321 | _event->f1 = (p1); \ |
| 150 | Word w3; | 322 | _event->f2 = (p2); \ |
| 151 | void * p4; | 323 | _event->f3 = (p3); \ |
| 152 | } EventPPAWPStruct; | 324 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 153 | 325 | ||
| 154 | #define EVENT_PPAWP_FIELD_PTR(event, i) \ | 326 | #define EVENT5(name, p0, p1, p2, p3, p4) \ |
| 155 | (((i) == 0) ? (void *)&((event)->ppawp.p0) \ | 327 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 156 | : ((i) == 1) ? (void *)&((event)->ppawp.p1) \ | 328 | _event->f0 = (p0); \ |
| 157 | : ((i) == 2) ? (void *)&((event)->ppawp.a2) \ | 329 | _event->f1 = (p1); \ |
| 158 | : ((i) == 3) ? (void *)&((event)->ppawp.w3) \ | 330 | _event->f2 = (p2); \ |
| 159 | : ((i) == 4) ? (void *)&((event)->ppawp.p4) \ | 331 | _event->f3 = (p3); \ |
| 160 | : NULL) | 332 | _event->f4 = (p4); \ |
| 161 | 333 | EVENT_END(name, sizeof(Event##name##Struct)) | |
| 162 | typedef struct { | 334 | |
| 163 | Word code; | 335 | #define EVENT6(name, p0, p1, p2, p3, p4, p5) \ |
| 164 | Word clock; | 336 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 165 | void * p0; | 337 | _event->f0 = (p0); \ |
| 166 | void * p1; | 338 | _event->f1 = (p1); \ |
| 167 | void * p2; | 339 | _event->f2 = (p2); \ |
| 168 | } EventPPPStruct; | 340 | _event->f3 = (p3); \ |
| 169 | 341 | _event->f4 = (p4); \ | |
| 170 | #define EVENT_PPP_FIELD_PTR(event, i) \ | 342 | _event->f5 = (p5); \ |
| 171 | (((i) == 0) ? (void *)&((event)->ppp.p0) \ | 343 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 172 | : ((i) == 1) ? (void *)&((event)->ppp.p1) \ | 344 | |
| 173 | : ((i) == 2) ? (void *)&((event)->ppp.p2) \ | 345 | #define EVENT7(name, p0, p1, p2, p3, p4, p5, p6) \ |
| 174 | : NULL) | 346 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 175 | 347 | _event->f0 = (p0); \ | |
| 176 | typedef struct { | 348 | _event->f1 = (p1); \ |
| 177 | Word code; | 349 | _event->f2 = (p2); \ |
| 178 | Word clock; | 350 | _event->f3 = (p3); \ |
| 179 | void * p0; | 351 | _event->f4 = (p4); \ |
| 180 | void * p1; | 352 | _event->f5 = (p5); \ |
| 181 | void * p2; | 353 | _event->f6 = (p6); \ |
| 182 | Addr a3; | 354 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 183 | } EventPPPAStruct; | 355 | |
| 184 | 356 | #define EVENT8(name, p0, p1, p2, p3, p4, p5, p6, p7) \ | |
| 185 | #define EVENT_PPPA_FIELD_PTR(event, i) \ | 357 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 186 | (((i) == 0) ? (void *)&((event)->pppa.p0) \ | 358 | _event->f0 = (p0); \ |
| 187 | : ((i) == 1) ? (void *)&((event)->pppa.p1) \ | 359 | _event->f1 = (p1); \ |
| 188 | : ((i) == 2) ? (void *)&((event)->pppa.p2) \ | 360 | _event->f2 = (p2); \ |
| 189 | : ((i) == 3) ? (void *)&((event)->pppa.a3) \ | 361 | _event->f3 = (p3); \ |
| 190 | : NULL) | 362 | _event->f4 = (p4); \ |
| 191 | 363 | _event->f5 = (p5); \ | |
| 192 | typedef struct { | 364 | _event->f6 = (p6); \ |
| 193 | Word code; | 365 | _event->f7 = (p7); \ |
| 194 | Word clock; | 366 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 195 | void * p0; | 367 | |
| 196 | void * p1; | 368 | #define EVENT9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8) \ |
| 197 | void * p2; | 369 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 198 | unsigned u3; | 370 | _event->f0 = (p0); \ |
| 199 | } EventPPPUStruct; | 371 | _event->f1 = (p1); \ |
| 200 | 372 | _event->f2 = (p2); \ | |
| 201 | #define EVENT_PPPU_FIELD_PTR(event, i) \ | 373 | _event->f3 = (p3); \ |
| 202 | (((i) == 0) ? (void *)&((event)->pppu.p0) \ | 374 | _event->f4 = (p4); \ |
| 203 | : ((i) == 1) ? (void *)&((event)->pppu.p1) \ | 375 | _event->f5 = (p5); \ |
| 204 | : ((i) == 2) ? (void *)&((event)->pppu.p2) \ | 376 | _event->f6 = (p6); \ |
| 205 | : ((i) == 3) ? (void *)&((event)->pppu.u3) \ | 377 | _event->f7 = (p7); \ |
| 206 | : NULL) | 378 | _event->f8 = (p8); \ |
| 207 | 379 | EVENT_END(name, sizeof(Event##name##Struct)) | |
| 208 | typedef struct { | 380 | |
| 209 | Word code; | 381 | #define EVENT10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) \ |
| 210 | Word clock; | 382 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 211 | void * p0; | 383 | _event->f0 = (p0); \ |
| 212 | void * p1; | 384 | _event->f1 = (p1); \ |
| 213 | void * p2; | 385 | _event->f2 = (p2); \ |
| 214 | unsigned u3; | 386 | _event->f3 = (p3); \ |
| 215 | unsigned u4; | 387 | _event->f4 = (p4); \ |
| 216 | } EventPPPUUStruct; | 388 | _event->f5 = (p5); \ |
| 217 | 389 | _event->f6 = (p6); \ | |
| 218 | #define EVENT_PPPUU_FIELD_PTR(event, i) \ | 390 | _event->f7 = (p7); \ |
| 219 | (((i) == 0) ? (void *)&((event)->pppuu.p0) \ | 391 | _event->f8 = (p8); \ |
| 220 | : ((i) == 1) ? (void *)&((event)->pppuu.p1) \ | 392 | _event->f9 = (p9); \ |
| 221 | : ((i) == 2) ? (void *)&((event)->pppuu.p2) \ | 393 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 222 | : ((i) == 3) ? (void *)&((event)->pppuu.u3) \ | 394 | |
| 223 | : ((i) == 4) ? (void *)&((event)->pppuu.u4) \ | 395 | #define EVENT11(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) \ |
| 224 | : NULL) | 396 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 225 | 397 | _event->f0 = (p0); \ | |
| 226 | typedef struct { | 398 | _event->f1 = (p1); \ |
| 227 | Word code; | 399 | _event->f2 = (p2); \ |
| 228 | Word clock; | 400 | _event->f3 = (p3); \ |
| 229 | void * p0; | 401 | _event->f4 = (p4); \ |
| 230 | void * p1; | 402 | _event->f5 = (p5); \ |
| 231 | unsigned u2; | 403 | _event->f6 = (p6); \ |
| 232 | } EventPPUStruct; | 404 | _event->f7 = (p7); \ |
| 233 | 405 | _event->f8 = (p8); \ | |
| 234 | #define EVENT_PPU_FIELD_PTR(event, i) \ | 406 | _event->f9 = (p9); \ |
| 235 | (((i) == 0) ? (void *)&((event)->ppu.p0) \ | 407 | _event->f10 = (p10); \ |
| 236 | : ((i) == 1) ? (void *)&((event)->ppu.p1) \ | 408 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 237 | : ((i) == 2) ? (void *)&((event)->ppu.u2) \ | 409 | |
| 238 | : NULL) | 410 | #define EVENT12(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) \ |
| 239 | 411 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ | |
| 240 | typedef struct { | 412 | _event->f0 = (p0); \ |
| 241 | Word code; | 413 | _event->f1 = (p1); \ |
| 242 | Word clock; | 414 | _event->f2 = (p2); \ |
| 243 | void * p0; | 415 | _event->f3 = (p3); \ |
| 244 | void * p1; | 416 | _event->f4 = (p4); \ |
| 245 | unsigned u2; | 417 | _event->f5 = (p5); \ |
| 246 | unsigned u3; | 418 | _event->f6 = (p6); \ |
| 247 | } EventPPUUStruct; | 419 | _event->f7 = (p7); \ |
| 248 | 420 | _event->f8 = (p8); \ | |
| 249 | #define EVENT_PPUU_FIELD_PTR(event, i) \ | 421 | _event->f9 = (p9); \ |
| 250 | (((i) == 0) ? (void *)&((event)->ppuu.p0) \ | 422 | _event->f10 = (p10); \ |
| 251 | : ((i) == 1) ? (void *)&((event)->ppuu.p1) \ | 423 | _event->f11 = (p11); \ |
| 252 | : ((i) == 2) ? (void *)&((event)->ppuu.u2) \ | 424 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 253 | : ((i) == 3) ? (void *)&((event)->ppuu.u3) \ | 425 | |
| 254 | : NULL) | 426 | #define EVENT13(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) \ |
| 255 | 427 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ | |
| 256 | typedef struct { | 428 | _event->f0 = (p0); \ |
| 257 | Word code; | 429 | _event->f1 = (p1); \ |
| 258 | Word clock; | 430 | _event->f2 = (p2); \ |
| 259 | void * p0; | 431 | _event->f3 = (p3); \ |
| 260 | void * p1; | 432 | _event->f4 = (p4); \ |
| 261 | unsigned u2; | 433 | _event->f5 = (p5); \ |
| 262 | Word w3; | 434 | _event->f6 = (p6); \ |
| 263 | Word w4; | 435 | _event->f7 = (p7); \ |
| 264 | Word w5; | 436 | _event->f8 = (p8); \ |
| 265 | } EventPPUWWWStruct; | 437 | _event->f9 = (p9); \ |
| 266 | 438 | _event->f10 = (p10); \ | |
| 267 | #define EVENT_PPUWWW_FIELD_PTR(event, i) \ | 439 | _event->f11 = (p11); \ |
| 268 | (((i) == 0) ? (void *)&((event)->ppuwww.p0) \ | 440 | _event->f12 = (p12); \ |
| 269 | : ((i) == 1) ? (void *)&((event)->ppuwww.p1) \ | 441 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 270 | : ((i) == 2) ? (void *)&((event)->ppuwww.u2) \ | 442 | |
| 271 | : ((i) == 3) ? (void *)&((event)->ppuwww.w3) \ | 443 | #define EVENT14(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) \ |
| 272 | : ((i) == 4) ? (void *)&((event)->ppuwww.w4) \ | 444 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 273 | : ((i) == 5) ? (void *)&((event)->ppuwww.w5) \ | 445 | _event->f0 = (p0); \ |
| 274 | : NULL) | 446 | _event->f1 = (p1); \ |
| 275 | 447 | _event->f2 = (p2); \ | |
| 276 | typedef struct { | 448 | _event->f3 = (p3); \ |
| 277 | Word code; | 449 | _event->f4 = (p4); \ |
| 278 | Word clock; | 450 | _event->f5 = (p5); \ |
| 279 | void * p0; | 451 | _event->f6 = (p6); \ |
| 280 | void * p1; | 452 | _event->f7 = (p7); \ |
| 281 | Word w2; | 453 | _event->f8 = (p8); \ |
| 282 | Word w3; | 454 | _event->f9 = (p9); \ |
| 283 | } EventPPWWStruct; | 455 | _event->f10 = (p10); \ |
| 284 | 456 | _event->f11 = (p11); \ | |
| 285 | #define EVENT_PPWW_FIELD_PTR(event, i) \ | 457 | _event->f12 = (p12); \ |
| 286 | (((i) == 0) ? (void *)&((event)->ppww.p0) \ | 458 | _event->f13 = (p13); \ |
| 287 | : ((i) == 1) ? (void *)&((event)->ppww.p1) \ | 459 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 288 | : ((i) == 2) ? (void *)&((event)->ppww.w2) \ | 460 | |
| 289 | : ((i) == 3) ? (void *)&((event)->ppww.w3) \ | 461 | #define EVENT15(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) \ |
| 290 | : NULL) | 462 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 291 | 463 | _event->f0 = (p0); \ | |
| 292 | typedef struct { | 464 | _event->f1 = (p1); \ |
| 293 | Word code; | 465 | _event->f2 = (p2); \ |
| 294 | Word clock; | 466 | _event->f3 = (p3); \ |
| 295 | void * p0; | 467 | _event->f4 = (p4); \ |
| 296 | void * p1; | 468 | _event->f5 = (p5); \ |
| 297 | Word w2; | 469 | _event->f6 = (p6); \ |
| 298 | Word w3; | 470 | _event->f7 = (p7); \ |
| 299 | Word w4; | 471 | _event->f8 = (p8); \ |
| 300 | } EventPPWWWStruct; | 472 | _event->f9 = (p9); \ |
| 301 | 473 | _event->f10 = (p10); \ | |
| 302 | #define EVENT_PPWWW_FIELD_PTR(event, i) \ | 474 | _event->f11 = (p11); \ |
| 303 | (((i) == 0) ? (void *)&((event)->ppwww.p0) \ | 475 | _event->f12 = (p12); \ |
| 304 | : ((i) == 1) ? (void *)&((event)->ppwww.p1) \ | 476 | _event->f13 = (p13); \ |
| 305 | : ((i) == 2) ? (void *)&((event)->ppwww.w2) \ | 477 | _event->f14 = (p14); \ |
| 306 | : ((i) == 3) ? (void *)&((event)->ppwww.w3) \ | 478 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 307 | : ((i) == 4) ? (void *)&((event)->ppwww.w4) \ | 479 | |
| 308 | : NULL) | 480 | #define EVENT16(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) \ |
| 309 | 481 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ | |
| 310 | typedef struct { | 482 | _event->f0 = (p0); \ |
| 311 | Word code; | 483 | _event->f1 = (p1); \ |
| 312 | Word clock; | 484 | _event->f2 = (p2); \ |
| 313 | void * p0; | 485 | _event->f3 = (p3); \ |
| 314 | void * p1; | 486 | _event->f4 = (p4); \ |
| 315 | Word w2; | 487 | _event->f5 = (p5); \ |
| 316 | Word w3; | 488 | _event->f6 = (p6); \ |
| 317 | Word w4; | 489 | _event->f7 = (p7); \ |
| 318 | unsigned u5; | 490 | _event->f8 = (p8); \ |
| 319 | unsigned u6; | 491 | _event->f9 = (p9); \ |
| 320 | unsigned u7; | 492 | _event->f10 = (p10); \ |
| 321 | } EventPPWWWUUUStruct; | 493 | _event->f11 = (p11); \ |
| 322 | 494 | _event->f12 = (p12); \ | |
| 323 | #define EVENT_PPWWWUUU_FIELD_PTR(event, i) \ | 495 | _event->f13 = (p13); \ |
| 324 | (((i) == 0) ? (void *)&((event)->ppwwwuuu.p0) \ | 496 | _event->f14 = (p14); \ |
| 325 | : ((i) == 1) ? (void *)&((event)->ppwwwuuu.p1) \ | 497 | _event->f15 = (p15); \ |
| 326 | : ((i) == 2) ? (void *)&((event)->ppwwwuuu.w2) \ | 498 | EVENT_END(name, sizeof(Event##name##Struct)) |
| 327 | : ((i) == 3) ? (void *)&((event)->ppwwwuuu.w3) \ | 499 | |
| 328 | : ((i) == 4) ? (void *)&((event)->ppwwwuuu.w4) \ | 500 | #define EVENT17(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) \ |
| 329 | : ((i) == 5) ? (void *)&((event)->ppwwwuuu.u5) \ | 501 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ |
| 330 | : ((i) == 6) ? (void *)&((event)->ppwwwuuu.u6) \ | 502 | _event->f0 = (p0); \ |
| 331 | : ((i) == 7) ? (void *)&((event)->ppwwwuuu.u7) \ | 503 | _event->f1 = (p1); \ |
| 332 | : NULL) | 504 | _event->f2 = (p2); \ |
| 333 | 505 | _event->f3 = (p3); \ | |
| 334 | typedef struct { | 506 | _event->f4 = (p4); \ |
| 335 | Word code; | 507 | _event->f5 = (p5); \ |
| 336 | Word clock; | 508 | _event->f6 = (p6); \ |
| 337 | void * p0; | 509 | _event->f7 = (p7); \ |
| 338 | unsigned u1; | 510 | _event->f8 = (p8); \ |
| 339 | } EventPUStruct; | 511 | _event->f9 = (p9); \ |
| 512 | _event->f10 = (p10); \ | ||
| 513 | _event->f11 = (p11); \ | ||
| 514 | _event->f12 = (p12); \ | ||
| 515 | _event->f13 = (p13); \ | ||
| 516 | _event->f14 = (p14); \ | ||
| 517 | _event->f15 = (p15); \ | ||
| 518 | _event->f16 = (p16); \ | ||
| 519 | EVENT_END(name, sizeof(Event##name##Struct)) | ||
| 520 | |||
| 521 | #define EVENT18(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17) \ | ||
| 522 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ | ||
| 523 | _event->f0 = (p0); \ | ||
| 524 | _event->f1 = (p1); \ | ||
| 525 | _event->f2 = (p2); \ | ||
| 526 | _event->f3 = (p3); \ | ||
| 527 | _event->f4 = (p4); \ | ||
| 528 | _event->f5 = (p5); \ | ||
| 529 | _event->f6 = (p6); \ | ||
| 530 | _event->f7 = (p7); \ | ||
| 531 | _event->f8 = (p8); \ | ||
| 532 | _event->f9 = (p9); \ | ||
| 533 | _event->f10 = (p10); \ | ||
| 534 | _event->f11 = (p11); \ | ||
| 535 | _event->f12 = (p12); \ | ||
| 536 | _event->f13 = (p13); \ | ||
| 537 | _event->f14 = (p14); \ | ||
| 538 | _event->f15 = (p15); \ | ||
| 539 | _event->f16 = (p16); \ | ||
| 540 | _event->f17 = (p17); \ | ||
| 541 | EVENT_END(name, sizeof(Event##name##Struct)) | ||
| 542 | |||
| 543 | #define EVENT19(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) \ | ||
| 544 | EVENT_BEGIN(name, sizeof(Event##name##Struct)) \ | ||
| 545 | _event->f0 = (p0); \ | ||
| 546 | _event->f1 = (p1); \ | ||
| 547 | _event->f2 = (p2); \ | ||
| 548 | _event->f3 = (p3); \ | ||
| 549 | _event->f4 = (p4); \ | ||
| 550 | _event->f5 = (p5); \ | ||
| 551 | _event->f6 = (p6); \ | ||
| 552 | _event->f7 = (p7); \ | ||
| 553 | _event->f8 = (p8); \ | ||
| 554 | _event->f9 = (p9); \ | ||
| 555 | _event->f10 = (p10); \ | ||
| 556 | _event->f11 = (p11); \ | ||
| 557 | _event->f12 = (p12); \ | ||
| 558 | _event->f13 = (p13); \ | ||
| 559 | _event->f14 = (p14); \ | ||
| 560 | _event->f15 = (p15); \ | ||
| 561 | _event->f16 = (p16); \ | ||
| 562 | _event->f17 = (p17); \ | ||
| 563 | _event->f18 = (p18); \ | ||
| 564 | EVENT_END(name, sizeof(Event##name##Struct)) | ||
| 565 | |||
| 566 | |||
| 567 | #define EVENT0_FIELD_PTR(name, event, i) NULL | ||
| 568 | |||
| 569 | /* | ||
| 570 | for i in range(1,20): print "#define EVENT%d_FIELD_PTR(name, event, i) ( \\\n %s\\\n : NULL)\n" % (i, " \\\n : ".join(["((i) == %d) ? (void *)&((event)->name.f%d)" % (j, j) for j in range(0, i)])) | ||
| 571 | */ | ||
| 340 | 572 | ||
| 341 | #define EVENT_PU_FIELD_PTR(event, i) \ | 573 | #define EVENT1_FIELD_PTR(name, event, i) ( \ |
| 342 | (((i) == 0) ? (void *)&((event)->pu.p0) \ | 574 | ((i) == 0) ? (void *)&((event)->name.f0)\ |
| 343 | : ((i) == 1) ? (void *)&((event)->pu.u1) \ | 575 | : NULL) |
| 344 | : NULL) | 576 | |
| 577 | #define EVENT2_FIELD_PTR(name, event, i) ( \ | ||
| 578 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 579 | : ((i) == 1) ? (void *)&((event)->name.f1)\ | ||
| 580 | : NULL) | ||
| 581 | |||
| 582 | #define EVENT3_FIELD_PTR(name, event, i) ( \ | ||
| 583 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 584 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 585 | : ((i) == 2) ? (void *)&((event)->name.f2)\ | ||
| 586 | : NULL) | ||
| 587 | |||
| 588 | #define EVENT4_FIELD_PTR(name, event, i) ( \ | ||
| 589 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 590 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 591 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 592 | : ((i) == 3) ? (void *)&((event)->name.f3)\ | ||
| 593 | : NULL) | ||
| 594 | |||
| 595 | #define EVENT5_FIELD_PTR(name, event, i) ( \ | ||
| 596 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 597 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 598 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 599 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 600 | : ((i) == 4) ? (void *)&((event)->name.f4)\ | ||
| 601 | : NULL) | ||
| 602 | |||
| 603 | #define EVENT6_FIELD_PTR(name, event, i) ( \ | ||
| 604 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 605 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 606 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 607 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 608 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 609 | : ((i) == 5) ? (void *)&((event)->name.f5)\ | ||
| 610 | : NULL) | ||
| 611 | |||
| 612 | #define EVENT7_FIELD_PTR(name, event, i) ( \ | ||
| 613 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 614 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 615 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 616 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 617 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 618 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 619 | : ((i) == 6) ? (void *)&((event)->name.f6)\ | ||
| 620 | : NULL) | ||
| 621 | |||
| 622 | #define EVENT8_FIELD_PTR(name, event, i) ( \ | ||
| 623 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 624 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 625 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 626 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 627 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 628 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 629 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 630 | : ((i) == 7) ? (void *)&((event)->name.f7)\ | ||
| 631 | : NULL) | ||
| 632 | |||
| 633 | #define EVENT9_FIELD_PTR(name, event, i) ( \ | ||
| 634 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 635 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 636 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 637 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 638 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 639 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 640 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 641 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 642 | : ((i) == 8) ? (void *)&((event)->name.f8)\ | ||
| 643 | : NULL) | ||
| 644 | |||
| 645 | #define EVENT10_FIELD_PTR(name, event, i) ( \ | ||
| 646 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 647 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 648 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 649 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 650 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 651 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 652 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 653 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 654 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 655 | : ((i) == 9) ? (void *)&((event)->name.f9)\ | ||
| 656 | : NULL) | ||
| 657 | |||
| 658 | #define EVENT11_FIELD_PTR(name, event, i) ( \ | ||
| 659 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 660 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 661 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 662 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 663 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 664 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 665 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 666 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 667 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 668 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 669 | : ((i) == 10) ? (void *)&((event)->name.f10)\ | ||
| 670 | : NULL) | ||
| 671 | |||
| 672 | #define EVENT12_FIELD_PTR(name, event, i) ( \ | ||
| 673 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 674 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 675 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 676 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 677 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 678 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 679 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 680 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 681 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 682 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 683 | : ((i) == 10) ? (void *)&((event)->name.f10) \ | ||
| 684 | : ((i) == 11) ? (void *)&((event)->name.f11)\ | ||
| 685 | : NULL) | ||
| 686 | |||
| 687 | #define EVENT13_FIELD_PTR(name, event, i) ( \ | ||
| 688 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 689 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 690 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 691 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 692 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 693 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 694 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 695 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 696 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 697 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 698 | : ((i) == 10) ? (void *)&((event)->name.f10) \ | ||
| 699 | : ((i) == 11) ? (void *)&((event)->name.f11) \ | ||
| 700 | : ((i) == 12) ? (void *)&((event)->name.f12)\ | ||
| 701 | : NULL) | ||
| 702 | |||
| 703 | #define EVENT14_FIELD_PTR(name, event, i) ( \ | ||
| 704 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 705 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 706 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 707 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 708 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 709 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 710 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 711 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 712 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 713 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 714 | : ((i) == 10) ? (void *)&((event)->name.f10) \ | ||
| 715 | : ((i) == 11) ? (void *)&((event)->name.f11) \ | ||
| 716 | : ((i) == 12) ? (void *)&((event)->name.f12) \ | ||
| 717 | : ((i) == 13) ? (void *)&((event)->name.f13)\ | ||
| 718 | : NULL) | ||
| 719 | |||
| 720 | #define EVENT15_FIELD_PTR(name, event, i) ( \ | ||
| 721 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 722 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 723 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 724 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 725 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 726 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 727 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 728 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 729 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 730 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 731 | : ((i) == 10) ? (void *)&((event)->name.f10) \ | ||
| 732 | : ((i) == 11) ? (void *)&((event)->name.f11) \ | ||
| 733 | : ((i) == 12) ? (void *)&((event)->name.f12) \ | ||
| 734 | : ((i) == 13) ? (void *)&((event)->name.f13) \ | ||
| 735 | : ((i) == 14) ? (void *)&((event)->name.f14)\ | ||
| 736 | : NULL) | ||
| 737 | |||
| 738 | #define EVENT16_FIELD_PTR(name, event, i) ( \ | ||
| 739 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 740 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 741 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 742 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 743 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 744 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 745 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 746 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 747 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 748 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 749 | : ((i) == 10) ? (void *)&((event)->name.f10) \ | ||
| 750 | : ((i) == 11) ? (void *)&((event)->name.f11) \ | ||
| 751 | : ((i) == 12) ? (void *)&((event)->name.f12) \ | ||
| 752 | : ((i) == 13) ? (void *)&((event)->name.f13) \ | ||
| 753 | : ((i) == 14) ? (void *)&((event)->name.f14) \ | ||
| 754 | : ((i) == 15) ? (void *)&((event)->name.f15)\ | ||
| 755 | : NULL) | ||
| 756 | |||
| 757 | #define EVENT17_FIELD_PTR(name, event, i) ( \ | ||
| 758 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 759 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 760 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 761 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 762 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 763 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 764 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 765 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 766 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 767 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 768 | : ((i) == 10) ? (void *)&((event)->name.f10) \ | ||
| 769 | : ((i) == 11) ? (void *)&((event)->name.f11) \ | ||
| 770 | : ((i) == 12) ? (void *)&((event)->name.f12) \ | ||
| 771 | : ((i) == 13) ? (void *)&((event)->name.f13) \ | ||
| 772 | : ((i) == 14) ? (void *)&((event)->name.f14) \ | ||
| 773 | : ((i) == 15) ? (void *)&((event)->name.f15) \ | ||
| 774 | : ((i) == 16) ? (void *)&((event)->name.f16)\ | ||
| 775 | : NULL) | ||
| 776 | |||
| 777 | #define EVENT18_FIELD_PTR(name, event, i) ( \ | ||
| 778 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 779 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 780 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 781 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 782 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 783 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 784 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 785 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 786 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 787 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 788 | : ((i) == 10) ? (void *)&((event)->name.f10) \ | ||
| 789 | : ((i) == 11) ? (void *)&((event)->name.f11) \ | ||
| 790 | : ((i) == 12) ? (void *)&((event)->name.f12) \ | ||
| 791 | : ((i) == 13) ? (void *)&((event)->name.f13) \ | ||
| 792 | : ((i) == 14) ? (void *)&((event)->name.f14) \ | ||
| 793 | : ((i) == 15) ? (void *)&((event)->name.f15) \ | ||
| 794 | : ((i) == 16) ? (void *)&((event)->name.f16) \ | ||
| 795 | : ((i) == 17) ? (void *)&((event)->name.f17)\ | ||
| 796 | : NULL) | ||
| 797 | |||
| 798 | #define EVENT19_FIELD_PTR(name, event, i) ( \ | ||
| 799 | ((i) == 0) ? (void *)&((event)->name.f0) \ | ||
| 800 | : ((i) == 1) ? (void *)&((event)->name.f1) \ | ||
| 801 | : ((i) == 2) ? (void *)&((event)->name.f2) \ | ||
| 802 | : ((i) == 3) ? (void *)&((event)->name.f3) \ | ||
| 803 | : ((i) == 4) ? (void *)&((event)->name.f4) \ | ||
| 804 | : ((i) == 5) ? (void *)&((event)->name.f5) \ | ||
| 805 | : ((i) == 6) ? (void *)&((event)->name.f6) \ | ||
| 806 | : ((i) == 7) ? (void *)&((event)->name.f7) \ | ||
| 807 | : ((i) == 8) ? (void *)&((event)->name.f8) \ | ||
| 808 | : ((i) == 9) ? (void *)&((event)->name.f9) \ | ||
| 809 | : ((i) == 10) ? (void *)&((event)->name.f10) \ | ||
| 810 | : ((i) == 11) ? (void *)&((event)->name.f11) \ | ||
| 811 | : ((i) == 12) ? (void *)&((event)->name.f12) \ | ||
| 812 | : ((i) == 13) ? (void *)&((event)->name.f13) \ | ||
| 813 | : ((i) == 14) ? (void *)&((event)->name.f14) \ | ||
| 814 | : ((i) == 15) ? (void *)&((event)->name.f15) \ | ||
| 815 | : ((i) == 16) ? (void *)&((event)->name.f16) \ | ||
| 816 | : ((i) == 17) ? (void *)&((event)->name.f17) \ | ||
| 817 | : ((i) == 18) ? (void *)&((event)->name.f18)\ | ||
| 818 | : NULL) | ||
| 345 | 819 | ||
| 346 | typedef struct { | ||
| 347 | Word code; | ||
| 348 | Word clock; | ||
| 349 | void * p0; | ||
| 350 | Word w1; | ||
| 351 | } EventPWStruct; | ||
| 352 | 820 | ||
| 353 | #define EVENT_PW_FIELD_PTR(event, i) \ | 821 | #else /* EVENT not */ |
| 354 | (((i) == 0) ? (void *)&((event)->pw.p0) \ | ||
| 355 | : ((i) == 1) ? (void *)&((event)->pw.w1) \ | ||
| 356 | : NULL) | ||
| 357 | 822 | ||
| 358 | typedef struct { | 823 | #define EVENT0(name) NOOP |
| 359 | Word code; | ||
| 360 | Word clock; | ||
| 361 | void * p0; | ||
| 362 | Word w1; | ||
| 363 | Addr a2; | ||
| 364 | } EventPWAStruct; | ||
| 365 | |||
| 366 | #define EVENT_PWA_FIELD_PTR(event, i) \ | ||
| 367 | (((i) == 0) ? (void *)&((event)->pwa.p0) \ | ||
| 368 | : ((i) == 1) ? (void *)&((event)->pwa.w1) \ | ||
| 369 | : ((i) == 2) ? (void *)&((event)->pwa.a2) \ | ||
| 370 | : NULL) | ||
| 371 | |||
| 372 | typedef struct { | ||
| 373 | Word code; | ||
| 374 | Word clock; | ||
| 375 | void * p0; | ||
| 376 | Word w1; | ||
| 377 | Addr a2; | ||
| 378 | Word w3; | ||
| 379 | } EventPWAWStruct; | ||
| 380 | |||
| 381 | #define EVENT_PWAW_FIELD_PTR(event, i) \ | ||
| 382 | (((i) == 0) ? (void *)&((event)->pwaw.p0) \ | ||
| 383 | : ((i) == 1) ? (void *)&((event)->pwaw.w1) \ | ||
| 384 | : ((i) == 2) ? (void *)&((event)->pwaw.a2) \ | ||
| 385 | : ((i) == 3) ? (void *)&((event)->pwaw.w3) \ | ||
| 386 | : NULL) | ||
| 387 | |||
| 388 | typedef struct { | ||
| 389 | Word code; | ||
| 390 | Word clock; | ||
| 391 | void * p0; | ||
| 392 | Word w1; | ||
| 393 | void * p2; | ||
| 394 | } EventPWPStruct; | ||
| 395 | |||
| 396 | #define EVENT_PWP_FIELD_PTR(event, i) \ | ||
| 397 | (((i) == 0) ? (void *)&((event)->pwp.p0) \ | ||
| 398 | : ((i) == 1) ? (void *)&((event)->pwp.w1) \ | ||
| 399 | : ((i) == 2) ? (void *)&((event)->pwp.p2) \ | ||
| 400 | : NULL) | ||
| 401 | |||
| 402 | typedef struct { | ||
| 403 | Word code; | ||
| 404 | Word clock; | ||
| 405 | void * p0; | ||
| 406 | Word w1; | ||
| 407 | unsigned u2; | ||
| 408 | } EventPWUStruct; | ||
| 409 | |||
| 410 | #define EVENT_PWU_FIELD_PTR(event, i) \ | ||
| 411 | (((i) == 0) ? (void *)&((event)->pwu.p0) \ | ||
| 412 | : ((i) == 1) ? (void *)&((event)->pwu.w1) \ | ||
| 413 | : ((i) == 2) ? (void *)&((event)->pwu.u2) \ | ||
| 414 | : NULL) | ||
| 415 | |||
| 416 | typedef struct { | ||
| 417 | Word code; | ||
| 418 | Word clock; | ||
| 419 | void * p0; | ||
| 420 | Word w1; | ||
| 421 | Word w2; | ||
| 422 | } EventPWWStruct; | ||
| 423 | |||
| 424 | #define EVENT_PWW_FIELD_PTR(event, i) \ | ||
| 425 | (((i) == 0) ? (void *)&((event)->pww.p0) \ | ||
| 426 | : ((i) == 1) ? (void *)&((event)->pww.w1) \ | ||
| 427 | : ((i) == 2) ? (void *)&((event)->pww.w2) \ | ||
| 428 | : NULL) | ||
| 429 | |||
| 430 | typedef struct { | ||
| 431 | Word code; | ||
| 432 | Word clock; | ||
| 433 | void * p0; | ||
| 434 | Word w1; | ||
| 435 | Word w2; | ||
| 436 | Word w3; | ||
| 437 | Word w4; | ||
| 438 | double d5; | ||
| 439 | double d6; | ||
| 440 | } EventPWWWWDDStruct; | ||
| 441 | |||
| 442 | #define EVENT_PWWWWDD_FIELD_PTR(event, i) \ | ||
| 443 | (((i) == 0) ? (void *)&((event)->pwwwwdd.p0) \ | ||
| 444 | : ((i) == 1) ? (void *)&((event)->pwwwwdd.w1) \ | ||
| 445 | : ((i) == 2) ? (void *)&((event)->pwwwwdd.w2) \ | ||
| 446 | : ((i) == 3) ? (void *)&((event)->pwwwwdd.w3) \ | ||
| 447 | : ((i) == 4) ? (void *)&((event)->pwwwwdd.w4) \ | ||
| 448 | : ((i) == 5) ? (void *)&((event)->pwwwwdd.d5) \ | ||
| 449 | : ((i) == 6) ? (void *)&((event)->pwwwwdd.d6) \ | ||
| 450 | : NULL) | ||
| 451 | |||
| 452 | typedef struct { | ||
| 453 | Word code; | ||
| 454 | Word clock; | ||
| 455 | void * p0; | ||
| 456 | Word w1; | ||
| 457 | Word w2; | ||
| 458 | Word w3; | ||
| 459 | Word w4; | ||
| 460 | Word w5; | ||
| 461 | } EventPWWWWWStruct; | ||
| 462 | |||
| 463 | #define EVENT_PWWWWW_FIELD_PTR(event, i) \ | ||
| 464 | (((i) == 0) ? (void *)&((event)->pwwwww.p0) \ | ||
| 465 | : ((i) == 1) ? (void *)&((event)->pwwwww.w1) \ | ||
| 466 | : ((i) == 2) ? (void *)&((event)->pwwwww.w2) \ | ||
| 467 | : ((i) == 3) ? (void *)&((event)->pwwwww.w3) \ | ||
| 468 | : ((i) == 4) ? (void *)&((event)->pwwwww.w4) \ | ||
| 469 | : ((i) == 5) ? (void *)&((event)->pwwwww.w5) \ | ||
| 470 | : NULL) | ||
| 471 | |||
| 472 | typedef struct { | ||
| 473 | Word code; | ||
| 474 | Word clock; | ||
| 475 | void * p0; | ||
| 476 | Word w1; | ||
| 477 | Word w2; | ||
| 478 | Word w3; | ||
| 479 | Word w4; | ||
| 480 | Word w5; | ||
| 481 | Word w6; | ||
| 482 | Word w7; | ||
| 483 | Word w8; | ||
| 484 | Word w9; | ||
| 485 | } EventPWWWWWWWWWStruct; | ||
| 486 | |||
| 487 | #define EVENT_PWWWWWWWWW_FIELD_PTR(event, i) \ | ||
| 488 | (((i) == 0) ? (void *)&((event)->pwwwwwwwww.p0) \ | ||
| 489 | : ((i) == 1) ? (void *)&((event)->pwwwwwwwww.w1) \ | ||
| 490 | : ((i) == 2) ? (void *)&((event)->pwwwwwwwww.w2) \ | ||
| 491 | : ((i) == 3) ? (void *)&((event)->pwwwwwwwww.w3) \ | ||
| 492 | : ((i) == 4) ? (void *)&((event)->pwwwwwwwww.w4) \ | ||
| 493 | : ((i) == 5) ? (void *)&((event)->pwwwwwwwww.w5) \ | ||
| 494 | : ((i) == 6) ? (void *)&((event)->pwwwwwwwww.w6) \ | ||
| 495 | : ((i) == 7) ? (void *)&((event)->pwwwwwwwww.w7) \ | ||
| 496 | : ((i) == 8) ? (void *)&((event)->pwwwwwwwww.w8) \ | ||
| 497 | : ((i) == 9) ? (void *)&((event)->pwwwwwwwww.w9) \ | ||
| 498 | : NULL) | ||
| 499 | |||
| 500 | typedef struct { | ||
| 501 | Word code; | ||
| 502 | Word clock; | ||
| 503 | void * p0; | ||
| 504 | Word w1; | ||
| 505 | Word w2; | ||
| 506 | Word w3; | ||
| 507 | Word w4; | ||
| 508 | Word w5; | ||
| 509 | Word w6; | ||
| 510 | Word w7; | ||
| 511 | Word w8; | ||
| 512 | Word w9; | ||
| 513 | Word w10; | ||
| 514 | Word w11; | ||
| 515 | Word w12; | ||
| 516 | } EventPWWWWWWWWWWWWStruct; | ||
| 517 | |||
| 518 | #define EVENT_PWWWWWWWWWWWW_FIELD_PTR(event, i) \ | ||
| 519 | (((i) == 0) ? (void *)&((event)->pwwwwwwwwwwww.p0) \ | ||
| 520 | : ((i) == 1) ? (void *)&((event)->pwwwwwwwwwwww.w1) \ | ||
| 521 | : ((i) == 2) ? (void *)&((event)->pwwwwwwwwwwww.w2) \ | ||
| 522 | : ((i) == 3) ? (void *)&((event)->pwwwwwwwwwwww.w3) \ | ||
| 523 | : ((i) == 4) ? (void *)&((event)->pwwwwwwwwwwww.w4) \ | ||
| 524 | : ((i) == 5) ? (void *)&((event)->pwwwwwwwwwwww.w5) \ | ||
| 525 | : ((i) == 6) ? (void *)&((event)->pwwwwwwwwwwww.w6) \ | ||
| 526 | : ((i) == 7) ? (void *)&((event)->pwwwwwwwwwwww.w7) \ | ||
| 527 | : ((i) == 8) ? (void *)&((event)->pwwwwwwwwwwww.w8) \ | ||
| 528 | : ((i) == 9) ? (void *)&((event)->pwwwwwwwwwwww.w9) \ | ||
| 529 | : ((i) == 10) ? (void *)&((event)->pwwwwwwwwwwww.w10) \ | ||
| 530 | : ((i) == 11) ? (void *)&((event)->pwwwwwwwwwwww.w11) \ | ||
| 531 | : ((i) == 12) ? (void *)&((event)->pwwwwwwwwwwww.w12) \ | ||
| 532 | : NULL) | ||
| 533 | |||
| 534 | typedef struct { | ||
| 535 | Word code; | ||
| 536 | Word clock; | ||
| 537 | unsigned u0; | ||
| 538 | unsigned u1; | ||
| 539 | void * p2; | ||
| 540 | Addr a3; | ||
| 541 | } EventUUPAStruct; | ||
| 542 | |||
| 543 | #define EVENT_UUPA_FIELD_PTR(event, i) \ | ||
| 544 | (((i) == 0) ? (void *)&((event)->uupa.u0) \ | ||
| 545 | : ((i) == 1) ? (void *)&((event)->uupa.u1) \ | ||
| 546 | : ((i) == 2) ? (void *)&((event)->uupa.p2) \ | ||
| 547 | : ((i) == 3) ? (void *)&((event)->uupa.a3) \ | ||
| 548 | : NULL) | ||
| 549 | |||
| 550 | typedef struct { | ||
| 551 | Word code; | ||
| 552 | Word clock; | ||
| 553 | unsigned u0; | ||
| 554 | unsigned u1; | ||
| 555 | void * p2; | ||
| 556 | void * p3; | ||
| 557 | } EventUUPPStruct; | ||
| 558 | |||
| 559 | #define EVENT_UUPP_FIELD_PTR(event, i) \ | ||
| 560 | (((i) == 0) ? (void *)&((event)->uupp.u0) \ | ||
| 561 | : ((i) == 1) ? (void *)&((event)->uupp.u1) \ | ||
| 562 | : ((i) == 2) ? (void *)&((event)->uupp.p2) \ | ||
| 563 | : ((i) == 3) ? (void *)&((event)->uupp.p3) \ | ||
| 564 | : NULL) | ||
| 565 | |||
| 566 | typedef struct { | ||
| 567 | Word code; | ||
| 568 | Word clock; | ||
| 569 | unsigned u0; | ||
| 570 | unsigned u1; | ||
| 571 | void * p2; | ||
| 572 | void * p3; | ||
| 573 | void * p4; | ||
| 574 | } EventUUPPPStruct; | ||
| 575 | |||
| 576 | #define EVENT_UUPPP_FIELD_PTR(event, i) \ | ||
| 577 | (((i) == 0) ? (void *)&((event)->uuppp.u0) \ | ||
| 578 | : ((i) == 1) ? (void *)&((event)->uuppp.u1) \ | ||
| 579 | : ((i) == 2) ? (void *)&((event)->uuppp.p2) \ | ||
| 580 | : ((i) == 3) ? (void *)&((event)->uuppp.p3) \ | ||
| 581 | : ((i) == 4) ? (void *)&((event)->uuppp.p4) \ | ||
| 582 | : NULL) | ||
| 583 | |||
| 584 | typedef struct { | ||
| 585 | Word code; | ||
| 586 | Word clock; | ||
| 587 | Word w0; | ||
| 588 | EventStringStruct s1; | ||
| 589 | } EventWSStruct; | ||
| 590 | |||
| 591 | #define EVENT_WS_FIELD_PTR(event, i) \ | ||
| 592 | (((i) == 0) ? (void *)&((event)->ws.w0) \ | ||
| 593 | : ((i) == 1) ? (void *)&((event)->ws.s1) \ | ||
| 594 | : NULL) | ||
| 595 | |||
| 596 | |||
| 597 | typedef union { | ||
| 598 | Event0Struct any; | ||
| 599 | EventAStruct a; | ||
| 600 | EventAWStruct aw; | ||
| 601 | EventPStruct p; | ||
| 602 | EventPAAStruct paa; | ||
| 603 | EventPAWStruct paw; | ||
| 604 | EventPAWAStruct pawa; | ||
| 605 | EventPDDWWWStruct pddwww; | ||
| 606 | EventPPStruct pp; | ||
| 607 | EventPPAUStruct ppau; | ||
| 608 | EventPPAWPStruct ppawp; | ||
| 609 | EventPPPStruct ppp; | ||
| 610 | EventPPPAStruct pppa; | ||
| 611 | EventPPPUStruct pppu; | ||
| 612 | EventPPPUUStruct pppuu; | ||
| 613 | EventPPUStruct ppu; | ||
| 614 | EventPPUUStruct ppuu; | ||
| 615 | EventPPUWWWStruct ppuwww; | ||
| 616 | EventPPWWStruct ppww; | ||
| 617 | EventPPWWWStruct ppwww; | ||
| 618 | EventPPWWWUUUStruct ppwwwuuu; | ||
| 619 | EventPUStruct pu; | ||
| 620 | EventPWStruct pw; | ||
| 621 | EventPWAStruct pwa; | ||
| 622 | EventPWAWStruct pwaw; | ||
| 623 | EventPWPStruct pwp; | ||
| 624 | EventPWUStruct pwu; | ||
| 625 | EventPWWStruct pww; | ||
| 626 | EventPWWWWDDStruct pwwwwdd; | ||
| 627 | EventPWWWWWStruct pwwwww; | ||
| 628 | EventPWWWWWWWWWStruct pwwwwwwwww; | ||
| 629 | EventPWWWWWWWWWWWWStruct pwwwwwwwwwwww; | ||
| 630 | EventUUPAStruct uupa; | ||
| 631 | EventUUPPStruct uupp; | ||
| 632 | EventUUPPPStruct uuppp; | ||
| 633 | EventWSStruct ws; | ||
| 634 | } EventUnion; | ||
| 635 | |||
| 636 | |||
| 637 | #define EVENT_0(type) \ | ||
| 638 | EVENT_BEGIN(type) \ | ||
| 639 | EVENT_END(type, 0, sizeof(Event0Struct)) | ||
| 640 | |||
| 641 | #define EVENT_A(type, _a0) \ | ||
| 642 | EVENT_BEGIN(type) \ | ||
| 643 | EventMould.a.a0 = (_a0); \ | ||
| 644 | EVENT_END(type, A, sizeof(EventAStruct)) | ||
| 645 | |||
| 646 | #define EVENT_AW(type, _a0, _w1) \ | ||
| 647 | EVENT_BEGIN(type) \ | ||
| 648 | EventMould.aw.a0 = (_a0); \ | ||
| 649 | EventMould.aw.w1 = (_w1); \ | ||
| 650 | EVENT_END(type, AW, sizeof(EventAWStruct)) | ||
| 651 | |||
| 652 | #define EVENT_P(type, _p0) \ | ||
| 653 | EVENT_BEGIN(type) \ | ||
| 654 | EventMould.p.p0 = (_p0); \ | ||
| 655 | EVENT_END(type, P, sizeof(EventPStruct)) | ||
| 656 | |||
| 657 | #define EVENT_PAA(type, _p0, _a1, _a2) \ | ||
| 658 | EVENT_BEGIN(type) \ | ||
| 659 | EventMould.paa.p0 = (_p0); \ | ||
| 660 | EventMould.paa.a1 = (_a1); \ | ||
| 661 | EventMould.paa.a2 = (_a2); \ | ||
| 662 | EVENT_END(type, PAA, sizeof(EventPAAStruct)) | ||
| 663 | |||
| 664 | #define EVENT_PAW(type, _p0, _a1, _w2) \ | ||
| 665 | EVENT_BEGIN(type) \ | ||
| 666 | EventMould.paw.p0 = (_p0); \ | ||
| 667 | EventMould.paw.a1 = (_a1); \ | ||
| 668 | EventMould.paw.w2 = (_w2); \ | ||
| 669 | EVENT_END(type, PAW, sizeof(EventPAWStruct)) | ||
| 670 | |||
| 671 | #define EVENT_PAWA(type, _p0, _a1, _w2, _a3) \ | ||
| 672 | EVENT_BEGIN(type) \ | ||
| 673 | EventMould.pawa.p0 = (_p0); \ | ||
| 674 | EventMould.pawa.a1 = (_a1); \ | ||
| 675 | EventMould.pawa.w2 = (_w2); \ | ||
| 676 | EventMould.pawa.a3 = (_a3); \ | ||
| 677 | EVENT_END(type, PAWA, sizeof(EventPAWAStruct)) | ||
| 678 | |||
| 679 | #define EVENT_PDDWWW(type, _p0, _d1, _d2, _w3, _w4, _w5) \ | ||
| 680 | EVENT_BEGIN(type) \ | ||
| 681 | EventMould.pddwww.p0 = (_p0); \ | ||
| 682 | EventMould.pddwww.d1 = (_d1); \ | ||
| 683 | EventMould.pddwww.d2 = (_d2); \ | ||
| 684 | EventMould.pddwww.w3 = (_w3); \ | ||
| 685 | EventMould.pddwww.w4 = (_w4); \ | ||
| 686 | EventMould.pddwww.w5 = (_w5); \ | ||
| 687 | EVENT_END(type, PDDWWW, sizeof(EventPDDWWWStruct)) | ||
| 688 | |||
| 689 | #define EVENT_PP(type, _p0, _p1) \ | ||
| 690 | EVENT_BEGIN(type) \ | ||
| 691 | EventMould.pp.p0 = (_p0); \ | ||
| 692 | EventMould.pp.p1 = (_p1); \ | ||
| 693 | EVENT_END(type, PP, sizeof(EventPPStruct)) | ||
| 694 | |||
| 695 | #define EVENT_PPAU(type, _p0, _p1, _a2, _u3) \ | ||
| 696 | EVENT_BEGIN(type) \ | ||
| 697 | EventMould.ppau.p0 = (_p0); \ | ||
| 698 | EventMould.ppau.p1 = (_p1); \ | ||
| 699 | EventMould.ppau.a2 = (_a2); \ | ||
| 700 | EventMould.ppau.u3 = (_u3); \ | ||
| 701 | EVENT_END(type, PPAU, sizeof(EventPPAUStruct)) | ||
| 702 | |||
| 703 | #define EVENT_PPAWP(type, _p0, _p1, _a2, _w3, _p4) \ | ||
| 704 | EVENT_BEGIN(type) \ | ||
| 705 | EventMould.ppawp.p0 = (_p0); \ | ||
| 706 | EventMould.ppawp.p1 = (_p1); \ | ||
| 707 | EventMould.ppawp.a2 = (_a2); \ | ||
| 708 | EventMould.ppawp.w3 = (_w3); \ | ||
| 709 | EventMould.ppawp.p4 = (_p4); \ | ||
| 710 | EVENT_END(type, PPAWP, sizeof(EventPPAWPStruct)) | ||
| 711 | |||
| 712 | #define EVENT_PPP(type, _p0, _p1, _p2) \ | ||
| 713 | EVENT_BEGIN(type) \ | ||
| 714 | EventMould.ppp.p0 = (_p0); \ | ||
| 715 | EventMould.ppp.p1 = (_p1); \ | ||
| 716 | EventMould.ppp.p2 = (_p2); \ | ||
| 717 | EVENT_END(type, PPP, sizeof(EventPPPStruct)) | ||
| 718 | |||
| 719 | #define EVENT_PPPA(type, _p0, _p1, _p2, _a3) \ | ||
| 720 | EVENT_BEGIN(type) \ | ||
| 721 | EventMould.pppa.p0 = (_p0); \ | ||
| 722 | EventMould.pppa.p1 = (_p1); \ | ||
| 723 | EventMould.pppa.p2 = (_p2); \ | ||
| 724 | EventMould.pppa.a3 = (_a3); \ | ||
| 725 | EVENT_END(type, PPPA, sizeof(EventPPPAStruct)) | ||
| 726 | |||
| 727 | #define EVENT_PPPU(type, _p0, _p1, _p2, _u3) \ | ||
| 728 | EVENT_BEGIN(type) \ | ||
| 729 | EventMould.pppu.p0 = (_p0); \ | ||
| 730 | EventMould.pppu.p1 = (_p1); \ | ||
| 731 | EventMould.pppu.p2 = (_p2); \ | ||
| 732 | EventMould.pppu.u3 = (_u3); \ | ||
| 733 | EVENT_END(type, PPPU, sizeof(EventPPPUStruct)) | ||
| 734 | |||
| 735 | #define EVENT_PPPUU(type, _p0, _p1, _p2, _u3, _u4) \ | ||
| 736 | EVENT_BEGIN(type) \ | ||
| 737 | EventMould.pppuu.p0 = (_p0); \ | ||
| 738 | EventMould.pppuu.p1 = (_p1); \ | ||
| 739 | EventMould.pppuu.p2 = (_p2); \ | ||
| 740 | EventMould.pppuu.u3 = (_u3); \ | ||
| 741 | EventMould.pppuu.u4 = (_u4); \ | ||
| 742 | EVENT_END(type, PPPUU, sizeof(EventPPPUUStruct)) | ||
| 743 | |||
| 744 | #define EVENT_PPU(type, _p0, _p1, _u2) \ | ||
| 745 | EVENT_BEGIN(type) \ | ||
| 746 | EventMould.ppu.p0 = (_p0); \ | ||
| 747 | EventMould.ppu.p1 = (_p1); \ | ||
| 748 | EventMould.ppu.u2 = (_u2); \ | ||
| 749 | EVENT_END(type, PPU, sizeof(EventPPUStruct)) | ||
| 750 | |||
| 751 | #define EVENT_PPUU(type, _p0, _p1, _u2, _u3) \ | ||
| 752 | EVENT_BEGIN(type) \ | ||
| 753 | EventMould.ppuu.p0 = (_p0); \ | ||
| 754 | EventMould.ppuu.p1 = (_p1); \ | ||
| 755 | EventMould.ppuu.u2 = (_u2); \ | ||
| 756 | EventMould.ppuu.u3 = (_u3); \ | ||
| 757 | EVENT_END(type, PPUU, sizeof(EventPPUUStruct)) | ||
| 758 | |||
| 759 | #define EVENT_PPUWWW(type, _p0, _p1, _u2, _w3, _w4, _w5) \ | ||
| 760 | EVENT_BEGIN(type) \ | ||
| 761 | EventMould.ppuwww.p0 = (_p0); \ | ||
| 762 | EventMould.ppuwww.p1 = (_p1); \ | ||
| 763 | EventMould.ppuwww.u2 = (_u2); \ | ||
| 764 | EventMould.ppuwww.w3 = (_w3); \ | ||
| 765 | EventMould.ppuwww.w4 = (_w4); \ | ||
| 766 | EventMould.ppuwww.w5 = (_w5); \ | ||
| 767 | EVENT_END(type, PPUWWW, sizeof(EventPPUWWWStruct)) | ||
| 768 | |||
| 769 | #define EVENT_PPWW(type, _p0, _p1, _w2, _w3) \ | ||
| 770 | EVENT_BEGIN(type) \ | ||
| 771 | EventMould.ppww.p0 = (_p0); \ | ||
| 772 | EventMould.ppww.p1 = (_p1); \ | ||
| 773 | EventMould.ppww.w2 = (_w2); \ | ||
| 774 | EventMould.ppww.w3 = (_w3); \ | ||
| 775 | EVENT_END(type, PPWW, sizeof(EventPPWWStruct)) | ||
| 776 | |||
| 777 | #define EVENT_PPWWW(type, _p0, _p1, _w2, _w3, _w4) \ | ||
| 778 | EVENT_BEGIN(type) \ | ||
| 779 | EventMould.ppwww.p0 = (_p0); \ | ||
| 780 | EventMould.ppwww.p1 = (_p1); \ | ||
| 781 | EventMould.ppwww.w2 = (_w2); \ | ||
| 782 | EventMould.ppwww.w3 = (_w3); \ | ||
| 783 | EventMould.ppwww.w4 = (_w4); \ | ||
| 784 | EVENT_END(type, PPWWW, sizeof(EventPPWWWStruct)) | ||
| 785 | |||
| 786 | #define EVENT_PPWWWUUU(type, _p0, _p1, _w2, _w3, _w4, _u5, _u6, _u7) \ | ||
| 787 | EVENT_BEGIN(type) \ | ||
| 788 | EventMould.ppwwwuuu.p0 = (_p0); \ | ||
| 789 | EventMould.ppwwwuuu.p1 = (_p1); \ | ||
| 790 | EventMould.ppwwwuuu.w2 = (_w2); \ | ||
| 791 | EventMould.ppwwwuuu.w3 = (_w3); \ | ||
| 792 | EventMould.ppwwwuuu.w4 = (_w4); \ | ||
| 793 | EventMould.ppwwwuuu.u5 = (_u5); \ | ||
| 794 | EventMould.ppwwwuuu.u6 = (_u6); \ | ||
| 795 | EventMould.ppwwwuuu.u7 = (_u7); \ | ||
| 796 | EVENT_END(type, PPWWWUUU, sizeof(EventPPWWWUUUStruct)) | ||
| 797 | |||
| 798 | #define EVENT_PU(type, _p0, _u1) \ | ||
| 799 | EVENT_BEGIN(type) \ | ||
| 800 | EventMould.pu.p0 = (_p0); \ | ||
| 801 | EventMould.pu.u1 = (_u1); \ | ||
| 802 | EVENT_END(type, PU, sizeof(EventPUStruct)) | ||
| 803 | |||
| 804 | #define EVENT_PW(type, _p0, _w1) \ | ||
| 805 | EVENT_BEGIN(type) \ | ||
| 806 | EventMould.pw.p0 = (_p0); \ | ||
| 807 | EventMould.pw.w1 = (_w1); \ | ||
| 808 | EVENT_END(type, PW, sizeof(EventPWStruct)) | ||
| 809 | |||
| 810 | #define EVENT_PWA(type, _p0, _w1, _a2) \ | ||
| 811 | EVENT_BEGIN(type) \ | ||
| 812 | EventMould.pwa.p0 = (_p0); \ | ||
| 813 | EventMould.pwa.w1 = (_w1); \ | ||
| 814 | EventMould.pwa.a2 = (_a2); \ | ||
| 815 | EVENT_END(type, PWA, sizeof(EventPWAStruct)) | ||
| 816 | |||
| 817 | #define EVENT_PWAW(type, _p0, _w1, _a2, _w3) \ | ||
| 818 | EVENT_BEGIN(type) \ | ||
| 819 | EventMould.pwaw.p0 = (_p0); \ | ||
| 820 | EventMould.pwaw.w1 = (_w1); \ | ||
| 821 | EventMould.pwaw.a2 = (_a2); \ | ||
| 822 | EventMould.pwaw.w3 = (_w3); \ | ||
| 823 | EVENT_END(type, PWAW, sizeof(EventPWAWStruct)) | ||
| 824 | |||
| 825 | #define EVENT_PWP(type, _p0, _w1, _p2) \ | ||
| 826 | EVENT_BEGIN(type) \ | ||
| 827 | EventMould.pwp.p0 = (_p0); \ | ||
| 828 | EventMould.pwp.w1 = (_w1); \ | ||
| 829 | EventMould.pwp.p2 = (_p2); \ | ||
| 830 | EVENT_END(type, PWP, sizeof(EventPWPStruct)) | ||
| 831 | |||
| 832 | #define EVENT_PWU(type, _p0, _w1, _u2) \ | ||
| 833 | EVENT_BEGIN(type) \ | ||
| 834 | EventMould.pwu.p0 = (_p0); \ | ||
| 835 | EventMould.pwu.w1 = (_w1); \ | ||
| 836 | EventMould.pwu.u2 = (_u2); \ | ||
| 837 | EVENT_END(type, PWU, sizeof(EventPWUStruct)) | ||
| 838 | |||
| 839 | #define EVENT_PWW(type, _p0, _w1, _w2) \ | ||
| 840 | EVENT_BEGIN(type) \ | ||
| 841 | EventMould.pww.p0 = (_p0); \ | ||
| 842 | EventMould.pww.w1 = (_w1); \ | ||
| 843 | EventMould.pww.w2 = (_w2); \ | ||
| 844 | EVENT_END(type, PWW, sizeof(EventPWWStruct)) | ||
| 845 | |||
| 846 | #define EVENT_PWWWWDD(type, _p0, _w1, _w2, _w3, _w4, _d5, _d6) \ | ||
| 847 | EVENT_BEGIN(type) \ | ||
| 848 | EventMould.pwwwwdd.p0 = (_p0); \ | ||
| 849 | EventMould.pwwwwdd.w1 = (_w1); \ | ||
| 850 | EventMould.pwwwwdd.w2 = (_w2); \ | ||
| 851 | EventMould.pwwwwdd.w3 = (_w3); \ | ||
| 852 | EventMould.pwwwwdd.w4 = (_w4); \ | ||
| 853 | EventMould.pwwwwdd.d5 = (_d5); \ | ||
| 854 | EventMould.pwwwwdd.d6 = (_d6); \ | ||
| 855 | EVENT_END(type, PWWWWDD, sizeof(EventPWWWWDDStruct)) | ||
| 856 | |||
| 857 | #define EVENT_PWWWWW(type, _p0, _w1, _w2, _w3, _w4, _w5) \ | ||
| 858 | EVENT_BEGIN(type) \ | ||
| 859 | EventMould.pwwwww.p0 = (_p0); \ | ||
| 860 | EventMould.pwwwww.w1 = (_w1); \ | ||
| 861 | EventMould.pwwwww.w2 = (_w2); \ | ||
| 862 | EventMould.pwwwww.w3 = (_w3); \ | ||
| 863 | EventMould.pwwwww.w4 = (_w4); \ | ||
| 864 | EventMould.pwwwww.w5 = (_w5); \ | ||
| 865 | EVENT_END(type, PWWWWW, sizeof(EventPWWWWWStruct)) | ||
| 866 | |||
| 867 | #define EVENT_PWWWWWWWWW(type, _p0, _w1, _w2, _w3, _w4, _w5, _w6, _w7, _w8, _w9) \ | ||
| 868 | EVENT_BEGIN(type) \ | ||
| 869 | EventMould.pwwwwwwwww.p0 = (_p0); \ | ||
| 870 | EventMould.pwwwwwwwww.w1 = (_w1); \ | ||
| 871 | EventMould.pwwwwwwwww.w2 = (_w2); \ | ||
| 872 | EventMould.pwwwwwwwww.w3 = (_w3); \ | ||
| 873 | EventMould.pwwwwwwwww.w4 = (_w4); \ | ||
| 874 | EventMould.pwwwwwwwww.w5 = (_w5); \ | ||
| 875 | EventMould.pwwwwwwwww.w6 = (_w6); \ | ||
| 876 | EventMould.pwwwwwwwww.w7 = (_w7); \ | ||
| 877 | EventMould.pwwwwwwwww.w8 = (_w8); \ | ||
| 878 | EventMould.pwwwwwwwww.w9 = (_w9); \ | ||
| 879 | EVENT_END(type, PWWWWWWWWW, sizeof(EventPWWWWWWWWWStruct)) | ||
| 880 | |||
| 881 | #define EVENT_PWWWWWWWWWWWW(type, _p0, _w1, _w2, _w3, _w4, _w5, _w6, _w7, _w8, _w9, _w10, _w11, _w12) \ | ||
| 882 | EVENT_BEGIN(type) \ | ||
| 883 | EventMould.pwwwwwwwwwwww.p0 = (_p0); \ | ||
| 884 | EventMould.pwwwwwwwwwwww.w1 = (_w1); \ | ||
| 885 | EventMould.pwwwwwwwwwwww.w2 = (_w2); \ | ||
| 886 | EventMould.pwwwwwwwwwwww.w3 = (_w3); \ | ||
| 887 | EventMould.pwwwwwwwwwwww.w4 = (_w4); \ | ||
| 888 | EventMould.pwwwwwwwwwwww.w5 = (_w5); \ | ||
| 889 | EventMould.pwwwwwwwwwwww.w6 = (_w6); \ | ||
| 890 | EventMould.pwwwwwwwwwwww.w7 = (_w7); \ | ||
| 891 | EventMould.pwwwwwwwwwwww.w8 = (_w8); \ | ||
| 892 | EventMould.pwwwwwwwwwwww.w9 = (_w9); \ | ||
| 893 | EventMould.pwwwwwwwwwwww.w10 = (_w10); \ | ||
| 894 | EventMould.pwwwwwwwwwwww.w11 = (_w11); \ | ||
| 895 | EventMould.pwwwwwwwwwwww.w12 = (_w12); \ | ||
| 896 | EVENT_END(type, PWWWWWWWWWWWW, sizeof(EventPWWWWWWWWWWWWStruct)) | ||
| 897 | |||
| 898 | #define EVENT_UUPA(type, _u0, _u1, _p2, _a3) \ | ||
| 899 | EVENT_BEGIN(type) \ | ||
| 900 | EventMould.uupa.u0 = (_u0); \ | ||
| 901 | EventMould.uupa.u1 = (_u1); \ | ||
| 902 | EventMould.uupa.p2 = (_p2); \ | ||
| 903 | EventMould.uupa.a3 = (_a3); \ | ||
| 904 | EVENT_END(type, UUPA, sizeof(EventUUPAStruct)) | ||
| 905 | |||
| 906 | #define EVENT_UUPP(type, _u0, _u1, _p2, _p3) \ | ||
| 907 | EVENT_BEGIN(type) \ | ||
| 908 | EventMould.uupp.u0 = (_u0); \ | ||
| 909 | EventMould.uupp.u1 = (_u1); \ | ||
| 910 | EventMould.uupp.p2 = (_p2); \ | ||
| 911 | EventMould.uupp.p3 = (_p3); \ | ||
| 912 | EVENT_END(type, UUPP, sizeof(EventUUPPStruct)) | ||
| 913 | |||
| 914 | #define EVENT_UUPPP(type, _u0, _u1, _p2, _p3, _p4) \ | ||
| 915 | EVENT_BEGIN(type) \ | ||
| 916 | EventMould.uuppp.u0 = (_u0); \ | ||
| 917 | EventMould.uuppp.u1 = (_u1); \ | ||
| 918 | EventMould.uuppp.p2 = (_p2); \ | ||
| 919 | EventMould.uuppp.p3 = (_p3); \ | ||
| 920 | EventMould.uuppp.p4 = (_p4); \ | ||
| 921 | EVENT_END(type, UUPPP, sizeof(EventUUPPPStruct)) | ||
| 922 | |||
| 923 | #define EVENT_WS(type, _w0, _l1, _s1) \ | ||
| 924 | EVENT_BEGIN(type) \ | ||
| 925 | size_t _string_len; \ | ||
| 926 | EventMould.ws.w0 = (_w0); \ | ||
| 927 | _string_len = (_l1); \ | ||
| 928 | AVER(_string_len < EventStringLengthMAX); \ | ||
| 929 | EventMould.ws.s1.len = (EventStringLen)_string_len; \ | ||
| 930 | mps_lib_memcpy(EventMould.ws.s1.str, _s1, _string_len); \ | ||
| 931 | EVENT_END(type, WS, offsetof(EventWSStruct, s1.str) + _string_len) | ||
| 932 | |||
| 933 | #define EventFormat0 0 | ||
| 934 | #define EventFormatA 1 | ||
| 935 | #define EventFormatAW 2 | ||
| 936 | #define EventFormatP 3 | ||
| 937 | #define EventFormatPAA 4 | ||
| 938 | #define EventFormatPAW 5 | ||
| 939 | #define EventFormatPAWA 6 | ||
| 940 | #define EventFormatPDDWWW 7 | ||
| 941 | #define EventFormatPP 8 | ||
| 942 | #define EventFormatPPAU 9 | ||
| 943 | #define EventFormatPPAWP 10 | ||
| 944 | #define EventFormatPPP 11 | ||
| 945 | #define EventFormatPPPA 12 | ||
| 946 | #define EventFormatPPPU 13 | ||
| 947 | #define EventFormatPPPUU 14 | ||
| 948 | #define EventFormatPPU 15 | ||
| 949 | #define EventFormatPPUU 16 | ||
| 950 | #define EventFormatPPUWWW 17 | ||
| 951 | #define EventFormatPPWW 18 | ||
| 952 | #define EventFormatPPWWW 19 | ||
| 953 | #define EventFormatPPWWWUUU 20 | ||
| 954 | #define EventFormatPU 21 | ||
| 955 | #define EventFormatPW 22 | ||
| 956 | #define EventFormatPWA 23 | ||
| 957 | #define EventFormatPWAW 24 | ||
| 958 | #define EventFormatPWP 25 | ||
| 959 | #define EventFormatPWU 26 | ||
| 960 | #define EventFormatPWW 27 | ||
| 961 | #define EventFormatPWWWWDD 28 | ||
| 962 | #define EventFormatPWWWWW 29 | ||
| 963 | #define EventFormatPWWWWWWWWW 30 | ||
| 964 | #define EventFormatPWWWWWWWWWWWW 31 | ||
| 965 | #define EventFormatUUPA 32 | ||
| 966 | #define EventFormatUUPP 33 | ||
| 967 | #define EventFormatUUPPP 34 | ||
| 968 | #define EventFormatWS 35 | ||
| 969 | 824 | ||
| 970 | #else /* EVENT not */ | 825 | /* |
| 826 | for i in range(1,20): print "#define EVENT%d(name, %s) NOOP" % (i, ", ".join(["p%d" % j for j in range(0, i)])) | ||
| 827 | */ | ||
| 971 | 828 | ||
| 972 | #define EVENT_0(type) NOOP | 829 | #define EVENT1(name, p0) NOOP |
| 973 | #define EVENT_A(type, p0) NOOP | 830 | #define EVENT2(name, p0, p1) NOOP |
| 974 | #define EVENT_AW(type, p0, p1) NOOP | 831 | #define EVENT3(name, p0, p1, p2) NOOP |
| 975 | #define EVENT_P(type, p0) NOOP | 832 | #define EVENT4(name, p0, p1, p2, p3) NOOP |
| 976 | #define EVENT_PAA(type, p0, p1, p2) NOOP | 833 | #define EVENT5(name, p0, p1, p2, p3, p4) NOOP |
| 977 | #define EVENT_PAW(type, p0, p1, p2) NOOP | 834 | #define EVENT6(name, p0, p1, p2, p3, p4, p5) NOOP |
| 978 | #define EVENT_PAWA(type, p0, p1, p2, p3) NOOP | 835 | #define EVENT7(name, p0, p1, p2, p3, p4, p5, p6) NOOP |
| 979 | #define EVENT_PDDWWW(type, p0, p1, p2, p3, p4, p5) NOOP | 836 | #define EVENT8(name, p0, p1, p2, p3, p4, p5, p6, p7) NOOP |
| 980 | #define EVENT_PP(type, p0, p1) NOOP | 837 | #define EVENT9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8) NOOP |
| 981 | #define EVENT_PPAU(type, p0, p1, p2, p3) NOOP | 838 | #define EVENT10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) NOOP |
| 982 | #define EVENT_PPAWP(type, p0, p1, p2, p3, p4) NOOP | 839 | #define EVENT11(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) NOOP |
| 983 | #define EVENT_PPP(type, p0, p1, p2) NOOP | 840 | #define EVENT12(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) NOOP |
| 984 | #define EVENT_PPPA(type, p0, p1, p2, p3) NOOP | 841 | #define EVENT13(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) NOOP |
| 985 | #define EVENT_PPPU(type, p0, p1, p2, p3) NOOP | 842 | #define EVENT14(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) NOOP |
| 986 | #define EVENT_PPPUU(type, p0, p1, p2, p3, p4) NOOP | 843 | #define EVENT15(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) NOOP |
| 987 | #define EVENT_PPU(type, p0, p1, p2) NOOP | 844 | #define EVENT16(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) NOOP |
| 988 | #define EVENT_PPUU(type, p0, p1, p2, p3) NOOP | 845 | #define EVENT17(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) NOOP |
| 989 | #define EVENT_PPUWWW(type, p0, p1, p2, p3, p4, p5) NOOP | 846 | #define EVENT18(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17) NOOP |
| 990 | #define EVENT_PPWW(type, p0, p1, p2, p3) NOOP | 847 | #define EVENT19(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) NOOP |
| 991 | #define EVENT_PPWWW(type, p0, p1, p2, p3, p4) NOOP | ||
| 992 | #define EVENT_PPWWWUUU(type, p0, p1, p2, p3, p4, p5, p6, p7) NOOP | ||
| 993 | #define EVENT_PU(type, p0, p1) NOOP | ||
| 994 | #define EVENT_PW(type, p0, p1) NOOP | ||
| 995 | #define EVENT_PWA(type, p0, p1, p2) NOOP | ||
| 996 | #define EVENT_PWAW(type, p0, p1, p2, p3) NOOP | ||
| 997 | #define EVENT_PWP(type, p0, p1, p2) NOOP | ||
| 998 | #define EVENT_PWU(type, p0, p1, p2) NOOP | ||
| 999 | #define EVENT_PWW(type, p0, p1, p2) NOOP | ||
| 1000 | #define EVENT_PWWWWDD(type, p0, p1, p2, p3, p4, p5, p6) NOOP | ||
| 1001 | #define EVENT_PWWWWW(type, p0, p1, p2, p3, p4, p5) NOOP | ||
| 1002 | #define EVENT_PWWWWWWWWW(type, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) NOOP | ||
| 1003 | #define EVENT_PWWWWWWWWWWWW(type, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) NOOP | ||
| 1004 | #define EVENT_UUPA(type, p0, p1, p2, p3) NOOP | ||
| 1005 | #define EVENT_UUPP(type, p0, p1, p2, p3) NOOP | ||
| 1006 | #define EVENT_UUPPP(type, p0, p1, p2, p3, p4) NOOP | ||
| 1007 | #define EVENT_WS(type, p0, p1, l1) NOOP | ||
| 1008 | 848 | ||
| 1009 | #endif /* EVENT */ | 849 | #endif /* EVENT */ |
| 1010 | 850 | ||
diff --git a/mps/code/eventgen.pl b/mps/code/eventgen.pl deleted file mode 100644 index 48fba15f9af..00000000000 --- a/mps/code/eventgen.pl +++ /dev/null | |||
| @@ -1,220 +0,0 @@ | |||
| 1 | #!/usr/local/bin/perl -w | ||
| 2 | # impl.pl.eventgen: GENERATOR FOR <code/eventgen.h> | ||
| 3 | # | ||
| 4 | # $Id$ | ||
| 5 | # Copyright (c) 2001 Ravenbrook Limited. See end of file for license. | ||
| 6 | # | ||
| 7 | # .how: Invoke this script in the src directory. It works by scanning | ||
| 8 | # eventdef.h and then creating a file eventgen.h that includes the | ||
| 9 | # necessary types and macros. | ||
| 10 | # | ||
| 11 | # You will need to have eventgen.h claimed, and you should | ||
| 12 | # remember to check it in afterwards. | ||
| 13 | |||
| 14 | $ID = substr(q$Id$, 4, -1); | ||
| 15 | |||
| 16 | %Formats = (); | ||
| 17 | |||
| 18 | %Types = ( | ||
| 19 | "D", "double", | ||
| 20 | "S", "EventStringStruct", | ||
| 21 | "U", "unsigned", | ||
| 22 | "W", "Word", | ||
| 23 | "A", "Addr", | ||
| 24 | "P", "void *", | ||
| 25 | ); | ||
| 26 | |||
| 27 | |||
| 28 | #### Discover formats | ||
| 29 | |||
| 30 | |||
| 31 | open(C, "<eventdef.h") || die "Can't open $_"; | ||
| 32 | while(<C>) { | ||
| 33 | if(/EVENT\(X,[^,]*,[^,]*,[^,]*,[^,]*, ([A-Z]+)\)/) { | ||
| 34 | $Formats{$1} = 1 if(!defined($Formats{$1})); | ||
| 35 | } | ||
| 36 | } | ||
| 37 | close(C); | ||
| 38 | |||
| 39 | |||
| 40 | #### Generate eventgen.h | ||
| 41 | |||
| 42 | |||
| 43 | open(H, ">eventgen.h") || die "Can't open eventgen.h for output"; | ||
| 44 | |||
| 45 | print H "/* <code/eventgen.h> -- Automatic event header | ||
| 46 | * | ||
| 47 | * \$Id\$ | ||
| 48 | * Copyright (c) 2001 Ravenbrook Limited. See end of file for license. | ||
| 49 | * | ||
| 50 | * DO NOT EDIT THIS FILE! | ||
| 51 | * This file was generated by $ID | ||
| 52 | */\n\n"; | ||
| 53 | |||
| 54 | |||
| 55 | print H "#ifdef EVENT\n\n"; | ||
| 56 | |||
| 57 | |||
| 58 | #### Generate structure definitions and accessors | ||
| 59 | |||
| 60 | |||
| 61 | foreach $format ("", sort(keys(%Formats))) { | ||
| 62 | $fmt = ($format eq "") ? "0" : $format; | ||
| 63 | print H "typedef struct {\n"; | ||
| 64 | print H " Word code;\n Word clock;\n"; | ||
| 65 | for($i = 0; $i < length($format); $i++) { | ||
| 66 | $c = substr($format, $i, 1); | ||
| 67 | if($c eq "S") { | ||
| 68 | die "String must be at end of format" if($i+1 != length($format)); | ||
| 69 | } | ||
| 70 | if(!defined($Types{$c})) { | ||
| 71 | die "Can't find type for format code >$c<."; | ||
| 72 | } else { | ||
| 73 | print H " ", $Types{$c}, " \l$c$i;\n"; | ||
| 74 | } | ||
| 75 | } | ||
| 76 | print H "} Event${fmt}Struct;\n\n"; | ||
| 77 | |||
| 78 | print H "#define EVENT_${fmt}_FIELD_PTR(event, i) \\\n ("; | ||
| 79 | for($i = 0; $i < length($format); $i++) { | ||
| 80 | $c = substr($format, $i, 1); | ||
| 81 | print H "((i) == $i) ? (void *)&((event)->\L$fmt.$c\E$i) \\\n : "; | ||
| 82 | } | ||
| 83 | print H "NULL)\n\n"; | ||
| 84 | } | ||
| 85 | |||
| 86 | |||
| 87 | #### Generate union type | ||
| 88 | |||
| 89 | |||
| 90 | print H "\ntypedef union {\n Event0Struct any;\n"; | ||
| 91 | |||
| 92 | foreach $format (sort(keys(%Formats))) { | ||
| 93 | print H " Event${format}Struct \L$format;\n"; | ||
| 94 | } | ||
| 95 | print H "} EventUnion;\n\n\n"; | ||
| 96 | |||
| 97 | |||
| 98 | #### Generate writer macros | ||
| 99 | |||
| 100 | |||
| 101 | foreach $format ("", sort(keys(%Formats))) { | ||
| 102 | $fmt = ($format eq "") ? "0" : $format; | ||
| 103 | |||
| 104 | print H "#define EVENT_$fmt(type"; | ||
| 105 | for($i = 0; $i < length($format); $i++) { | ||
| 106 | $c = substr($format, $i, 1); | ||
| 107 | if($c eq "S") { | ||
| 108 | print H ", _l$i, _s$i"; | ||
| 109 | } else { | ||
| 110 | print H ", _\l$c$i"; | ||
| 111 | } | ||
| 112 | } | ||
| 113 | print H ") \\\n"; | ||
| 114 | |||
| 115 | print H " EVENT_BEGIN(type) \\\n"; | ||
| 116 | |||
| 117 | if(($i = index($format, "S")) != -1) { | ||
| 118 | print H " size_t _string_len; \\\n"; | ||
| 119 | } | ||
| 120 | |||
| 121 | for($i = 0; $i < length($format); $i++) { | ||
| 122 | $c = substr($format, $i, 1); | ||
| 123 | if($c eq "S") { | ||
| 124 | print H " _string_len = (_l$i); \\\n"; | ||
| 125 | print H " AVER(_string_len < EventStringLengthMAX); \\\n"; | ||
| 126 | print H " EventMould.\L$fmt.s$i.len = " | ||
| 127 | . "(EventStringLen)_string_len; \\\n"; | ||
| 128 | print H " mps_lib_memcpy(EventMould.\L$fmt.s$i.str, " | ||
| 129 | . "_s$i, _string_len); \\\n"; | ||
| 130 | } else { | ||
| 131 | print H " EventMould.\L$fmt.$c$i = (_$c$i); \\\n"; | ||
| 132 | } | ||
| 133 | } | ||
| 134 | |||
| 135 | if(($i = index($format, "S")) != -1) { | ||
| 136 | print H " EVENT_END(type, $fmt, " | ||
| 137 | . "offsetof(Event${fmt}Struct, s$i.str) " | ||
| 138 | . "+ _string_len)\n\n"; | ||
| 139 | } else { | ||
| 140 | print H " EVENT_END(type, $fmt, " | ||
| 141 | . "sizeof(Event${fmt}Struct))\n\n"; | ||
| 142 | } | ||
| 143 | } | ||
| 144 | |||
| 145 | |||
| 146 | #### Generate format codes | ||
| 147 | |||
| 148 | |||
| 149 | $C = 0; | ||
| 150 | foreach $format ("0", sort(keys(%Formats))) { | ||
| 151 | print H "#define EventFormat$format $C\n"; | ||
| 152 | $C++; | ||
| 153 | } | ||
| 154 | |||
| 155 | |||
| 156 | #### Generate dummies for non-event varieties | ||
| 157 | |||
| 158 | |||
| 159 | print H "\n#else /* EVENT not */\n\n"; | ||
| 160 | |||
| 161 | |||
| 162 | print H "#define EVENT_0(type) NOOP\n"; | ||
| 163 | |||
| 164 | foreach $format (sort(keys(%Formats))) { | ||
| 165 | print H "#define EVENT_$format(type"; | ||
| 166 | for($i = 0; $i < length($format); $i++) { | ||
| 167 | print H ", p$i"; | ||
| 168 | } | ||
| 169 | if(($i = index($format, "S")) != -1) { | ||
| 170 | print H ", l$i"; | ||
| 171 | } | ||
| 172 | print H ") NOOP\n"; | ||
| 173 | } | ||
| 174 | |||
| 175 | |||
| 176 | print H "\n#endif /* EVENT */\n"; | ||
| 177 | |||
| 178 | |||
| 179 | close(H); | ||
| 180 | |||
| 181 | |||
| 182 | # C. COPYRIGHT AND LICENSE | ||
| 183 | # | ||
| 184 | # Copyright (C) 2001-2002 Ravenbrook Limited <http://www.ravenbrook.com/>. | ||
| 185 | # All rights reserved. This is an open source license. Contact | ||
| 186 | # Ravenbrook for commercial licensing options. | ||
| 187 | # | ||
| 188 | # Redistribution and use in source and binary forms, with or without | ||
| 189 | # modification, are permitted provided that the following conditions are | ||
| 190 | # met: | ||
| 191 | # | ||
| 192 | # 1. Redistributions of source code must retain the above copyright | ||
| 193 | # notice, this list of conditions and the following disclaimer. | ||
| 194 | # | ||
| 195 | # 2. Redistributions in binary form must reproduce the above copyright | ||
| 196 | # notice, this list of conditions and the following disclaimer in the | ||
| 197 | # documentation and/or other materials provided with the distribution. | ||
| 198 | # | ||
| 199 | # 3. Redistributions in any form must be accompanied by information on how | ||
| 200 | # to obtain complete source code for this software and any accompanying | ||
| 201 | # software that uses this software. The source code must either be | ||
| 202 | # included in the distribution or be available for no more than the cost | ||
| 203 | # of distribution plus a nominal fee, and must be freely redistributable | ||
| 204 | # under reasonable conditions. For an executable file, complete source | ||
| 205 | # code means the source code for all modules it contains. It does not | ||
| 206 | # include source code for modules or files that typically accompany the | ||
| 207 | # major components of the operating system on which the executable file | ||
| 208 | # runs. | ||
| 209 | # | ||
| 210 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS | ||
| 211 | # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| 212 | # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR | ||
| 213 | # PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
| 214 | # COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 215 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 216 | # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
| 217 | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
| 218 | # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| 219 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
| 220 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
diff --git a/mps/code/eventpro.c b/mps/code/eventpro.c index b9926034632..1c1e498fc10 100644 --- a/mps/code/eventpro.c +++ b/mps/code/eventpro.c | |||
| @@ -58,7 +58,9 @@ struct EventProcStruct { | |||
| 58 | * of the structure. This has to agree with the writing (EVENT_END). | 58 | * of the structure. This has to agree with the writing (EVENT_END). |
| 59 | */ | 59 | */ |
| 60 | 60 | ||
| 61 | #define EventSizeAlign(size) sizeAlignUp(size, sizeof(Word)) | 61 | /* FIXME: MPS_PF_ALIGN should be read from event file header? */ |
| 62 | |||
| 63 | #define EventSizeAlign(size) sizeAlignUp(size, MPS_PF_ALIGN) | ||
| 62 | 64 | ||
| 63 | 65 | ||
| 64 | 66 | ||
| @@ -75,11 +77,33 @@ typedef struct { | |||
| 75 | char *format; | 77 | char *format; |
| 76 | } eventRecord; | 78 | } eventRecord; |
| 77 | 79 | ||
| 80 | #define EVENT0_FORMAT() "" | ||
| 81 | /* for i in range(1,20): print "#define EVENT%d_FORMAT(%s) %s" % (i, ", ".join(["p%d" % j for j in range(0, i)]), " ".join(["#p%d" % j for j in range(0, i)])) */ | ||
| 82 | #define EVENT1_FORMAT(p0) #p0 | ||
| 83 | #define EVENT2_FORMAT(p0, p1) #p0 #p1 | ||
| 84 | #define EVENT3_FORMAT(p0, p1, p2) #p0 #p1 #p2 | ||
| 85 | #define EVENT4_FORMAT(p0, p1, p2, p3) #p0 #p1 #p2 #p3 | ||
| 86 | #define EVENT5_FORMAT(p0, p1, p2, p3, p4) #p0 #p1 #p2 #p3 #p4 | ||
| 87 | #define EVENT6_FORMAT(p0, p1, p2, p3, p4, p5) #p0 #p1 #p2 #p3 #p4 #p5 | ||
| 88 | #define EVENT7_FORMAT(p0, p1, p2, p3, p4, p5, p6) #p0 #p1 #p2 #p3 #p4 #p5 #p6 | ||
| 89 | #define EVENT8_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 | ||
| 90 | #define EVENT9_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 | ||
| 91 | #define EVENT10_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 | ||
| 92 | #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 | ||
| 93 | #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 | ||
| 94 | #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 | ||
| 95 | #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 | ||
| 96 | #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 | ||
| 97 | #define EVENT16_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10 #p11 #p12 #p13 #p14 #p15 | ||
| 98 | #define EVENT17_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10 #p11 #p12 #p13 #p14 #p15 #p16 | ||
| 99 | #define EVENT18_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10 #p11 #p12 #p13 #p14 #p15 #p16 #p17 | ||
| 100 | #define EVENT19_FORMAT(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) #p0 #p1 #p2 #p3 #p4 #p5 #p6 #p7 #p8 #p9 #p10 #p11 #p12 #p13 #p14 #p15 #p16 #p17 #p18 | ||
| 101 | |||
| 78 | static eventRecord eventTypes[] = { | 102 | static eventRecord eventTypes[] = { |
| 79 | {0, "(unused)", 0, 0, "0"}, | 103 | {0, "(unused)", 0, 0, "0"}, |
| 80 | #define EVENT_INIT(X, name, code, always, kind, format) \ | 104 | #define EVENT_INIT(X, name, code, always, kind, count, format) \ |
| 81 | {Event##name, #name, code, \ | 105 | {Event##name, #name, code, \ |
| 82 | EventSizeAlign(sizeof(Event##format##Struct)), #format}, | 106 | EventSizeAlign(sizeof(Event##name##Struct)), EVENT##count##_FORMAT format}, |
| 83 | EVENT_LIST(EVENT_INIT, X) | 107 | EVENT_LIST(EVENT_INIT, X) |
| 84 | }; | 108 | }; |
| 85 | 109 | ||
| @@ -246,7 +270,7 @@ EventString LabelText(EventProc proc, Word id) | |||
| 246 | 270 | ||
| 247 | /* EventRead -- read one event from the file and allocate descriptor */ | 271 | /* EventRead -- read one event from the file and allocate descriptor */ |
| 248 | 272 | ||
| 249 | #define internStrOffset (offsetof(EventWSStruct, s1.str)) | 273 | #define internStrOffset (offsetof(EventInternStruct, f1.str)) |
| 250 | 274 | ||
| 251 | Res EventRead(Event *eventReturn, EventProc proc) | 275 | Res EventRead(Event *eventReturn, EventProc proc) |
| 252 | { | 276 | { |
| @@ -278,9 +302,9 @@ Res EventRead(Event *eventReturn, EventProc proc) | |||
| 278 | internStrOffset - sizeof(EventType)); | 302 | internStrOffset - sizeof(EventType)); |
| 279 | if (res != ResOK) return res; | 303 | if (res != ResOK) return res; |
| 280 | /* read the rest */ | 304 | /* read the rest */ |
| 281 | res = proc->reader(proc->readerP, &(event->ws.s1.str), | 305 | res = proc->reader(proc->readerP, &event->Intern.f1.str, |
| 282 | /* Length must agree with EVENT_WS. */ | 306 | /* Length must agree with EVENT_WS. */ |
| 283 | EventSizeAlign(internStrOffset + event->ws.s1.len) | 307 | EventSizeAlign(internStrOffset + event->Intern.f1.len) |
| 284 | - internStrOffset); | 308 | - internStrOffset); |
| 285 | if (res != ResOK) return res; | 309 | if (res != ResOK) return res; |
| 286 | } else { | 310 | } else { |
| @@ -308,8 +332,8 @@ Res EventRecord(EventProc proc, Event event, Word etime) | |||
| 308 | Symbol sym = malloc(sizeof(symbolStruct)); | 332 | Symbol sym = malloc(sizeof(symbolStruct)); |
| 309 | 333 | ||
| 310 | if (sym == NULL) return ResMEMORY; | 334 | if (sym == NULL) return ResMEMORY; |
| 311 | sym->id = event->ws.w0; | 335 | sym->id = event->Intern.f0; |
| 312 | res = eventStringCopy(&(sym->name), &(event->ws.s1)); | 336 | res = eventStringCopy(&sym->name, &event->Intern.f1); |
| 313 | if (res != ResOK) { | 337 | if (res != ResOK) { |
| 314 | free(sym); | 338 | free(sym); |
| 315 | return res; | 339 | return res; |
| @@ -321,12 +345,12 @@ Res EventRecord(EventProc proc, Event event, Word etime) | |||
| 321 | void *entry; | 345 | void *entry; |
| 322 | 346 | ||
| 323 | if (label == NULL) return ResMEMORY; | 347 | if (label == NULL) return ResMEMORY; |
| 324 | label->id = event->aw.w1; | 348 | label->id = event->Label.f1; |
| 325 | if (!proc->partialLog) { | 349 | if (!proc->partialLog) { |
| 326 | assert(TableLookup(&entry, proc->internTable, label->id)); | 350 | assert(TableLookup(&entry, proc->internTable, label->id)); |
| 327 | } | 351 | } |
| 328 | label->time = etime; | 352 | label->time = etime; |
| 329 | label->addr = event->aw.a0; | 353 | label->addr = event->Label.f0; |
| 330 | if (TableLookup(&entry, proc->labelTable, (Word)label->addr)) | 354 | if (TableLookup(&entry, proc->labelTable, (Word)label->addr)) |
| 331 | res = TableRedefine(proc->labelTable, (Word)label->addr, label); | 355 | res = TableRedefine(proc->labelTable, (Word)label->addr, label); |
| 332 | else | 356 | else |
| @@ -383,8 +407,8 @@ Res EventProcCreate(EventProc *procReturn, Bool partial, | |||
| 383 | if (proc == NULL) return ResMEMORY; | 407 | if (proc == NULL) return ResMEMORY; |
| 384 | 408 | ||
| 385 | /* check event struct access */ | 409 | /* check event struct access */ |
| 386 | assert(CHECKFIELD(EventUnion, any.code, EventWSStruct, code)); | 410 | assert(CHECKFIELD(EventUnion, any.code, EventInternStruct, code)); |
| 387 | assert(CHECKFIELD(EventUnion, any.clock, EventWSStruct, clock)); | 411 | assert(CHECKFIELD(EventUnion, any.clock, EventInternStruct, clock)); |
| 388 | /* check use of labelTable */ | 412 | /* check use of labelTable */ |
| 389 | #if !defined(MPS_OS_FR) | 413 | #if !defined(MPS_OS_FR) |
| 390 | /* GCC -ansi -pedantic -Werror on FreeBSD will fail here | 414 | /* GCC -ansi -pedantic -Werror on FreeBSD will fail here |
diff --git a/mps/code/global.c b/mps/code/global.c index ede40309f4a..9f06af73cca 100644 --- a/mps/code/global.c +++ b/mps/code/global.c | |||
| @@ -370,7 +370,7 @@ void GlobalsFinish(Globals arenaGlobals) | |||
| 370 | AVERT(Globals, arenaGlobals); | 370 | AVERT(Globals, arenaGlobals); |
| 371 | arena = GlobalsArena(arenaGlobals); | 371 | arena = GlobalsArena(arenaGlobals); |
| 372 | 372 | ||
| 373 | STATISTIC_STAT(EVENT_PW(ArenaWriteFaults, arena, | 373 | STATISTIC_STAT(EVENT2(ArenaWriteFaults, arena, |
| 374 | arena->writeBarrierHitCount)); | 374 | arena->writeBarrierHitCount)); |
| 375 | 375 | ||
| 376 | arenaGlobals->sig = SigInvalid; | 376 | arenaGlobals->sig = SigInvalid; |
diff --git a/mps/code/meter.c b/mps/code/meter.c index a5369091eb4..48f7abeb425 100644 --- a/mps/code/meter.c +++ b/mps/code/meter.c | |||
| @@ -31,7 +31,7 @@ void MeterInit(Meter meter, char *name, void *owner) | |||
| 31 | 31 | ||
| 32 | sym = EventInternString(name); | 32 | sym = EventInternString(name); |
| 33 | EventLabelAddr((Addr)meter, sym); /* see .trans.label */ | 33 | EventLabelAddr((Addr)meter, sym); /* see .trans.label */ |
| 34 | EVENT_PP(MeterInit, meter, owner); | 34 | EVENT2(MeterInit, meter, owner); |
| 35 | UNUSED(owner); /* @@@@ hack */ | 35 | UNUSED(owner); /* @@@@ hack */ |
| 36 | } | 36 | } |
| 37 | 37 | ||
| @@ -98,7 +98,7 @@ Res MeterWrite(Meter meter, mps_lib_FILE *stream) | |||
| 98 | 98 | ||
| 99 | void MeterEmit(Meter meter) | 99 | void MeterEmit(Meter meter) |
| 100 | { | 100 | { |
| 101 | EVENT_PDDWWW(MeterValues, meter, meter->total, meter->meanSquared, | 101 | EVENT6(MeterValues, meter, meter->total, meter->meanSquared, |
| 102 | meter->count, meter->max, meter->min); | 102 | meter->count, meter->max, meter->min); |
| 103 | UNUSED(meter); /* @@@@ hack */ | 103 | UNUSED(meter); /* @@@@ hack */ |
| 104 | } | 104 | } |
diff --git a/mps/code/pool.c b/mps/code/pool.c index e2578cf3497..14c687bbdf7 100644 --- a/mps/code/pool.c +++ b/mps/code/pool.c | |||
| @@ -250,7 +250,7 @@ void PoolFinish(Pool pool) | |||
| 250 | RingFinish(&pool->bufferRing); | 250 | RingFinish(&pool->bufferRing); |
| 251 | RingFinish(&pool->arenaRing); | 251 | RingFinish(&pool->arenaRing); |
| 252 | 252 | ||
| 253 | EVENT_P(PoolFinish, pool); | 253 | EVENT1(PoolFinish, pool); |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | 256 | ||
| @@ -311,7 +311,7 @@ Res PoolAlloc(Addr *pReturn, Pool pool, Size size, | |||
| 311 | pool->fillMutatorSize += size; | 311 | pool->fillMutatorSize += size; |
| 312 | ArenaGlobals(PoolArena(pool))->fillMutatorSize += size; | 312 | ArenaGlobals(PoolArena(pool))->fillMutatorSize += size; |
| 313 | 313 | ||
| 314 | EVENT_PAW(PoolAlloc, pool, *pReturn, size); | 314 | EVENT3(PoolAlloc, pool, *pReturn, size); |
| 315 | 315 | ||
| 316 | return ResOK; | 316 | return ResOK; |
| 317 | } | 317 | } |
| @@ -328,7 +328,7 @@ void PoolFree(Pool pool, Addr old, Size size) | |||
| 328 | AVER(size > 0); | 328 | AVER(size > 0); |
| 329 | (*pool->class->free)(pool, old, size); | 329 | (*pool->class->free)(pool, old, size); |
| 330 | 330 | ||
| 331 | EVENT_PAW(PoolFree, pool, old, size); | 331 | EVENT3(PoolFree, pool, old, size); |
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | 334 | ||
diff --git a/mps/code/poolamc.c b/mps/code/poolamc.c index bea60caa03e..52f7b85e027 100644 --- a/mps/code/poolamc.c +++ b/mps/code/poolamc.c | |||
| @@ -705,7 +705,7 @@ static Res amcGenCreate(amcGen *genReturn, AMC amc, Serial genNr) | |||
| 705 | AVERT(amcGen, gen); | 705 | AVERT(amcGen, gen); |
| 706 | 706 | ||
| 707 | RingAppend(&amc->genRing, &gen->amcRing); | 707 | RingAppend(&amc->genRing, &gen->amcRing); |
| 708 | EVENT_PP(AMCGenCreate, amc, gen); | 708 | EVENT2(AMCGenCreate, amc, gen); |
| 709 | *genReturn = gen; | 709 | *genReturn = gen; |
| 710 | return ResOK; | 710 | return ResOK; |
| 711 | 711 | ||
| @@ -728,7 +728,7 @@ static void amcGenDestroy(amcGen gen) | |||
| 728 | AVER(gen->segs == 0); | 728 | AVER(gen->segs == 0); |
| 729 | AVER(gen->pgen.totalSize == 0); | 729 | AVER(gen->pgen.totalSize == 0); |
| 730 | 730 | ||
| 731 | EVENT_P(AMCGenDestroy, gen); | 731 | EVENT1(AMCGenDestroy, gen); |
| 732 | arena = PoolArena(amcGenPool(gen)); | 732 | arena = PoolArena(amcGenPool(gen)); |
| 733 | gen->sig = SigInvalid; | 733 | gen->sig = SigInvalid; |
| 734 | RingRemove(&gen->amcRing); | 734 | RingRemove(&gen->amcRing); |
| @@ -1011,11 +1011,11 @@ static Res amcInitComm(Pool pool, RankSet rankSet, va_list arg) | |||
| 1011 | amc->gensBooted = TRUE; | 1011 | amc->gensBooted = TRUE; |
| 1012 | 1012 | ||
| 1013 | AVERT(AMC, amc); | 1013 | AVERT(AMC, amc); |
| 1014 | EVENT_PP(AMCInit, pool, amc); | 1014 | EVENT2(AMCInit, pool, amc); |
| 1015 | if(rankSet == RankSetEMPTY) | 1015 | if(rankSet == RankSetEMPTY) |
| 1016 | EVENT_PP(PoolInitAMCZ, pool, pool->format); | 1016 | EVENT2(PoolInitAMCZ, pool, pool->format); |
| 1017 | else | 1017 | else |
| 1018 | EVENT_PP(PoolInitAMC, pool, pool->format); | 1018 | EVENT2(PoolInitAMC, pool, pool->format); |
| 1019 | return ResOK; | 1019 | return ResOK; |
| 1020 | 1020 | ||
| 1021 | failGenAlloc: | 1021 | failGenAlloc: |
| @@ -1053,7 +1053,7 @@ static void AMCFinish(Pool pool) | |||
| 1053 | amc = Pool2AMC(pool); | 1053 | amc = Pool2AMC(pool); |
| 1054 | AVERT(AMC, amc); | 1054 | AVERT(AMC, amc); |
| 1055 | 1055 | ||
| 1056 | EVENT_P(AMCFinish, amc); | 1056 | EVENT1(AMCFinish, amc); |
| 1057 | 1057 | ||
| 1058 | /* @@@@ Make sure that segments aren't buffered by forwarding */ | 1058 | /* @@@@ Make sure that segments aren't buffered by forwarding */ |
| 1059 | /* buffers. This is a hack which allows the pool to be destroyed */ | 1059 | /* buffers. This is a hack which allows the pool to be destroyed */ |
| @@ -1436,7 +1436,7 @@ static Res amcScanNailedOnce(Bool *totalReturn, Bool *moreReturn, | |||
| 1436 | 1436 | ||
| 1437 | UNUSED(amc); /* Actually only unused when telemetry is off. @@@@ */ | 1437 | UNUSED(amc); /* Actually only unused when telemetry is off. @@@@ */ |
| 1438 | 1438 | ||
| 1439 | EVENT_PPP(AMCScanBegin, amc, seg, ss); /* @@@@ use own event */ | 1439 | EVENT3(AMCScanBegin, amc, seg, ss); /* @@@@ use own event */ |
| 1440 | 1440 | ||
| 1441 | format = pool->format; | 1441 | format = pool->format; |
| 1442 | amcSegNailboard(seg)->newMarks = FALSE; | 1442 | amcSegNailboard(seg)->newMarks = FALSE; |
| @@ -1491,7 +1491,7 @@ static Res amcScanNailedOnce(Bool *totalReturn, Bool *moreReturn, | |||
| 1491 | AVER(p == limit); | 1491 | AVER(p == limit); |
| 1492 | 1492 | ||
| 1493 | returnGood: | 1493 | returnGood: |
| 1494 | EVENT_PPP(AMCScanEnd, amc, seg, ss); /* @@@@ use own event */ | 1494 | EVENT3(AMCScanEnd, amc, seg, ss); /* @@@@ use own event */ |
| 1495 | 1495 | ||
| 1496 | AVER(bytesScanned <= SegSize(seg)); | 1496 | AVER(bytesScanned <= SegSize(seg)); |
| 1497 | ss->scannedSize += bytesScanned; | 1497 | ss->scannedSize += bytesScanned; |
| @@ -1601,7 +1601,7 @@ static Res AMCScan(Bool *totalReturn, ScanState ss, Pool pool, Seg seg) | |||
| 1601 | return amcScanNailed(totalReturn, ss, pool, seg, amc); | 1601 | return amcScanNailed(totalReturn, ss, pool, seg, amc); |
| 1602 | } | 1602 | } |
| 1603 | 1603 | ||
| 1604 | EVENT_PPP(AMCScanBegin, amc, seg, ss); | 1604 | EVENT3(AMCScanBegin, amc, seg, ss); |
| 1605 | 1605 | ||
| 1606 | base = AddrAdd(SegBase(seg), format->headerSize); | 1606 | base = AddrAdd(SegBase(seg), format->headerSize); |
| 1607 | /* <design/poolamc/#seg-scan.loop> */ | 1607 | /* <design/poolamc/#seg-scan.loop> */ |
| @@ -1637,7 +1637,7 @@ static Res AMCScan(Bool *totalReturn, ScanState ss, Pool pool, Seg seg) | |||
| 1637 | } | 1637 | } |
| 1638 | 1638 | ||
| 1639 | ss->scannedSize += AddrOffset(base, limit); | 1639 | ss->scannedSize += AddrOffset(base, limit); |
| 1640 | EVENT_PPP(AMCScanEnd, amc, seg, ss); | 1640 | EVENT3(AMCScanEnd, amc, seg, ss); |
| 1641 | 1641 | ||
| 1642 | *totalReturn = TRUE; | 1642 | *totalReturn = TRUE; |
| 1643 | return ResOK; | 1643 | return ResOK; |
| @@ -1666,7 +1666,7 @@ static void amcFixInPlace(Pool pool, Seg seg, ScanState ss, Ref *refIO) | |||
| 1666 | /* segment. */ | 1666 | /* segment. */ |
| 1667 | AVER(ref < SegLimit(seg)); | 1667 | AVER(ref < SegLimit(seg)); |
| 1668 | 1668 | ||
| 1669 | EVENT_0(AMCFixInPlace); | 1669 | EVENT0(AMCFixInPlace); |
| 1670 | if(amcSegHasNailboard(seg)) { | 1670 | if(amcSegHasNailboard(seg)) { |
| 1671 | Bool wasMarked = amcNailGetAndSetMark(seg, ref); | 1671 | Bool wasMarked = amcNailGetAndSetMark(seg, ref); |
| 1672 | /* If there are no new marks (i.e., no new traces for which we */ | 1672 | /* If there are no new marks (i.e., no new traces for which we */ |
| @@ -1751,7 +1751,7 @@ Res AMCFix(Pool pool, ScanState ss, Seg seg, Ref *refIO) | |||
| 1751 | AVERT_CRITICAL(ScanState, ss); | 1751 | AVERT_CRITICAL(ScanState, ss); |
| 1752 | AVERT_CRITICAL(Seg, seg); | 1752 | AVERT_CRITICAL(Seg, seg); |
| 1753 | AVER_CRITICAL(refIO != NULL); | 1753 | AVER_CRITICAL(refIO != NULL); |
| 1754 | EVENT_0(AMCFix); | 1754 | EVENT0(AMCFix); |
| 1755 | 1755 | ||
| 1756 | /* For the moment, assume that the object was already marked. */ | 1756 | /* For the moment, assume that the object was already marked. */ |
| 1757 | /* (See <design/fix/#protocol.was-marked>.) */ | 1757 | /* (See <design/fix/#protocol.was-marked>.) */ |
| @@ -1814,7 +1814,7 @@ Res AMCFix(Pool pool, ScanState ss, Seg seg, Ref *refIO) | |||
| 1814 | } | 1814 | } |
| 1815 | /* Object is not preserved yet (neither moved, nor nailed) */ | 1815 | /* Object is not preserved yet (neither moved, nor nailed) */ |
| 1816 | /* so should be preserved by forwarding. */ | 1816 | /* so should be preserved by forwarding. */ |
| 1817 | EVENT_A(AMCFixForward, newRef); | 1817 | EVENT1(AMCFixForward, newRef); |
| 1818 | /* <design/fix/#protocol.was-marked> */ | 1818 | /* <design/fix/#protocol.was-marked> */ |
| 1819 | ss->wasMarked = FALSE; | 1819 | ss->wasMarked = FALSE; |
| 1820 | 1820 | ||
| @@ -1901,7 +1901,7 @@ static Res AMCHeaderFix(Pool pool, ScanState ss, Seg seg, Ref *refIO) | |||
| 1901 | AVERT_CRITICAL(ScanState, ss); | 1901 | AVERT_CRITICAL(ScanState, ss); |
| 1902 | AVERT_CRITICAL(Seg, seg); | 1902 | AVERT_CRITICAL(Seg, seg); |
| 1903 | AVER_CRITICAL(refIO != NULL); | 1903 | AVER_CRITICAL(refIO != NULL); |
| 1904 | EVENT_0(AMCFix); | 1904 | EVENT0(AMCFix); |
| 1905 | 1905 | ||
| 1906 | /* For the moment, assume that the object was already marked. */ | 1906 | /* For the moment, assume that the object was already marked. */ |
| 1907 | /* (See <design/fix/#protocol.was-marked>.) */ | 1907 | /* (See <design/fix/#protocol.was-marked>.) */ |
| @@ -1964,7 +1964,7 @@ static Res AMCHeaderFix(Pool pool, ScanState ss, Seg seg, Ref *refIO) | |||
| 1964 | } | 1964 | } |
| 1965 | /* object is not preserved yet (neither moved, nor nailed) */ | 1965 | /* object is not preserved yet (neither moved, nor nailed) */ |
| 1966 | /* so should be preserved by forwarding */ | 1966 | /* so should be preserved by forwarding */ |
| 1967 | EVENT_A(AMCFixForward, newRef); | 1967 | EVENT1(AMCFixForward, newRef); |
| 1968 | /* <design/fix/#protocol.was-marked> */ | 1968 | /* <design/fix/#protocol.was-marked> */ |
| 1969 | ss->wasMarked = FALSE; | 1969 | ss->wasMarked = FALSE; |
| 1970 | 1970 | ||
| @@ -2166,7 +2166,7 @@ static void AMCReclaim(Pool pool, Trace trace, Seg seg) | |||
| 2166 | gen = amcSegGen(seg); | 2166 | gen = amcSegGen(seg); |
| 2167 | AVERT_CRITICAL(amcGen, gen); | 2167 | AVERT_CRITICAL(amcGen, gen); |
| 2168 | 2168 | ||
| 2169 | EVENT_PPP(AMCReclaim, gen, trace, seg); | 2169 | EVENT3(AMCReclaim, gen, trace, seg); |
| 2170 | 2170 | ||
| 2171 | /* This switching needs to be more complex for multiple traces. */ | 2171 | /* This switching needs to be more complex for multiple traces. */ |
| 2172 | AVER_CRITICAL(TraceSetIsSingle(PoolArena(pool)->busyTraces)); | 2172 | AVER_CRITICAL(TraceSetIsSingle(PoolArena(pool)->busyTraces)); |
diff --git a/mps/code/poolams.c b/mps/code/poolams.c index 913195aab7c..6696fbf7d36 100644 --- a/mps/code/poolams.c +++ b/mps/code/poolams.c | |||
| @@ -749,7 +749,7 @@ static Res AMSInit(Pool pool, va_list args) | |||
| 749 | /* references, the alloc and white tables cannot be shared. */ | 749 | /* references, the alloc and white tables cannot be shared. */ |
| 750 | res = AMSInitInternal(Pool2AMS(pool), format, chain, !supportAmbiguous); | 750 | res = AMSInitInternal(Pool2AMS(pool), format, chain, !supportAmbiguous); |
| 751 | if (res == ResOK) { | 751 | if (res == ResOK) { |
| 752 | EVENT_PPP(PoolInitAMS, pool, PoolArena(pool), format); | 752 | EVENT3(PoolInitAMS, pool, PoolArena(pool), format); |
| 753 | } | 753 | } |
| 754 | return res; | 754 | return res; |
| 755 | } | 755 | } |
diff --git a/mps/code/poolawl.c b/mps/code/poolawl.c index bb010854a6a..e1fcbd94b4e 100644 --- a/mps/code/poolawl.c +++ b/mps/code/poolawl.c | |||
| @@ -523,7 +523,7 @@ static Res AWLInit(Pool pool, va_list arg) | |||
| 523 | awl->sig = AWLSig; | 523 | awl->sig = AWLSig; |
| 524 | 524 | ||
| 525 | AVERT(AWL, awl); | 525 | AVERT(AWL, awl); |
| 526 | EVENT_PP(PoolInitAWL, pool, format); | 526 | EVENT2(PoolInitAWL, pool, format); |
| 527 | return ResOK; | 527 | return ResOK; |
| 528 | 528 | ||
| 529 | failGenInit: | 529 | failGenInit: |
diff --git a/mps/code/poollo.c b/mps/code/poollo.c index c4a5872af54..3ad825905a2 100644 --- a/mps/code/poollo.c +++ b/mps/code/poollo.c | |||
| @@ -502,7 +502,7 @@ static Res LOInit(Pool pool, va_list arg) | |||
| 502 | 502 | ||
| 503 | lo->sig = LOSig; | 503 | lo->sig = LOSig; |
| 504 | AVERT(LO, lo); | 504 | AVERT(LO, lo); |
| 505 | EVENT_PP(PoolInitLO, pool, format); | 505 | EVENT2(PoolInitLO, pool, format); |
| 506 | return ResOK; | 506 | return ResOK; |
| 507 | 507 | ||
| 508 | failGenInit: | 508 | failGenInit: |
diff --git a/mps/code/poolmfs.c b/mps/code/poolmfs.c index 6ce145b2d42..4e31e87fccf 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 | EVENT_PPP(PoolInit, pool, arena, ClassOfPool(pool)); | 109 | EVENT3(PoolInit, pool, arena, ClassOfPool(pool)); |
| 110 | return ResOK; | 110 | return ResOK; |
| 111 | } | 111 | } |
| 112 | 112 | ||
diff --git a/mps/code/poolmrg.c b/mps/code/poolmrg.c index 73ec8ac81f1..68ab417090f 100644 --- a/mps/code/poolmrg.c +++ b/mps/code/poolmrg.c | |||
| @@ -635,7 +635,7 @@ static Res MRGInit(Pool pool, va_list args) | |||
| 635 | DIAG_PRINTF(( "mrg->extendBy = %u, MRGGuardiansPerSeg = %u\n", | 635 | DIAG_PRINTF(( "mrg->extendBy = %u, MRGGuardiansPerSeg = %u\n", |
| 636 | (unsigned int) mrg->extendBy, | 636 | (unsigned int) mrg->extendBy, |
| 637 | (unsigned int) MRGGuardiansPerSeg(mrg) )); | 637 | (unsigned int) MRGGuardiansPerSeg(mrg) )); |
| 638 | EVENT_PPP(PoolInit, pool, PoolArena(pool), ClassOfPool(pool)); | 638 | EVENT3(PoolInit, pool, PoolArena(pool), ClassOfPool(pool)); |
| 639 | return ResOK; | 639 | return ResOK; |
| 640 | } | 640 | } |
| 641 | 641 | ||
diff --git a/mps/code/poolmv.c b/mps/code/poolmv.c index ae71bb40804..48e02150c0a 100644 --- a/mps/code/poolmv.c +++ b/mps/code/poolmv.c | |||
| @@ -235,7 +235,7 @@ static Res MVInit(Pool pool, va_list arg) | |||
| 235 | 235 | ||
| 236 | mv->sig = MVSig; | 236 | mv->sig = MVSig; |
| 237 | AVERT(MV, mv); | 237 | AVERT(MV, mv); |
| 238 | EVENT_PPWWW(PoolInitMV, pool, arena, extendBy, avgSize, maxSize); | 238 | EVENT5(PoolInitMV, pool, arena, extendBy, avgSize, maxSize); |
| 239 | return ResOK; | 239 | return ResOK; |
| 240 | } | 240 | } |
| 241 | 241 | ||
diff --git a/mps/code/poolmv2.c b/mps/code/poolmv2.c index 974112b7abe..46dc70fff7c 100644 --- a/mps/code/poolmv2.c +++ b/mps/code/poolmv2.c | |||
| @@ -312,7 +312,7 @@ static Res MVTInit(Pool pool, va_list arg) | |||
| 312 | mvt->sig = MVTSig; | 312 | mvt->sig = MVTSig; |
| 313 | 313 | ||
| 314 | AVERT(MVT, mvt); | 314 | AVERT(MVT, mvt); |
| 315 | EVENT_PWWWWW(PoolInitMVT, pool, minSize, meanSize, maxSize, | 315 | EVENT6(PoolInitMVT, pool, minSize, meanSize, maxSize, |
| 316 | reserveDepth, fragLimit); | 316 | reserveDepth, fragLimit); |
| 317 | return ResOK; | 317 | return ResOK; |
| 318 | 318 | ||
diff --git a/mps/code/poolmvff.c b/mps/code/poolmvff.c index f13c94893aa..65fab127c45 100644 --- a/mps/code/poolmvff.c +++ b/mps/code/poolmvff.c | |||
| @@ -473,7 +473,7 @@ static Res MVFFInit(Pool pool, va_list arg) | |||
| 473 | 473 | ||
| 474 | mvff->sig = MVFFSig; | 474 | mvff->sig = MVFFSig; |
| 475 | AVERT(MVFF, mvff); | 475 | AVERT(MVFF, mvff); |
| 476 | EVENT_PPWWWUUU(PoolInitMVFF, pool, arena, extendBy, avgSize, align, | 476 | EVENT8(PoolInitMVFF, pool, arena, extendBy, avgSize, align, |
| 477 | slotHigh, arenaHigh, firstFit); | 477 | slotHigh, arenaHigh, firstFit); |
| 478 | return ResOK; | 478 | return ResOK; |
| 479 | 479 | ||
diff --git a/mps/code/pooln.c b/mps/code/pooln.c index 08c1d19ce10..a22d81c23a2 100644 --- a/mps/code/pooln.c +++ b/mps/code/pooln.c | |||
| @@ -39,7 +39,7 @@ static Res NInit(Pool pool, va_list args) | |||
| 39 | /* Initialize pool-specific structures. */ | 39 | /* Initialize pool-specific structures. */ |
| 40 | 40 | ||
| 41 | AVERT(PoolN, poolN); | 41 | AVERT(PoolN, poolN); |
| 42 | EVENT_PPP(PoolInit, pool, PoolArena(pool), ClassOfPool(pool)); | 42 | EVENT3(PoolInit, pool, PoolArena(pool), ClassOfPool(pool)); |
| 43 | return ResOK; | 43 | return ResOK; |
| 44 | } | 44 | } |
| 45 | 45 | ||
diff --git a/mps/code/poolsnc.c b/mps/code/poolsnc.c index c9b1c20098e..bda17d488fd 100644 --- a/mps/code/poolsnc.c +++ b/mps/code/poolsnc.c | |||
| @@ -382,7 +382,7 @@ static Res SNCInit(Pool pool, va_list arg) | |||
| 382 | snc->sig = SNCSig; | 382 | snc->sig = SNCSig; |
| 383 | 383 | ||
| 384 | AVERT(SNC, snc); | 384 | AVERT(SNC, snc); |
| 385 | EVENT_PP(PoolInitSNC, pool, format); | 385 | EVENT2(PoolInitSNC, pool, format); |
| 386 | return ResOK; | 386 | return ResOK; |
| 387 | } | 387 | } |
| 388 | 388 | ||
diff --git a/mps/code/reserv.c b/mps/code/reserv.c index cc739291e3c..d50e02b931f 100644 --- a/mps/code/reserv.c +++ b/mps/code/reserv.c | |||
| @@ -41,7 +41,7 @@ static Res ResPoolInit(Pool pool, va_list arg) | |||
| 41 | 41 | ||
| 42 | UNUSED(arg); | 42 | UNUSED(arg); |
| 43 | /* Caller will set sig and AVERT. */ | 43 | /* Caller will set sig and AVERT. */ |
| 44 | EVENT_PPP(PoolInit, pool, PoolArena(pool), ClassOfPool(pool)); | 44 | EVENT3(PoolInit, pool, PoolArena(pool), ClassOfPool(pool)); |
| 45 | return ResOK; | 45 | return ResOK; |
| 46 | } | 46 | } |
| 47 | 47 | ||
| @@ -340,7 +340,7 @@ void ReservoirSetLimit(Reservoir reservoir, Size size) | |||
| 340 | 340 | ||
| 341 | AVER(SizeIsAligned(needed, ArenaAlign(arena))); | 341 | AVER(SizeIsAligned(needed, ArenaAlign(arena))); |
| 342 | /* Emit event now, so subsequent change can be ascribed to it. */ | 342 | /* Emit event now, so subsequent change can be ascribed to it. */ |
| 343 | EVENT_PW(ReservoirLimitSet, arena, size); | 343 | EVENT2(ReservoirLimitSet, arena, size); |
| 344 | 344 | ||
| 345 | if (needed > reservoir->reservoirSize) { | 345 | if (needed > reservoir->reservoirSize) { |
| 346 | /* Try to grow the reservoir */ | 346 | /* Try to grow the reservoir */ |
diff --git a/mps/code/root.c b/mps/code/root.c index bd2dd21f5ea..374497e4a77 100644 --- a/mps/code/root.c +++ b/mps/code/root.c | |||
| @@ -506,7 +506,7 @@ Res RootScan(ScanState ss, Root root) | |||
| 506 | AVER(res == ResOK); | 506 | AVER(res == ResOK); |
| 507 | root->grey = TraceSetDiff(root->grey, ss->traces); | 507 | root->grey = TraceSetDiff(root->grey, ss->traces); |
| 508 | rootSetSummary(root, ScanStateSummary(ss)); | 508 | rootSetSummary(root, ScanStateSummary(ss)); |
| 509 | EVENT_PWW(RootScan, root, ss->traces, ScanStateSummary(ss)); | 509 | EVENT3(RootScan, root, ss->traces, ScanStateSummary(ss)); |
| 510 | 510 | ||
| 511 | failScan: | 511 | failScan: |
| 512 | if (root->pm != AccessSetEMPTY) { | 512 | if (root->pm != AccessSetEMPTY) { |
diff --git a/mps/code/seg.c b/mps/code/seg.c index 3f95ba4ec88..4ea3f0c8aaa 100644 --- a/mps/code/seg.c +++ b/mps/code/seg.c | |||
| @@ -91,7 +91,7 @@ Res SegAlloc(Seg *segReturn, SegClass class, SegPref pref, | |||
| 91 | if (res != ResOK) | 91 | if (res != ResOK) |
| 92 | goto failInit; | 92 | goto failInit; |
| 93 | 93 | ||
| 94 | EVENT_PPAWP(SegAlloc, arena, seg, SegBase(seg), size, pool); | 94 | EVENT5(SegAlloc, arena, seg, SegBase(seg), size, pool); |
| 95 | *segReturn = seg; | 95 | *segReturn = seg; |
| 96 | return ResOK; | 96 | return ResOK; |
| 97 | 97 | ||
| @@ -100,7 +100,7 @@ failInit: | |||
| 100 | failControl: | 100 | failControl: |
| 101 | ArenaFree(base, size, pool); | 101 | ArenaFree(base, size, pool); |
| 102 | failArena: | 102 | failArena: |
| 103 | EVENT_PWP(SegAllocFail, arena, size, pool); | 103 | EVENT3(SegAllocFail, arena, size, pool); |
| 104 | return res; | 104 | return res; |
| 105 | } | 105 | } |
| 106 | 106 | ||
| @@ -128,7 +128,7 @@ void SegFree(Seg seg) | |||
| 128 | ControlFree(arena, seg, class->size); | 128 | ControlFree(arena, seg, class->size); |
| 129 | ArenaFree(base, size, pool); | 129 | ArenaFree(base, size, pool); |
| 130 | 130 | ||
| 131 | EVENT_PP(SegFree, arena, seg); | 131 | EVENT2(SegFree, arena, seg); |
| 132 | return; | 132 | return; |
| 133 | } | 133 | } |
| 134 | 134 | ||
| @@ -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 | EVENT_PPP(SegMerge, segLo, segLo, segHi); | 529 | EVENT3(SegMerge, segLo, segLo, segHi); |
| 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); |
| @@ -585,7 +585,7 @@ Res SegSplit(Seg *segLoReturn, Seg *segHiReturn, Seg seg, Addr at, | |||
| 585 | if (ResOK != res) | 585 | if (ResOK != res) |
| 586 | goto failSplit; | 586 | goto failSplit; |
| 587 | 587 | ||
| 588 | EVENT_PPPA(SegSplit, seg, segNew, seg, at); | 588 | EVENT4(SegSplit, seg, segNew, seg, at); |
| 589 | AVERT(Seg, seg); | 589 | AVERT(Seg, seg); |
| 590 | AVERT(Seg, segNew); | 590 | AVERT(Seg, segNew); |
| 591 | *segLoReturn = seg; | 591 | *segLoReturn = seg; |
| @@ -1214,7 +1214,7 @@ static void gcSegSetGrey(Seg seg, TraceSet grey) | |||
| 1214 | ShieldLower(arena, seg, AccessREAD); | 1214 | ShieldLower(arena, seg, AccessREAD); |
| 1215 | } | 1215 | } |
| 1216 | 1216 | ||
| 1217 | EVENT_PPU(SegSetGrey, arena, seg, grey); | 1217 | EVENT3(SegSetGrey, arena, seg, grey); |
| 1218 | } | 1218 | } |
| 1219 | 1219 | ||
| 1220 | 1220 | ||
diff --git a/mps/code/trace.c b/mps/code/trace.c index a12800d4dd9..c362a4809cf 100644 --- a/mps/code/trace.c +++ b/mps/code/trace.c | |||
| @@ -531,7 +531,7 @@ static void traceFlip(Trace trace) | |||
| 531 | AVER(trace->state == TraceUNFLIPPED); | 531 | AVER(trace->state == TraceUNFLIPPED); |
| 532 | AVER(!TraceSetIsMember(arena->flippedTraces, trace)); | 532 | AVER(!TraceSetIsMember(arena->flippedTraces, trace)); |
| 533 | 533 | ||
| 534 | EVENT_PP(TraceFlipBegin, trace, arena); | 534 | EVENT2(TraceFlipBegin, trace, arena); |
| 535 | 535 | ||
| 536 | traceFlipBuffers(ArenaGlobals(arena)); | 536 | traceFlipBuffers(ArenaGlobals(arena)); |
| 537 | 537 | ||
| @@ -586,7 +586,7 @@ static void traceFlip(Trace trace) | |||
| 586 | trace->state = TraceFLIPPED; | 586 | trace->state = TraceFLIPPED; |
| 587 | arena->flippedTraces = TraceSetAdd(arena->flippedTraces, trace); | 587 | arena->flippedTraces = TraceSetAdd(arena->flippedTraces, trace); |
| 588 | 588 | ||
| 589 | EVENT_PP(TraceFlipEnd, trace, arena); | 589 | EVENT2(TraceFlipEnd, trace, arena); |
| 590 | 590 | ||
| 591 | ShieldResume(arena); | 591 | ShieldResume(arena); |
| 592 | 592 | ||
| @@ -736,7 +736,7 @@ void TraceDestroy(Trace trace) | |||
| 736 | ChainEndGC(trace->chain, trace); | 736 | ChainEndGC(trace->chain, trace); |
| 737 | } | 737 | } |
| 738 | 738 | ||
| 739 | STATISTIC_STAT(EVENT_PWWWWWWWWWWWW | 739 | STATISTIC_STAT(EVENT13 |
| 740 | (TraceStatScan, trace, | 740 | (TraceStatScan, trace, |
| 741 | trace->rootScanCount, trace->rootScanSize, | 741 | trace->rootScanCount, trace->rootScanSize, |
| 742 | trace->rootCopiedSize, | 742 | trace->rootCopiedSize, |
| @@ -746,7 +746,7 @@ void TraceDestroy(Trace trace) | |||
| 746 | trace->singleCopiedSize, | 746 | trace->singleCopiedSize, |
| 747 | trace->readBarrierHitCount, trace->greySegMax, | 747 | trace->readBarrierHitCount, trace->greySegMax, |
| 748 | trace->pointlessScanCount)); | 748 | trace->pointlessScanCount)); |
| 749 | STATISTIC_STAT(EVENT_PWWWWWWWWW | 749 | STATISTIC_STAT(EVENT10 |
| 750 | (TraceStatFix, trace, | 750 | (TraceStatFix, trace, |
| 751 | trace->fixRefCount, trace->segRefCount, | 751 | trace->fixRefCount, trace->segRefCount, |
| 752 | trace->whiteSegRefCount, | 752 | trace->whiteSegRefCount, |
| @@ -754,14 +754,14 @@ void TraceDestroy(Trace trace) | |||
| 754 | trace->forwardedCount, trace->forwardedSize, | 754 | trace->forwardedCount, trace->forwardedSize, |
| 755 | trace->preservedInPlaceCount, | 755 | trace->preservedInPlaceCount, |
| 756 | trace->preservedInPlaceSize)); | 756 | trace->preservedInPlaceSize)); |
| 757 | STATISTIC_STAT(EVENT_PWW | 757 | STATISTIC_STAT(EVENT3 |
| 758 | (TraceStatReclaim, trace, | 758 | (TraceStatReclaim, trace, |
| 759 | trace->reclaimCount, trace->reclaimSize)); | 759 | trace->reclaimCount, trace->reclaimSize)); |
| 760 | 760 | ||
| 761 | trace->sig = SigInvalid; | 761 | trace->sig = SigInvalid; |
| 762 | trace->arena->busyTraces = TraceSetDel(trace->arena->busyTraces, trace); | 762 | trace->arena->busyTraces = TraceSetDel(trace->arena->busyTraces, trace); |
| 763 | trace->arena->flippedTraces = TraceSetDel(trace->arena->flippedTraces, trace); | 763 | trace->arena->flippedTraces = TraceSetDel(trace->arena->flippedTraces, trace); |
| 764 | EVENT_P(TraceDestroy, trace); | 764 | EVENT1(TraceDestroy, trace); |
| 765 | } | 765 | } |
| 766 | 766 | ||
| 767 | 767 | ||
| @@ -775,7 +775,7 @@ static void traceReclaim(Trace trace) | |||
| 775 | 775 | ||
| 776 | AVER(trace->state == TraceRECLAIM); | 776 | AVER(trace->state == TraceRECLAIM); |
| 777 | 777 | ||
| 778 | EVENT_P(TraceReclaim, trace); | 778 | EVENT1(TraceReclaim, trace); |
| 779 | arena = trace->arena; | 779 | arena = trace->arena; |
| 780 | if(SegFirst(&seg, arena)) { | 780 | if(SegFirst(&seg, arena)) { |
| 781 | Addr base; | 781 | Addr base; |
| @@ -1034,7 +1034,7 @@ static Res traceScanSegRes(TraceSet ts, Rank rank, Arena arena, Seg seg) | |||
| 1034 | 1034 | ||
| 1035 | /* The reason for scanning a segment is that it's grey. */ | 1035 | /* The reason for scanning a segment is that it's grey. */ |
| 1036 | AVER(TraceSetInter(ts, SegGrey(seg)) != TraceSetEMPTY); | 1036 | AVER(TraceSetInter(ts, SegGrey(seg)) != TraceSetEMPTY); |
| 1037 | EVENT_UUPP(TraceScanSeg, ts, rank, arena, seg); | 1037 | EVENT4(TraceScanSeg, ts, rank, arena, seg); |
| 1038 | 1038 | ||
| 1039 | white = traceSetWhiteUnion(ts, arena); | 1039 | white = traceSetWhiteUnion(ts, arena); |
| 1040 | 1040 | ||
| @@ -1140,7 +1140,7 @@ void TraceSegAccess(Arena arena, Seg seg, AccessSet mode) | |||
| 1140 | /* RefSetUNIV). */ | 1140 | /* RefSetUNIV). */ |
| 1141 | AVER((mode & SegSM(seg) & AccessWRITE) == 0 || SegSummary(seg) != RefSetUNIV); | 1141 | AVER((mode & SegSM(seg) & AccessWRITE) == 0 || SegSummary(seg) != RefSetUNIV); |
| 1142 | 1142 | ||
| 1143 | EVENT_PPU(TraceAccess, arena, seg, mode); | 1143 | EVENT3(TraceAccess, arena, seg, mode); |
| 1144 | 1144 | ||
| 1145 | if((mode & SegSM(seg) & AccessREAD) != 0) { /* read barrier? */ | 1145 | if((mode & SegSM(seg) & AccessREAD) != 0) { /* read barrier? */ |
| 1146 | /* Pick set of traces to scan for: */ | 1146 | /* Pick set of traces to scan for: */ |
| @@ -1192,7 +1192,7 @@ Res TraceFix(ScanState ss, Ref *refIO) | |||
| 1192 | ref = *refIO; | 1192 | ref = *refIO; |
| 1193 | 1193 | ||
| 1194 | STATISTIC(++ss->fixRefCount); | 1194 | STATISTIC(++ss->fixRefCount); |
| 1195 | EVENT_PPAU(TraceFix, ss, refIO, ref, ss->rank); | 1195 | EVENT4(TraceFix, ss, refIO, ref, ss->rank); |
| 1196 | 1196 | ||
| 1197 | TRACT_OF_ADDR(&tract, ss->arena, ref); | 1197 | TRACT_OF_ADDR(&tract, ss->arena, ref); |
| 1198 | if(tract) { | 1198 | if(tract) { |
| @@ -1202,8 +1202,8 @@ Res TraceFix(ScanState ss, Ref *refIO) | |||
| 1202 | Res res; | 1202 | Res res; |
| 1203 | STATISTIC(++ss->segRefCount); | 1203 | STATISTIC(++ss->segRefCount); |
| 1204 | STATISTIC(++ss->whiteSegRefCount); | 1204 | STATISTIC(++ss->whiteSegRefCount); |
| 1205 | EVENT_P(TraceFixSeg, seg); | 1205 | EVENT1(TraceFixSeg, seg); |
| 1206 | EVENT_0(TraceFixWhite); | 1206 | EVENT0(TraceFixWhite); |
| 1207 | pool = TractPool(tract); | 1207 | pool = TractPool(tract); |
| 1208 | /* Could move the rank switch here from the class-specific */ | 1208 | /* Could move the rank switch here from the class-specific */ |
| 1209 | /* fix methods. */ | 1209 | /* fix methods. */ |
| @@ -1228,7 +1228,7 @@ Res TraceFix(ScanState ss, Ref *refIO) | |||
| 1228 | Seg seg; | 1228 | Seg seg; |
| 1229 | if(TRACT_SEG(&seg, tract)) { | 1229 | if(TRACT_SEG(&seg, tract)) { |
| 1230 | ++ss->segRefCount; | 1230 | ++ss->segRefCount; |
| 1231 | EVENT_P(TraceFixSeg, seg); | 1231 | EVENT1(TraceFixSeg, seg); |
| 1232 | } | 1232 | } |
| 1233 | }); | 1233 | }); |
| 1234 | } | 1234 | } |
| @@ -1259,7 +1259,7 @@ Res TraceFixEmergency(ScanState ss, Ref *refIO) | |||
| 1259 | ref = *refIO; | 1259 | ref = *refIO; |
| 1260 | 1260 | ||
| 1261 | STATISTIC(++ss->fixRefCount); | 1261 | STATISTIC(++ss->fixRefCount); |
| 1262 | EVENT_PPAU(TraceFix, ss, refIO, ref, ss->rank); | 1262 | EVENT4(TraceFix, ss, refIO, ref, ss->rank); |
| 1263 | 1263 | ||
| 1264 | TRACT_OF_ADDR(&tract, ss->arena, ref); | 1264 | TRACT_OF_ADDR(&tract, ss->arena, ref); |
| 1265 | if(tract) { | 1265 | if(tract) { |
| @@ -1268,8 +1268,8 @@ Res TraceFixEmergency(ScanState ss, Ref *refIO) | |||
| 1268 | if(TRACT_SEG(&seg, tract)) { | 1268 | if(TRACT_SEG(&seg, tract)) { |
| 1269 | STATISTIC(++ss->segRefCount); | 1269 | STATISTIC(++ss->segRefCount); |
| 1270 | STATISTIC(++ss->whiteSegRefCount); | 1270 | STATISTIC(++ss->whiteSegRefCount); |
| 1271 | EVENT_P(TraceFixSeg, seg); | 1271 | EVENT1(TraceFixSeg, seg); |
| 1272 | EVENT_0(TraceFixWhite); | 1272 | EVENT0(TraceFixWhite); |
| 1273 | pool = TractPool(tract); | 1273 | pool = TractPool(tract); |
| 1274 | PoolFixEmergency(pool, ss, seg, refIO); | 1274 | PoolFixEmergency(pool, ss, seg, refIO); |
| 1275 | } | 1275 | } |
| @@ -1281,7 +1281,7 @@ Res TraceFixEmergency(ScanState ss, Ref *refIO) | |||
| 1281 | Seg seg; | 1281 | Seg seg; |
| 1282 | if(TRACT_SEG(&seg, tract)) { | 1282 | if(TRACT_SEG(&seg, tract)) { |
| 1283 | ++ss->segRefCount; | 1283 | ++ss->segRefCount; |
| 1284 | EVENT_P(TraceFixSeg, seg); | 1284 | EVENT1(TraceFixSeg, seg); |
| 1285 | } | 1285 | } |
| 1286 | }); | 1286 | }); |
| 1287 | } | 1287 | } |
| @@ -1308,7 +1308,7 @@ static Res traceScanSingleRefRes(TraceSet ts, Rank rank, Arena arena, | |||
| 1308 | Res res; | 1308 | Res res; |
| 1309 | ScanStateStruct ss; | 1309 | ScanStateStruct ss; |
| 1310 | 1310 | ||
| 1311 | EVENT_UUPA(TraceScanSingleRef, ts, rank, arena, (Addr)refIO); | 1311 | EVENT4(TraceScanSingleRef, ts, rank, arena, (Addr)refIO); |
| 1312 | 1312 | ||
| 1313 | white = traceSetWhiteUnion(ts, arena); | 1313 | white = traceSetWhiteUnion(ts, arena); |
| 1314 | if(ZoneSetInter(SegSummary(seg), white) == ZoneSetEMPTY) { | 1314 | if(ZoneSetInter(SegSummary(seg), white) == ZoneSetEMPTY) { |
| @@ -1379,7 +1379,7 @@ Res TraceScanArea(ScanState ss, Addr *base, Addr *limit) | |||
| 1379 | AVER(limit != NULL); | 1379 | AVER(limit != NULL); |
| 1380 | AVER(base < limit); | 1380 | AVER(base < limit); |
| 1381 | 1381 | ||
| 1382 | EVENT_PPP(TraceScanArea, ss, base, limit); | 1382 | EVENT3(TraceScanArea, ss, base, limit); |
| 1383 | 1383 | ||
| 1384 | TRACE_SCAN_BEGIN(ss) { | 1384 | TRACE_SCAN_BEGIN(ss) { |
| 1385 | p = base; | 1385 | p = base; |
| @@ -1427,7 +1427,7 @@ Res TraceScanAreaMasked(ScanState ss, Addr *base, Addr *limit, Word mask) | |||
| 1427 | AVER(limit != NULL); | 1427 | AVER(limit != NULL); |
| 1428 | AVER(base < limit); | 1428 | AVER(base < limit); |
| 1429 | 1429 | ||
| 1430 | EVENT_PPP(TraceScanAreaTagged, ss, base, limit); | 1430 | EVENT3(TraceScanAreaTagged, ss, base, limit); |
| 1431 | 1431 | ||
| 1432 | TRACE_SCAN_BEGIN(ss) { | 1432 | TRACE_SCAN_BEGIN(ss) { |
| 1433 | p = base; | 1433 | p = base; |
| @@ -1652,7 +1652,7 @@ void TraceStart(Trace trace, double mortality, double finishingTime) | |||
| 1652 | res = RootsIterate(ArenaGlobals(arena), rootGrey, (void *)trace); | 1652 | res = RootsIterate(ArenaGlobals(arena), rootGrey, (void *)trace); |
| 1653 | AVER(res == ResOK); | 1653 | AVER(res == ResOK); |
| 1654 | 1654 | ||
| 1655 | STATISTIC_STAT(EVENT_PW(ArenaWriteFaults, arena, arena->writeBarrierHitCount)); | 1655 | STATISTIC_STAT(EVENT2(ArenaWriteFaults, arena, arena->writeBarrierHitCount)); |
| 1656 | 1656 | ||
| 1657 | /* Calculate the rate of scanning. */ | 1657 | /* Calculate the rate of scanning. */ |
| 1658 | { | 1658 | { |
| @@ -1672,7 +1672,7 @@ void TraceStart(Trace trace, double mortality, double finishingTime) | |||
| 1672 | 1672 | ||
| 1673 | /* @@ DIAG for rate of scanning here. */ | 1673 | /* @@ DIAG for rate of scanning here. */ |
| 1674 | 1674 | ||
| 1675 | STATISTIC_STAT(EVENT_PWWWWDD(TraceStatCondemn, trace, | 1675 | STATISTIC_STAT(EVENT7(TraceStatCondemn, trace, |
| 1676 | trace->condemned, trace->notCondemned, | 1676 | trace->condemned, trace->notCondemned, |
| 1677 | trace->foundation, trace->rate, | 1677 | trace->foundation, trace->rate, |
| 1678 | mortality, finishingTime)); | 1678 | mortality, finishingTime)); |
diff --git a/mps/code/vman.c b/mps/code/vman.c index ef31935b91e..c4d4060f89a 100644 --- a/mps/code/vman.c +++ b/mps/code/vman.c | |||
| @@ -93,7 +93,7 @@ Res VMCreate(VM *vmReturn, Size size) | |||
| 93 | 93 | ||
| 94 | AVERT(VM, vm); | 94 | AVERT(VM, vm); |
| 95 | 95 | ||
| 96 | EVENT_PAA(VMCreate, vm, vm->base, vm->limit); | 96 | EVENT3(VMCreate, vm, vm->base, vm->limit); |
| 97 | *vmReturn = vm; | 97 | *vmReturn = vm; |
| 98 | return ResOK; | 98 | return ResOK; |
| 99 | } | 99 | } |
| @@ -114,7 +114,7 @@ void VMDestroy(VM vm) | |||
| 114 | vm->sig = SigInvalid; | 114 | vm->sig = SigInvalid; |
| 115 | free(vm); | 115 | free(vm); |
| 116 | 116 | ||
| 117 | EVENT_P(VMDestroy, vm); | 117 | EVENT1(VMDestroy, vm); |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | 120 | ||
| @@ -176,7 +176,7 @@ Res VMMap(VM vm, Addr base, Addr limit) | |||
| 176 | 176 | ||
| 177 | vm->mapped += size; | 177 | vm->mapped += size; |
| 178 | 178 | ||
| 179 | EVENT_PAA(VMMap, vm, base, limit); | 179 | EVENT3(VMMap, vm, base, limit); |
| 180 | return ResOK; | 180 | return ResOK; |
| 181 | } | 181 | } |
| 182 | 182 | ||
| @@ -200,7 +200,7 @@ void VMUnmap(VM vm, Addr base, Addr limit) | |||
| 200 | AVER(vm->mapped >= size); | 200 | AVER(vm->mapped >= size); |
| 201 | vm->mapped -= size; | 201 | vm->mapped -= size; |
| 202 | 202 | ||
| 203 | EVENT_PAA(VMUnmap, vm, base, limit); | 203 | EVENT3(VMUnmap, vm, base, limit); |
| 204 | } | 204 | } |
| 205 | 205 | ||
| 206 | 206 | ||
diff --git a/mps/code/vmix.c b/mps/code/vmix.c index 0718dd982fa..bc26b647dc8 100644 --- a/mps/code/vmix.c +++ b/mps/code/vmix.c | |||
| @@ -159,7 +159,7 @@ Res VMCreate(VM *vmReturn, Size size) | |||
| 159 | 159 | ||
| 160 | AVERT(VM, vm); | 160 | AVERT(VM, vm); |
| 161 | 161 | ||
| 162 | EVENT_PAA(VMCreate, vm, vm->base, vm->limit); | 162 | EVENT3(VMCreate, vm, vm->base, vm->limit); |
| 163 | DIAG_SINGLEF(( | 163 | DIAG_SINGLEF(( |
| 164 | "VM_ix_Create_ok", | 164 | "VM_ix_Create_ok", |
| 165 | "[$W..<$W>..$W)", | 165 | "[$W..<$W>..$W)", |
| @@ -206,7 +206,7 @@ void VMDestroy(VM vm) | |||
| 206 | (size_t)SizeAlignUp(sizeof(VMStruct), vm->align)); | 206 | (size_t)SizeAlignUp(sizeof(VMStruct), vm->align)); |
| 207 | AVER(r == 0); | 207 | AVER(r == 0); |
| 208 | 208 | ||
| 209 | EVENT_P(VMDestroy, vm); | 209 | EVENT1(VMDestroy, vm); |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | 212 | ||
| @@ -277,7 +277,7 @@ Res VMMap(VM vm, Addr base, Addr limit) | |||
| 277 | 277 | ||
| 278 | vm->mapped += size; | 278 | vm->mapped += size; |
| 279 | 279 | ||
| 280 | EVENT_PAA(VMMap, vm, base, limit); | 280 | EVENT3(VMMap, vm, base, limit); |
| 281 | return ResOK; | 281 | return ResOK; |
| 282 | } | 282 | } |
| 283 | 283 | ||
| @@ -306,7 +306,7 @@ void VMUnmap(VM vm, Addr base, Addr limit) | |||
| 306 | 306 | ||
| 307 | vm->mapped -= size; | 307 | vm->mapped -= size; |
| 308 | 308 | ||
| 309 | EVENT_PAA(VMUnmap, vm, base, limit); | 309 | EVENT3(VMUnmap, vm, base, limit); |
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | 312 | ||
diff --git a/mps/code/vmw3.c b/mps/code/vmw3.c index 554209687d3..1100f7ebbe8 100644 --- a/mps/code/vmw3.c +++ b/mps/code/vmw3.c | |||
| @@ -140,7 +140,7 @@ Res VMCreate(VM *vmReturn, Size size) | |||
| 140 | vm->sig = VMSig; | 140 | vm->sig = VMSig; |
| 141 | AVERT(VM, vm); | 141 | AVERT(VM, vm); |
| 142 | 142 | ||
| 143 | EVENT_PAA(VMCreate, vm, vm->base, vm->limit); | 143 | EVENT3(VMCreate, vm, vm->base, vm->limit); |
| 144 | *vmReturn = vm; | 144 | *vmReturn = vm; |
| 145 | return ResOK; | 145 | return ResOK; |
| 146 | 146 | ||
| @@ -170,7 +170,7 @@ void VMDestroy(VM vm) | |||
| 170 | 170 | ||
| 171 | b = VirtualFree((LPVOID)vm, (SIZE_T)0, MEM_RELEASE); | 171 | b = VirtualFree((LPVOID)vm, (SIZE_T)0, MEM_RELEASE); |
| 172 | AVER(b != 0); | 172 | AVER(b != 0); |
| 173 | EVENT_P(VMDestroy, vm); | 173 | EVENT1(VMDestroy, vm); |
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | 176 | ||
| @@ -240,7 +240,7 @@ Res VMMap(VM vm, Addr base, Addr limit) | |||
| 240 | 240 | ||
| 241 | vm->mapped += AddrOffset(base, limit); | 241 | vm->mapped += AddrOffset(base, limit); |
| 242 | 242 | ||
| 243 | EVENT_PAA(VMMap, vm, base, limit); | 243 | EVENT3(VMMap, vm, base, limit); |
| 244 | return ResOK; | 244 | return ResOK; |
| 245 | } | 245 | } |
| 246 | 246 | ||
| @@ -266,7 +266,7 @@ void VMUnmap(VM vm, Addr base, Addr limit) | |||
| 266 | AVER(b != 0); /* .assume.free.success */ | 266 | AVER(b != 0); /* .assume.free.success */ |
| 267 | vm->mapped -= AddrOffset(base, limit); | 267 | vm->mapped -= AddrOffset(base, limit); |
| 268 | 268 | ||
| 269 | EVENT_PAA(VMUnmap, vm, base, limit); | 269 | EVENT3(VMUnmap, vm, base, limit); |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | 272 | ||