mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
viml/reltime(): allow negative result #10453
- define proftime_T as signed integer - profile_sub(): allow negative result closes #10452
This commit is contained in:
parent
652be3cb00
commit
06af88cd72
@ -39,7 +39,7 @@ void time_init(void)
|
|||||||
/// @see gettimeofday(2)
|
/// @see gettimeofday(2)
|
||||||
///
|
///
|
||||||
/// @return Current time in microseconds.
|
/// @return Current time in microseconds.
|
||||||
uint64_t os_utime(void)
|
int64_t os_utime(void)
|
||||||
FUNC_ATTR_WARN_UNUSED_RESULT
|
FUNC_ATTR_WARN_UNUSED_RESULT
|
||||||
{
|
{
|
||||||
uv_timeval64_t tm;
|
uv_timeval64_t tm;
|
||||||
@ -47,8 +47,8 @@ uint64_t os_utime(void)
|
|||||||
if (e != 0 || tm.tv_sec < 0 || tm.tv_usec < 0) {
|
if (e != 0 || tm.tv_sec < 0 || tm.tv_usec < 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
uint64_t rv = (uint64_t)tm.tv_sec * 1000 * 1000; // s => μs
|
int64_t rv = tm.tv_sec * 1000 * 1000; // s => μs
|
||||||
STRICT_ADD(rv, tm.tv_usec, &rv, uint64_t);
|
STRICT_ADD(rv, tm.tv_usec, &rv, int64_t);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ proftime_T profile_setlimit(int64_t msec) FUNC_ATTR_WARN_UNUSED_RESULT
|
|||||||
}
|
}
|
||||||
assert(msec <= (INT64_MAX / 1000LL) - 1);
|
assert(msec <= (INT64_MAX / 1000LL) - 1);
|
||||||
|
|
||||||
proftime_T usec = (proftime_T)msec * 1000ULL;
|
proftime_T usec = msec * 1000;
|
||||||
return os_utime() + usec;
|
return os_utime() + usec;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ proftime_T profile_add(proftime_T tm1, proftime_T tm2) FUNC_ATTR_CONST
|
|||||||
/// @return `tm1` - `tm2`
|
/// @return `tm1` - `tm2`
|
||||||
proftime_T profile_sub(proftime_T tm1, proftime_T tm2) FUNC_ATTR_CONST
|
proftime_T profile_sub(proftime_T tm1, proftime_T tm2) FUNC_ATTR_CONST
|
||||||
{
|
{
|
||||||
return tm1 > tm2 ? tm1 - tm2 : 0; // os_utime() may go backwards.
|
return tm1 - tm2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Adds the `self` time from the total time and the `children` time.
|
/// Adds the `self` time from the total time and the `children` time.
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
typedef uint64_t proftime_T;
|
typedef int64_t proftime_T;
|
||||||
|
|
||||||
#define TIME_MSG(s) do { \
|
#define TIME_MSG(s) do { \
|
||||||
if (time_fd != NULL) time_msg(s, NULL); \
|
if (time_fd != NULL) time_msg(s, NULL); \
|
||||||
|
@ -33,4 +33,14 @@ describe('reltimestr(), reltimefloat()', function()
|
|||||||
ok(reltimefloat(differs) < 1.0)
|
ok(reltimefloat(differs) < 1.0)
|
||||||
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('reltime() allows negative result #10452', function()
|
||||||
|
local older_time = reltime()
|
||||||
|
command('sleep 1m')
|
||||||
|
local newer_time = reltime()
|
||||||
|
-- Should be something like -0.002123.
|
||||||
|
local rv = tonumber(reltimestr(reltime(newer_time, older_time)))
|
||||||
|
ok(rv < 0)
|
||||||
|
ok(rv > -10)
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user