aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorRichard Brooksby2012-08-31 19:33:45 +0100
committerRichard Brooksby2012-08-31 19:33:45 +0100
commite00495829f3974bb9e9eaee6876687f790d9c4df (patch)
tree611a762aa7f929e919cc2843a7b4dbc8fbb02c1e /mps/code
parentfef6957117523c9ae47f2c9ea40762e2dc7faf0b (diff)
downloademacs-e00495829f3974bb9e9eaee6876687f790d9c4df.tar.gz
emacs-e00495829f3974bb9e9eaee6876687f790d9c4df.zip
Adding more events corresponding to diagnostics.
Copied from Perforce Change: 179141 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/arenavm.c6
-rw-r--r--mps/code/eventdef.h49
-rw-r--r--mps/code/global.c2
-rw-r--r--mps/code/locus.c1
-rw-r--r--mps/code/trace.c2
5 files changed, 57 insertions, 3 deletions
diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c
index b0d69b6b246..ddff692d28e 100644
--- a/mps/code/arenavm.c
+++ b/mps/code/arenavm.c
@@ -1102,7 +1102,8 @@ static Res vmArenaExtend(VMArena vmArena, Size size)
1102 break; 1102 break;
1103 } while(0); 1103 } while(0);
1104 1104
1105 1105 EVENT3(vmArenaExtendStart, size, chunkSize,
1106 VMArenaReserved(VMArena2Arena(vmArena)));
1106 DIAG_SINGLEF(( "vmArenaExtend_Start", 1107 DIAG_SINGLEF(( "vmArenaExtend_Start",
1107 "to accommodate size $W, try chunkSize $W", (WriteFW)size, (WriteFW)chunkSize, 1108 "to accommodate size $W, try chunkSize $W", (WriteFW)size, (WriteFW)chunkSize,
1108 " (VMArenaReserved currently $W bytes)\n", 1109 " (VMArenaReserved currently $W bytes)\n",
@@ -1129,6 +1130,8 @@ static Res vmArenaExtend(VMArena vmArena, Size size)
1129 /* remove slices, down to chunkHalf but no further */ 1130 /* remove slices, down to chunkHalf but no further */
1130 for(; chunkSize > chunkHalf; chunkSize -= sliceSize) { 1131 for(; chunkSize > chunkHalf; chunkSize -= sliceSize) {
1131 if(chunkSize < chunkMin) { 1132 if(chunkSize < chunkMin) {
1133 EVENT2(vmArenaExtendFail, chunkMin,
1134 VMArenaReserved(VMArena2Arena(vmArena)));
1132 DIAG_SINGLEF(( "vmArenaExtend_FailMin", 1135 DIAG_SINGLEF(( "vmArenaExtend_FailMin",
1133 "no remaining address-space chunk >= min($W)", (WriteFW)chunkMin, 1136 "no remaining address-space chunk >= min($W)", (WriteFW)chunkMin,
1134 " (so VMArenaReserved remains $W bytes)\n", 1137 " (so VMArenaReserved remains $W bytes)\n",
@@ -1145,6 +1148,7 @@ static Res vmArenaExtend(VMArena vmArena, Size size)
1145 1148
1146vmArenaExtend_Done: 1149vmArenaExtend_Done:
1147 1150
1151 EVENT2(vmArenaExtendDone, chunkSize, VMArenaReserved(VMArena2Arena(vmArena)));
1148 DIAG_SINGLEF(( "vmArenaExtend_Done", 1152 DIAG_SINGLEF(( "vmArenaExtend_Done",
1149 "Request for new chunk of VM $W bytes succeeded", (WriteFW)chunkSize, 1153 "Request for new chunk of VM $W bytes succeeded", (WriteFW)chunkSize,
1150 " (VMArenaReserved now $W bytes)\n", 1154 " (VMArenaReserved now $W bytes)\n",
diff --git a/mps/code/eventdef.h b/mps/code/eventdef.h
index 27bb3bb6320..004ee6d9668 100644
--- a/mps/code/eventdef.h
+++ b/mps/code/eventdef.h
@@ -53,7 +53,7 @@
53 */ 53 */
54 54
55#define EventNameMAX ((size_t)19) 55#define EventNameMAX ((size_t)19)
56#define EventCodeMAX ((EventCode)0x0069) 56#define EventCodeMAX ((EventCode)0x0071)
57 57
58/* FIXME: Work out why not-in-use events were not in use and restore or delete them. */ 58/* FIXME: Work out why not-in-use events were not in use and restore or delete them. */
59 59
@@ -155,7 +155,17 @@
155 EVENT(X, ArenaFree , 0x0066, TRUE, Arena) \ 155 EVENT(X, ArenaFree , 0x0066, TRUE, Arena) \
156 EVENT(X, ArenaAllocFail , 0x0067, TRUE, Arena) \ 156 EVENT(X, ArenaAllocFail , 0x0067, TRUE, Arena) \
157 EVENT(X, SegMerge , 0x0068, TRUE, Seg) \ 157 EVENT(X, SegMerge , 0x0068, TRUE, Seg) \
158 EVENT(X, SegSplit , 0x0069, TRUE, Seg) 158 EVENT(X, SegSplit , 0x0069, TRUE, Seg) \
159 /* Events converted from RHSK's diagnostics */ \
160 EVENT(X, vmArenaExtendStart , 0x006A, TRUE, Arena) \
161 EVENT(X, vmArenaExtendFail , 0x006B, TRUE, Arena) \
162 EVENT(X, vmArenaExtendDone , 0x006C, TRUE, Arena) \
163 EVENT(X, MessagesDropped , 0x006D, TRUE, Arena) \
164 EVENT(X, MessagesExist , 0x006E, TRUE, Arena) \
165 EVENT(X, ChainCondemnAuto , 0x006F, TRUE, Trace) \
166 EVENT(X, TraceFindGrey , 0x0070, TRUE, Trace) \
167 EVENT(X, TraceBandAdvance , 0x0071, TRUE, Trace)
168
159 169
160/* Remember to update EventNameMAX and EventCodeMAX in eventcom.h! 170/* Remember to update EventNameMAX and EventCodeMAX in eventcom.h!
161 (These are checked in EventInit.) */ 171 (These are checked in EventInit.) */
@@ -555,6 +565,41 @@
555 PARAM(X, 2, P, segHi) \ 565 PARAM(X, 2, P, segHi) \
556 PARAM(X, 3, A, at) 566 PARAM(X, 3, A, at)
557 567
568#define EVENT_vmArenaExtendStart_PARAMS(PARAM, X) \
569 PARAM(X, 0, W, size) /* size to accommodate */ \
570 PARAM(X, 1, W, chunkSize) /* chunkSize to try */ \
571 PARAM(X, 2, W, reserved) /* current VMArenaReserved */
572
573#define EVENT_vmArenaExtendFail_PARAMS(PARAM, X) \
574 PARAM(X, 0, W, chunkMin) /* no remaining address space chunk >= chunkMin */ \
575 PARAM(X, 1, W, reserved) /* current VMArenaReserved */
576
577#define EVENT_vmArenaExtendDone_PARAMS(PARAM, X) \
578 PARAM(X, 0, W, chunkSize) /* request succeeded for chunkSize bytes */ \
579 PARAM(X, 1, W, reserved) /* new VMArenaReserved */
580
581#define EVENT_MessagesDropped_PARAMS(PARAM, X) \
582 PARAM(X, 0, W, count) /* count of messages dropped */
583
584#define EVENT_MessagesExist_PARAMS(PARAM, X)
585
586#define EVENT_ChainCondemnAuto_PARAMS(PARAM, X) \
587 PARAM(X, 0, P, chain) /* chain with gens being condemned */ \
588 PARAM(X, 1, W, topCondemnedGenSerial) /* condemned gens [0..this] */ \
589 PARAM(X, 2, W, genCount) /* total gens in chain */
590
591#define EVENT_TraceFindGrey_PARAMS(PARAM, X) \
592 PARAM(X, 0, P, arena) \
593 PARAM(X, 1, W, ti) \
594 PARAM(X, 2, P, seg) \
595 PARAM(X, 3, W, rank)
596
597#define EVENT_TraceBandAdvance_PARAMS(PARAM, X) \
598 PARAM(X, 0, P, arena) \
599 PARAM(X, 1, W, ti) \
600 PARAM(X, 2, W, rank)
601
602
558#endif /* eventdef_h */ 603#endif /* eventdef_h */
559 604
560/* C. COPYRIGHT AND LICENSE 605/* C. COPYRIGHT AND LICENSE
diff --git a/mps/code/global.c b/mps/code/global.c
index bb666f4e44b..974ab9afffe 100644
--- a/mps/code/global.c
+++ b/mps/code/global.c
@@ -414,6 +414,7 @@ void GlobalsPrepareToDestroy(Globals arenaGlobals)
414 414
415 /* report dropped messages (currently in diagnostic varieties only) */ 415 /* report dropped messages (currently in diagnostic varieties only) */
416 if(arena->droppedMessages > 0) { 416 if(arena->droppedMessages > 0) {
417 EVENT1(MessagesDropped, arena->droppedMessages);
417 DIAG_SINGLEF(( "GlobalsPrepareToDestroy_dropped", 418 DIAG_SINGLEF(( "GlobalsPrepareToDestroy_dropped",
418 "arena->droppedMessages = $U", (WriteFU)arena->droppedMessages, 419 "arena->droppedMessages = $U", (WriteFU)arena->droppedMessages,
419 NULL )); 420 NULL ));
@@ -425,6 +426,7 @@ void GlobalsPrepareToDestroy(Globals arenaGlobals)
425 /* the message queue would have dangling pointers to messages */ 426 /* the message queue would have dangling pointers to messages */
426 /* whose memory has been unmapped. */ 427 /* whose memory has been unmapped. */
427 if(MessagePoll(arena)) { 428 if(MessagePoll(arena)) {
429 EVENT0(MessagesExist);
428 DIAG_SINGLEF(( "GlobalsPrepareToDestroy_queue", 430 DIAG_SINGLEF(( "GlobalsPrepareToDestroy_queue",
429 "Message queue not empty", NULL )); 431 "Message queue not empty", NULL ));
430 } 432 }
diff --git a/mps/code/locus.c b/mps/code/locus.c
index 22473026dc6..6ea5127ee12 100644
--- a/mps/code/locus.c
+++ b/mps/code/locus.c
@@ -295,6 +295,7 @@ Res ChainCondemnAuto(double *mortalityReturn, Chain chain, Trace trace)
295 genNewSize = GenDescNewSize(gen); 295 genNewSize = GenDescNewSize(gen);
296 } while (genNewSize >= gen->capacity * (Size)1024); 296 } while (genNewSize >= gen->capacity * (Size)1024);
297 297
298 EVENT3(ChainCondemnAuto, chain, topCondemnedGenSerial, chain->genCount);
298 DIAG_SINGLEF(( "ChainCondemnAuto", 299 DIAG_SINGLEF(( "ChainCondemnAuto",
299 "condemn gens [0..$U]", (WriteFU)topCondemnedGenSerial, 300 "condemn gens [0..$U]", (WriteFU)topCondemnedGenSerial,
300 " (of $U)", (WriteFU)chain->genCount, 301 " (of $U)", (WriteFU)chain->genCount,
diff --git a/mps/code/trace.c b/mps/code/trace.c
index c362a4809cf..9d2ea3af249 100644
--- a/mps/code/trace.c
+++ b/mps/code/trace.c
@@ -219,6 +219,7 @@ Bool traceBandAdvance(Trace trace)
219 trace->band = RankAMBIG; 219 trace->band = RankAMBIG;
220 return FALSE; 220 return FALSE;
221 } 221 }
222 EVENT3(TraceBandAdvance, trace->arena, trace->ti, trace->band);
222 return TRUE; 223 return TRUE;
223} 224}
224 225
@@ -905,6 +906,7 @@ static Bool traceFindGrey(Seg *segReturn, Rank *rankReturn,
905 } 906 }
906 *segReturn = seg; 907 *segReturn = seg;
907 *rankReturn = rank; 908 *rankReturn = rank;
909 EVENT4(TraceFindGrey, arena, ti, seg, rank);
908 DIAG( traceFindGrey_diag(TRUE, rank); ); 910 DIAG( traceFindGrey_diag(TRUE, rank); );
909 return TRUE; 911 return TRUE;
910 } 912 }