diff options
| author | Richard Kistruck | 2008-10-31 10:10:19 +0000 |
|---|---|---|
| committer | Richard Kistruck | 2008-10-31 10:10:19 +0000 |
| commit | 0c1a9c3dc7c8dfddb7c6ef64e416b77ead5534d0 (patch) | |
| tree | 6a93cfdd48df871510f7c0758a314fb4187ea3e2 /mps/code | |
| parent | ed4cc8fe5dd8f353f45141edaf156b5d3f52a6f9 (diff) | |
| download | emacs-0c1a9c3dc7c8dfddb7c6ef64e416b77ead5534d0.tar.gz emacs-0c1a9c3dc7c8dfddb7c6ef64e416b77ead5534d0.zip | |
Mps br/timing: (broken) snapshot; i want to back these out and rearrange
functions into a consistent order first
Copied from Perforce
Change: 166585
ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
| -rw-r--r-- | mps/code/message.c | 3 | ||||
| -rw-r--r-- | mps/code/mpmst.h | 1 | ||||
| -rw-r--r-- | mps/code/mps.h | 20 | ||||
| -rw-r--r-- | mps/code/mpsi.c | 16 | ||||
| -rw-r--r-- | mps/code/mpslib.h | 3 |
5 files changed, 34 insertions, 9 deletions
diff --git a/mps/code/message.c b/mps/code/message.c index 2d12432acff..f5d62624b24 100644 --- a/mps/code/message.c +++ b/mps/code/message.c | |||
| @@ -62,6 +62,7 @@ Bool MessageCheck(Message message) | |||
| 62 | CHECKL(MessageTypeCheck(message->type)); | 62 | CHECKL(MessageTypeCheck(message->type)); |
| 63 | CHECKU(MessageClass, message->class); | 63 | CHECKU(MessageClass, message->class); |
| 64 | CHECKL(RingCheck(&message->queueRing)); | 64 | CHECKL(RingCheck(&message->queueRing)); |
| 65 | /* cannot check postedClock: no check for mps_clock_t */ | ||
| 65 | 66 | ||
| 66 | return TRUE; | 67 | return TRUE; |
| 67 | } | 68 | } |
| @@ -117,6 +118,7 @@ void MessageInit(Arena arena, Message message, MessageClass class, | |||
| 117 | message->class = class; | 118 | message->class = class; |
| 118 | RingInit(&message->queueRing); | 119 | RingInit(&message->queueRing); |
| 119 | message->type = type; | 120 | message->type = type; |
| 121 | message->postedClock = 0; | ||
| 120 | message->sig = MessageSig; | 122 | message->sig = MessageSig; |
| 121 | 123 | ||
| 122 | AVERT(Message, message); | 124 | AVERT(Message, message); |
| @@ -145,6 +147,7 @@ void MessagePost(Arena arena, Message message) | |||
| 145 | AVER(!MessageOnQueue(message)); | 147 | AVER(!MessageOnQueue(message)); |
| 146 | if(MessageTypeEnabled(arena, message->type)) { | 148 | if(MessageTypeEnabled(arena, message->type)) { |
| 147 | RingAppend(&arena->messageRing, &message->queueRing); | 149 | RingAppend(&arena->messageRing, &message->queueRing); |
| 150 | message->postedClock = mps_clock(); | ||
| 148 | } else { | 151 | } else { |
| 149 | /* discard message immediately if client hasn't enabled that type */ | 152 | /* discard message immediately if client hasn't enabled that type */ |
| 150 | MessageDiscard(arena, message); | 153 | MessageDiscard(arena, message); |
diff --git a/mps/code/mpmst.h b/mps/code/mpmst.h index 739c95a449d..1905e2bb560 100644 --- a/mps/code/mpmst.h +++ b/mps/code/mpmst.h | |||
| @@ -223,6 +223,7 @@ typedef struct MessageStruct { | |||
| 223 | MessageType type; /* Message Type */ | 223 | MessageType type; /* Message Type */ |
| 224 | MessageClass class; /* Message Class Structure */ | 224 | MessageClass class; /* Message Class Structure */ |
| 225 | RingStruct queueRing; /* Message queue ring */ | 225 | RingStruct queueRing; /* Message queue ring */ |
| 226 | mps_clock_t postedClock; /* mps_clock() at post time */ | ||
| 226 | } MessageStruct; | 227 | } MessageStruct; |
| 227 | 228 | ||
| 228 | 229 | ||
diff --git a/mps/code/mps.h b/mps/code/mps.h index 14b6466def5..75248a4e4ec 100644 --- a/mps/code/mps.h +++ b/mps/code/mps.h | |||
| @@ -48,6 +48,7 @@ typedef size_t mps_align_t; /* alignment (size_t) */ | |||
| 48 | typedef unsigned mps_rm_t; /* root mode (unsigned) */ | 48 | typedef unsigned mps_rm_t; /* root mode (unsigned) */ |
| 49 | typedef unsigned mps_rank_t; /* ranks (unsigned) */ | 49 | typedef unsigned mps_rank_t; /* ranks (unsigned) */ |
| 50 | typedef unsigned mps_message_type_t; /* message type (unsigned) */ | 50 | typedef unsigned mps_message_type_t; /* message type (unsigned) */ |
| 51 | typedef unsigned long mps_clock_t; /* processor time */ | ||
| 51 | 52 | ||
| 52 | /* Result Codes */ | 53 | /* Result Codes */ |
| 53 | /* .result-codes: Keep in sync with <code/mpmtypes.h#result-codes> */ | 54 | /* .result-codes: Keep in sync with <code/mpmtypes.h#result-codes> */ |
| @@ -515,23 +516,28 @@ extern mps_word_t mps_collections(mps_arena_t); | |||
| 515 | 516 | ||
| 516 | /* Messages */ | 517 | /* Messages */ |
| 517 | 518 | ||
| 518 | extern mps_bool_t mps_message_poll(mps_arena_t); | ||
| 519 | extern void mps_message_type_enable(mps_arena_t, mps_message_type_t); | 519 | extern void mps_message_type_enable(mps_arena_t, mps_message_type_t); |
| 520 | extern void mps_message_type_disable(mps_arena_t, mps_message_type_t); | 520 | extern void mps_message_type_disable(mps_arena_t, mps_message_type_t); |
| 521 | extern mps_bool_t mps_message_poll(mps_arena_t); | ||
| 522 | extern mps_bool_t mps_message_queue_type(mps_message_type_t *, mps_arena_t); | ||
| 523 | |||
| 521 | extern mps_bool_t mps_message_get(mps_message_t *, | 524 | extern mps_bool_t mps_message_get(mps_message_t *, |
| 522 | mps_arena_t, mps_message_type_t); | 525 | mps_arena_t, mps_message_type_t); |
| 523 | extern void mps_message_discard(mps_arena_t, mps_message_t); | 526 | extern void mps_message_discard(mps_arena_t, mps_message_t); |
| 524 | extern mps_bool_t mps_message_queue_type(mps_message_type_t *, mps_arena_t); | ||
| 525 | extern mps_message_type_t mps_message_type(mps_arena_t, mps_message_t); | ||
| 526 | 527 | ||
| 527 | /* Message Type Specific Methods */ | 528 | /* Message Methods */ |
| 529 | |||
| 530 | /* -- All Message Types */ | ||
| 531 | |||
| 532 | extern mps_message_type_t mps_message_type(mps_arena_t, mps_message_t); | ||
| 533 | extern mps_clock_t mps_message_clock(mps_arena_t, mps_message_t); | ||
| 528 | 534 | ||
| 529 | /* MPS_MESSAGE_TYPE_FINALIZATION */ | 535 | /* -- mps_message_type_finalization */ |
| 530 | 536 | ||
| 531 | extern void mps_message_finalization_ref(mps_addr_t *, | 537 | extern void mps_message_finalization_ref(mps_addr_t *, |
| 532 | mps_arena_t, mps_message_t); | 538 | mps_arena_t, mps_message_t); |
| 533 | 539 | ||
| 534 | /* MPS_MESSAGE_TYPE_GC */ | 540 | /* -- mps_message_type_gc_start */ |
| 535 | 541 | ||
| 536 | extern size_t mps_message_gc_live_size(mps_arena_t, mps_message_t); | 542 | extern size_t mps_message_gc_live_size(mps_arena_t, mps_message_t); |
| 537 | 543 | ||
| @@ -540,7 +546,7 @@ extern size_t mps_message_gc_condemned_size(mps_arena_t, mps_message_t); | |||
| 540 | extern size_t mps_message_gc_not_condemned_size(mps_arena_t, | 546 | extern size_t mps_message_gc_not_condemned_size(mps_arena_t, |
| 541 | mps_message_t); | 547 | mps_message_t); |
| 542 | 548 | ||
| 543 | /* MPS_MESSAGE_TYPE_GC_START */ | 549 | /* -- mps_message_type_gc_start */ |
| 544 | 550 | ||
| 545 | extern const char *mps_message_gc_start_why(mps_arena_t, mps_message_t); | 551 | extern const char *mps_message_gc_start_why(mps_arena_t, mps_message_t); |
| 546 | 552 | ||
diff --git a/mps/code/mpsi.c b/mps/code/mpsi.c index a24deb44bb0..1208637b11f 100644 --- a/mps/code/mpsi.c +++ b/mps/code/mpsi.c | |||
| @@ -1594,6 +1594,22 @@ mps_message_type_t mps_message_type(mps_arena_t mps_arena, | |||
| 1594 | return (mps_message_type_t)type; | 1594 | return (mps_message_type_t)type; |
| 1595 | } | 1595 | } |
| 1596 | 1596 | ||
| 1597 | mps_clock_t mps_message_clock(mps_arena_t mps_arena, | ||
| 1598 | mps_message_t mps_message) | ||
| 1599 | { | ||
| 1600 | Arena arena = (Arena)mps_arena; | ||
| 1601 | Message message = (Message)mps_message; | ||
| 1602 | mps_clock_t postedClock; /* @@@@ should be Clock, not mps_clock_t */ | ||
| 1603 | |||
| 1604 | ArenaEnter(arena); | ||
| 1605 | |||
| 1606 | postedClock = 0; /* MessageGetClock(message); */ | ||
| 1607 | |||
| 1608 | ArenaLeave(arena); | ||
| 1609 | |||
| 1610 | return (mps_clock_t)postedClock; | ||
| 1611 | } | ||
| 1612 | |||
| 1597 | void mps_message_discard(mps_arena_t mps_arena, | 1613 | void mps_message_discard(mps_arena_t mps_arena, |
| 1598 | mps_message_t mps_message) | 1614 | mps_message_t mps_message) |
| 1599 | { | 1615 | { |
diff --git a/mps/code/mpslib.h b/mps/code/mpslib.h index 094975b3cf7..f74bd986fa6 100644 --- a/mps/code/mpslib.h +++ b/mps/code/mpslib.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | #define mpslib_h | 14 | #define mpslib_h |
| 15 | 15 | ||
| 16 | #include <stddef.h> | 16 | #include <stddef.h> |
| 17 | 17 | #include "mps.h" /* mps_clock_t */ | |
| 18 | 18 | ||
| 19 | extern int mps_lib_get_EOF(void); | 19 | extern int mps_lib_get_EOF(void); |
| 20 | #define mps_lib_EOF (mps_lib_get_EOF()) | 20 | #define mps_lib_EOF (mps_lib_get_EOF()) |
| @@ -36,7 +36,6 @@ extern void *(mps_lib_memcpy)(void *, const void *, size_t); | |||
| 36 | extern int (mps_lib_memcmp)(const void *, const void *, size_t); | 36 | extern int (mps_lib_memcmp)(const void *, const void *, size_t); |
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | typedef unsigned long mps_clock_t; | ||
| 40 | extern mps_clock_t mps_clock(void); | 39 | extern mps_clock_t mps_clock(void); |
| 41 | extern mps_clock_t mps_clocks_per_sec(void); | 40 | extern mps_clock_t mps_clocks_per_sec(void); |
| 42 | 41 | ||