~ chicken-core (chicken-5) cb22c92c6786281e6885ab488138dcb35b31c945
commit cb22c92c6786281e6885ab488138dcb35b31c945
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Jul 24 22:30:20 2011 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Sun Jul 24 22:30:20 2011 +0200
floor ms values when returned as flonum
diff --git a/runtime.c b/runtime.c
index 578e469f..4632169e 100644
--- a/runtime.c
+++ b/runtime.c
@@ -1647,12 +1647,13 @@ C_regparm double C_fcall C_milliseconds(void)
{
#ifdef C_NONUNIX
if(CLOCKS_PER_SEC == 1000) return clock();
- else return ((double)clock() / (double)CLOCKS_PER_SEC) * 1000;
+ else return C_floor(((double)clock() / (double)CLOCKS_PER_SEC) * 1000);
#else
struct timeval tv;
if(C_gettimeofday(&tv, NULL) == -1) return 0;
- else return ((double)tv.tv_sec - C_startup_time_seconds) * 1000.0 + tv.tv_usec / 1000;
+ else return
+ C_floor(((double)tv.tv_sec - C_startup_time_seconds) * 1000.0 + tv.tv_usec / 1000);
#endif
}
@@ -1684,13 +1685,14 @@ C_regparm double C_fcall C_cpu_milliseconds(void)
{
#if defined(C_NONUNIX) || defined(__CYGWIN__)
if(CLOCKS_PER_SEC == 1000) return clock();
- else return ((double)clock() / (double)CLOCKS_PER_SEC) * 1000;
+ else return C_floor(((double)clock() / (double)CLOCKS_PER_SEC) * 1000);
#else
struct rusage ru;
if(C_getrusage(RUSAGE_SELF, &ru) == -1) return 0;
- else return ((double)ru.ru_utime.tv_sec + ru.ru_stime.tv_sec) * 1000
- + ((double)ru.ru_utime.tv_usec + ru.ru_stime.tv_usec) / 1000;
+ else return
+ C_floor(((double)ru.ru_utime.tv_sec + ru.ru_stime.tv_sec) * 1000
+ + ((double)ru.ru_utime.tv_usec + ru.ru_stime.tv_usec) / 1000);
#endif
}
@@ -8251,14 +8253,14 @@ C_a_i_cpu_time(C_word **a, int c, C_word buf)
#if defined(C_NONUNIX) || defined(__CYGWIN__)
if(CLOCKS_PER_SEC == 1000) u = clock();
- else u = C_number(a, ((double)clock() / (double)CLOCKS_PER_SEC) * 1000);
+ else u = C_number(a, C_floor(((double)clock() / (double)CLOCKS_PER_SEC) * 1000));
#else
struct rusage ru;
if(C_getrusage(RUSAGE_SELF, &ru) == -1) u = 0;
else {
- u = C_number(a, (double)ru.ru_utime.tv_sec * 1000 + ru.ru_utime.tv_usec / 1000);
- s = C_number(a, (double)ru.ru_stime.tv_sec * 1000 + ru.ru_stime.tv_usec / 1000);
+ u = C_number(a, C_floor((double)ru.ru_utime.tv_sec * 1000 + ru.ru_utime.tv_usec / 1000));
+ s = C_number(a, C_floor((double)ru.ru_stime.tv_sec * 1000 + ru.ru_stime.tv_usec / 1000));
}
#endif
Trap