~ 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)); } #endifTrap