From c2d5420ea699147afa1b1c4df63b9daa7a74bd71 Mon Sep 17 00:00:00 2001 From: Richard Kistruck Date: Wed, 12 Nov 2008 09:26:48 +0000 Subject: Mps br/timing: new clocknow() wrapper for mps_clock(), clockspersec(); use Clock in arena step (not Word). Copied from Perforce Change: 166701 ServerID: perforce.ravenbrook.com --- mps/code/global.c | 22 +++++++++++----------- mps/code/message.c | 2 +- mps/code/mpm.h | 6 ++++++ mps/code/mpmst.h | 4 ++-- 4 files changed, 20 insertions(+), 14 deletions(-) (limited to 'mps/code') diff --git a/mps/code/global.c b/mps/code/global.c index b86f9baaca9..d8fef857619 100644 --- a/mps/code/global.c +++ b/mps/code/global.c @@ -193,7 +193,7 @@ Bool GlobalsCheck(Globals arenaGlobals) CHECKL(arena->tracedSize >= 0.0); CHECKL(arena->tracedTime >= 0.0); - CHECKL(arena->lastWorldCollect >= 0); + /* no check for arena->lastWorldCollect (Clock) */ /* can't write a check for arena->epoch */ @@ -277,7 +277,7 @@ Res GlobalsInit(Globals arenaGlobals) arena->flippedTraces = TraceSetEMPTY; /* */ arena->tracedSize = 0.0; arena->tracedTime = 0.0; - arena->lastWorldCollect = mps_clock(); + arena->lastWorldCollect = ClockNow(); arena->insideShield = FALSE; /* */ arena->shCacheI = (Size)0; arena->shCacheLimit = (Size)1; @@ -636,8 +636,8 @@ void ArenaPoll(Globals globals) static Bool arenaShouldCollectWorld(Arena arena, double interval, double multiplier, - Word now, - Word clocks_per_sec) + Clock now, + Clock clocks_per_sec) { double scanRate; Size arenaSize; @@ -680,8 +680,8 @@ Bool ArenaStep(Globals globals, double interval, double multiplier) double size; Size scanned; Bool stepped; - Word start, end, now; - Word clocks_per_sec; + Clock start, end, now; + Clock clocks_per_sec; Arena arena; AVERT(Globals, globals); @@ -689,10 +689,10 @@ Bool ArenaStep(Globals globals, double interval, double multiplier) AVER(multiplier >= 0.0); arena = GlobalsArena(globals); - clocks_per_sec = mps_clocks_per_sec(); + clocks_per_sec = ClocksPerSec(); - start = mps_clock(); - end = start + (Word)(interval * clocks_per_sec); + start = ClockNow(); + end = start + (Clock)(interval * clocks_per_sec); AVER(end >= start); stepped = FALSE; @@ -708,7 +708,7 @@ Bool ArenaStep(Globals globals, double interval, double multiplier) /* loop while there is work to do and time on the clock. */ do { scanned = TracePoll(globals); - now = mps_clock(); + now = ClockNow(); if (scanned > 0) { stepped = TRUE; arena->tracedSize += scanned; @@ -968,7 +968,7 @@ Res GlobalsDescribe(Globals arenaGlobals, mps_lib_FILE *stream) /* C. COPYRIGHT AND LICENSE * - * Copyright (C) 2001-2003 Ravenbrook Limited . + * Copyright (C) 2001-2003, 2008 Ravenbrook Limited . * All rights reserved. This is an open source license. Contact * Ravenbrook for commercial licensing options. * diff --git a/mps/code/message.c b/mps/code/message.c index f92d8d571e4..a09cc02a536 100644 --- a/mps/code/message.c +++ b/mps/code/message.c @@ -125,7 +125,7 @@ void MessagePost(Arena arena, Message message) /* Setting clock involves mpslib call, so only do it for rare */ /* messages. Currently: all messages except finalization. */ if(message->type != MessageTypeFINALIZATION) { - message->postedClock = mps_clock(); + message->postedClock = ClockNow(); } RingAppend(&arena->messageRing, &message->queueRing); } else { diff --git a/mps/code/mpm.h b/mps/code/mpm.h index 7fd53f15127..717eda1f9d9 100644 --- a/mps/code/mpm.h +++ b/mps/code/mpm.h @@ -119,6 +119,12 @@ extern int (AddrComp)(Addr a, Addr b, Size size); #define ADDR_PTR(type, addr) ((type *)(addr)) +/* Clock */ + +#define ClockNow() ((Clock)mps_clock()) +#define ClocksPerSec() ((Clock)mps_clocks_per_sec()) + + /* Result codes */ extern Bool ResIsAllocFailure(Res res); diff --git a/mps/code/mpmst.h b/mps/code/mpmst.h index 7cb111fc281..af5e2d89fd6 100644 --- a/mps/code/mpmst.h +++ b/mps/code/mpmst.h @@ -709,7 +709,7 @@ typedef struct ArenaStruct { /* policy fields */ double tracedSize; double tracedTime; - Word lastWorldCollect; + Clock lastWorldCollect; RingStruct greyRing[RankLIMIT]; /* ring of grey segments at each rank */ STATISTIC_DECL(Count writeBarrierHitCount); /* write barrier hits */ @@ -734,7 +734,7 @@ typedef struct AllocPatternStruct { /* C. COPYRIGHT AND LICENSE * - * Copyright (C) 2001-2003, 2006 Ravenbrook Limited . + * Copyright (C) 2001-2003, 2006, 2008 Ravenbrook Limited . * All rights reserved. This is an open source license. Contact * Ravenbrook for commercial licensing options. * -- cgit v1.2.1