mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-23 14:10:28 -08:00
Mps br/timing:
message.c: maintain postedClock field, set it with mps_clock() at post time; amcss.c: call and display mps_message_clock() on _gc_start & _gc messages. Copied from Perforce Change: 166677 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
eec7b1abfd
commit
55c7940bdb
2 changed files with 11 additions and 4 deletions
|
|
@ -63,7 +63,8 @@ static void report(mps_arena_t arena)
|
|||
/* @@@@ is using these macros in a switch supported? */
|
||||
case mps_message_type_gc_start(): {
|
||||
printf("\nCollection started. Because:\n");
|
||||
printf("%s\n", mps_message_gc_start_why(arena, message));
|
||||
printf(" %s\n", mps_message_gc_start_why(arena, message));
|
||||
printf(" clock: %lu\n", (unsigned long)mps_message_clock(arena, message));
|
||||
break;
|
||||
}
|
||||
case mps_message_type_gc(): {
|
||||
|
|
@ -74,9 +75,10 @@ static void report(mps_arena_t arena)
|
|||
not_condemned = mps_message_gc_not_condemned_size(arena, message);
|
||||
|
||||
printf("\nCollection %d finished:\n", ++nCollections);
|
||||
printf("live %lu\n", (unsigned long)live);
|
||||
printf("condemned %lu\n", (unsigned long)condemned);
|
||||
printf("not_condemned %lu\n", (unsigned long)not_condemned);
|
||||
printf(" live %lu\n", (unsigned long)live);
|
||||
printf(" condemned %lu\n", (unsigned long)condemned);
|
||||
printf(" not_condemned %lu\n", (unsigned long)not_condemned);
|
||||
printf(" clock: %lu\n", (unsigned long)mps_message_clock(arena, message));
|
||||
|
||||
if(condemned > (gen1SIZE + gen2SIZE + (size_t)128) * 1024) {
|
||||
/* When condemned size is larger than could happen in a gen 2
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ Bool MessageCheck(Message message)
|
|||
CHECKL(MessageTypeCheck(message->type));
|
||||
CHECKU(MessageClass, message->class);
|
||||
CHECKL(RingCheck(&message->queueRing));
|
||||
/* cannot check postedClock: no check for mps_clock_t */
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -81,6 +82,7 @@ void MessageInit(Arena arena, Message message, MessageClass class,
|
|||
message->class = class;
|
||||
RingInit(&message->queueRing);
|
||||
message->type = type;
|
||||
message->postedClock = 0;
|
||||
message->sig = MessageSig;
|
||||
|
||||
AVERT(Message, message);
|
||||
|
|
@ -120,6 +122,9 @@ void MessagePost(Arena arena, Message message)
|
|||
/* <design/message/#fun.post.singleton> */
|
||||
AVER(!MessageOnQueue(message));
|
||||
if(MessageTypeEnabled(arena, message->type)) {
|
||||
/* @@@@ for finalization messages, this may be critical path; */
|
||||
/* so is it still ok to call mps_clock() here? */
|
||||
message->postedClock = mps_clock();
|
||||
RingAppend(&arena->messageRing, &message->queueRing);
|
||||
} else {
|
||||
/* discard message immediately if client hasn't enabled that type */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue