1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-26 00:34:17 -07:00

Adding more events corresponding to diagnostics.

Copied from Perforce
 Change: 179141
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Richard Brooksby 2012-08-31 19:33:45 +01:00
parent 28c9bb13f3
commit fd8a2cce0d
5 changed files with 57 additions and 3 deletions

View file

@ -1102,7 +1102,8 @@ static Res vmArenaExtend(VMArena vmArena, Size size)
break;
} while(0);
EVENT3(vmArenaExtendStart, size, chunkSize,
VMArenaReserved(VMArena2Arena(vmArena)));
DIAG_SINGLEF(( "vmArenaExtend_Start",
"to accommodate size $W, try chunkSize $W", (WriteFW)size, (WriteFW)chunkSize,
" (VMArenaReserved currently $W bytes)\n",
@ -1129,6 +1130,8 @@ static Res vmArenaExtend(VMArena vmArena, Size size)
/* remove slices, down to chunkHalf but no further */
for(; chunkSize > chunkHalf; chunkSize -= sliceSize) {
if(chunkSize < chunkMin) {
EVENT2(vmArenaExtendFail, chunkMin,
VMArenaReserved(VMArena2Arena(vmArena)));
DIAG_SINGLEF(( "vmArenaExtend_FailMin",
"no remaining address-space chunk >= min($W)", (WriteFW)chunkMin,
" (so VMArenaReserved remains $W bytes)\n",
@ -1145,6 +1148,7 @@ static Res vmArenaExtend(VMArena vmArena, Size size)
vmArenaExtend_Done:
EVENT2(vmArenaExtendDone, chunkSize, VMArenaReserved(VMArena2Arena(vmArena)));
DIAG_SINGLEF(( "vmArenaExtend_Done",
"Request for new chunk of VM $W bytes succeeded", (WriteFW)chunkSize,
" (VMArenaReserved now $W bytes)\n",

View file

@ -53,7 +53,7 @@
*/
#define EventNameMAX ((size_t)19)
#define EventCodeMAX ((EventCode)0x0069)
#define EventCodeMAX ((EventCode)0x0071)
/* FIXME: Work out why not-in-use events were not in use and restore or delete them. */
@ -155,7 +155,17 @@
EVENT(X, ArenaFree , 0x0066, TRUE, Arena) \
EVENT(X, ArenaAllocFail , 0x0067, TRUE, Arena) \
EVENT(X, SegMerge , 0x0068, TRUE, Seg) \
EVENT(X, SegSplit , 0x0069, TRUE, Seg)
EVENT(X, SegSplit , 0x0069, TRUE, Seg) \
/* Events converted from RHSK's diagnostics */ \
EVENT(X, vmArenaExtendStart , 0x006A, TRUE, Arena) \
EVENT(X, vmArenaExtendFail , 0x006B, TRUE, Arena) \
EVENT(X, vmArenaExtendDone , 0x006C, TRUE, Arena) \
EVENT(X, MessagesDropped , 0x006D, TRUE, Arena) \
EVENT(X, MessagesExist , 0x006E, TRUE, Arena) \
EVENT(X, ChainCondemnAuto , 0x006F, TRUE, Trace) \
EVENT(X, TraceFindGrey , 0x0070, TRUE, Trace) \
EVENT(X, TraceBandAdvance , 0x0071, TRUE, Trace)
/* Remember to update EventNameMAX and EventCodeMAX in eventcom.h!
(These are checked in EventInit.) */
@ -555,6 +565,41 @@
PARAM(X, 2, P, segHi) \
PARAM(X, 3, A, at)
#define EVENT_vmArenaExtendStart_PARAMS(PARAM, X) \
PARAM(X, 0, W, size) /* size to accommodate */ \
PARAM(X, 1, W, chunkSize) /* chunkSize to try */ \
PARAM(X, 2, W, reserved) /* current VMArenaReserved */
#define EVENT_vmArenaExtendFail_PARAMS(PARAM, X) \
PARAM(X, 0, W, chunkMin) /* no remaining address space chunk >= chunkMin */ \
PARAM(X, 1, W, reserved) /* current VMArenaReserved */
#define EVENT_vmArenaExtendDone_PARAMS(PARAM, X) \
PARAM(X, 0, W, chunkSize) /* request succeeded for chunkSize bytes */ \
PARAM(X, 1, W, reserved) /* new VMArenaReserved */
#define EVENT_MessagesDropped_PARAMS(PARAM, X) \
PARAM(X, 0, W, count) /* count of messages dropped */
#define EVENT_MessagesExist_PARAMS(PARAM, X)
#define EVENT_ChainCondemnAuto_PARAMS(PARAM, X) \
PARAM(X, 0, P, chain) /* chain with gens being condemned */ \
PARAM(X, 1, W, topCondemnedGenSerial) /* condemned gens [0..this] */ \
PARAM(X, 2, W, genCount) /* total gens in chain */
#define EVENT_TraceFindGrey_PARAMS(PARAM, X) \
PARAM(X, 0, P, arena) \
PARAM(X, 1, W, ti) \
PARAM(X, 2, P, seg) \
PARAM(X, 3, W, rank)
#define EVENT_TraceBandAdvance_PARAMS(PARAM, X) \
PARAM(X, 0, P, arena) \
PARAM(X, 1, W, ti) \
PARAM(X, 2, W, rank)
#endif /* eventdef_h */
/* C. COPYRIGHT AND LICENSE

View file

@ -414,6 +414,7 @@ void GlobalsPrepareToDestroy(Globals arenaGlobals)
/* report dropped messages (currently in diagnostic varieties only) */
if(arena->droppedMessages > 0) {
EVENT1(MessagesDropped, arena->droppedMessages);
DIAG_SINGLEF(( "GlobalsPrepareToDestroy_dropped",
"arena->droppedMessages = $U", (WriteFU)arena->droppedMessages,
NULL ));
@ -425,6 +426,7 @@ void GlobalsPrepareToDestroy(Globals arenaGlobals)
/* the message queue would have dangling pointers to messages */
/* whose memory has been unmapped. */
if(MessagePoll(arena)) {
EVENT0(MessagesExist);
DIAG_SINGLEF(( "GlobalsPrepareToDestroy_queue",
"Message queue not empty", NULL ));
}

View file

@ -295,6 +295,7 @@ Res ChainCondemnAuto(double *mortalityReturn, Chain chain, Trace trace)
genNewSize = GenDescNewSize(gen);
} while (genNewSize >= gen->capacity * (Size)1024);
EVENT3(ChainCondemnAuto, chain, topCondemnedGenSerial, chain->genCount);
DIAG_SINGLEF(( "ChainCondemnAuto",
"condemn gens [0..$U]", (WriteFU)topCondemnedGenSerial,
" (of $U)", (WriteFU)chain->genCount,

View file

@ -219,6 +219,7 @@ Bool traceBandAdvance(Trace trace)
trace->band = RankAMBIG;
return FALSE;
}
EVENT3(TraceBandAdvance, trace->arena, trace->ti, trace->band);
return TRUE;
}
@ -905,6 +906,7 @@ static Bool traceFindGrey(Seg *segReturn, Rank *rankReturn,
}
*segReturn = seg;
*rankReturn = rank;
EVENT4(TraceFindGrey, arena, ti, seg, rank);
DIAG( traceFindGrey_diag(TRUE, rank); );
return TRUE;
}