X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/0d23c240ea378d9a29042266216f4cf25151a04d..0d7aad1b30de7e9deb8b3c7011d9b679e538371c:/lib-src/profile.c diff --git a/lib-src/profile.c b/lib-src/profile.c index 02471d89da..0e60377604 100644 --- a/lib-src/profile.c +++ b/lib-src/profile.c @@ -1,5 +1,6 @@ /* profile.c --- generate periodic events for profiling of Emacs Lisp code. - Copyright (C) 1992, 1994, 1999, 2001-2012 Free Software Foundation, Inc. + Copyright (C) 1992, 1994, 1999, 2001-2016 Free Software Foundation, + Inc. Author: Boaz Ben-Zvi @@ -7,8 +8,8 @@ This file is part of GNU Emacs. GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +the Free Software Foundation, either version 3 of the License, or (at +your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -28,6 +29,8 @@ along with GNU Emacs. If not, see . */ ** abstraction : a stopwatch ** operations: reset_watch, get_time */ + +#define INLINE EXTERN_INLINE #include #include @@ -36,17 +39,17 @@ along with GNU Emacs. If not, see . */ #include #include -static EMACS_TIME TV1, TV2; +static struct timespec TV1; static int watch_not_started = 1; /* flag */ static char time_string[INT_STRLEN_BOUND (uintmax_t) + sizeof "." - + LOG10_EMACS_TIME_RESOLUTION]; + + LOG10_TIMESPEC_RESOLUTION]; /* Reset the stopwatch to zero. */ static void reset_watch (void) { - EMACS_GET_TIME (TV1); + TV1 = current_timespec (); watch_not_started = 0; } @@ -57,15 +60,12 @@ reset_watch (void) static char * get_time (void) { - uintmax_t s; - int ns; + struct timespec TV2 = timespec_sub (current_timespec (), TV1); + uintmax_t s = TV2.tv_sec; + int ns = TV2.tv_nsec; if (watch_not_started) exit (EXIT_FAILURE); /* call reset_watch first ! */ - EMACS_GET_TIME (TV2); - EMACS_SUB_TIME (TV2, TV2, TV1); - s = EMACS_SECS (TV2); - ns = EMACS_NSECS (TV2); - sprintf (time_string, "%"PRIuMAX".%0*d", s, LOG10_EMACS_TIME_RESOLUTION, ns); + sprintf (time_string, "%"PRIuMAX".%0*d", s, LOG10_TIMESPEC_RESOLUTION, ns); return time_string; }