1
Fork 0
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:
Richard Kistruck 2008-11-07 16:11:37 +00:00
parent eec7b1abfd
commit 55c7940bdb
2 changed files with 11 additions and 4 deletions

View file

@ -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

View file

@ -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 */