diff options
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 | ||