Author: Tobias Weber <tobias_webe...@gmx.de> Branch: c8-overheads-instrumentation Changeset: r2034:0e47a33eecfb Date: 2017-03-22 18:22 +0100 http://bitbucket.org/pypy/stmgc/changeset/0e47a33eecfb/
Log: Fix calculation of duration when a second jump lies between start and stop but the duration is less than a second, i.e., add carry over from the nanoseconds to the seconds component diff --git a/c8/stm/timing.h b/c8/stm/timing.h --- a/c8/stm/timing.h +++ b/c8/stm/timing.h @@ -7,11 +7,18 @@ runtime. */ #define start_timer() struct timespec start, stop; \ struct timespec duration = { .tv_sec = 0, .tv_nsec = 0 };\ + uint32_t nanosec_diff, sec_diff; \ continue_timer() /* Must use start_timer before using this macro. */ -#define get_duration() duration.tv_sec += stop.tv_sec - start.tv_sec; \ - duration.tv_nsec += stop.tv_nsec - start.tv_nsec; +#define get_duration() nanosec_diff = stop.tv_nsec - start.tv_nsec; \ + sec_diff = stop.tv_sec - start.tv_sec; \ + if (stop.tv_nsec < start.tv_nsec) { \ + nanosec_diff += 1000000000; \ + sec_diff -= 1; \ + } \ + duration.tv_sec += sec_diff; \ + duration.tv_nsec += nanosec_diff; #define pause_timer() clock_gettime(CLOCK_MONOTONIC_RAW, &stop); \ get_duration() _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit