Commit Graph

13 Commits

Author SHA1 Message Date
Nicolas Hillegeer
db7cd61f62 profiling: implement on top of os_hrtime()
Should be better than gettimeofday() since libuv uses higher resolution
clocks on most UNIX platforms. Libuv also tries to use monotonic clocks,
kernel bugs notwithstanding, which is another win over gettimeofday().

Necessary for Windows, which doesn't have gettimeofday(). In vanilla vim,
Windows uses QueryPerformanceCounter, which is the correct primitive for
this sort of things, but that was removed when slimming up the codebase.
Libuv uses QueryPerformanceCounter to implement uv_hrtime() on Windows so
the behaviour of vim profiling on Windows should now be the same.

The behaviour on Linux should be different (better) though, libuv uses more
accurate primitives than gettimeofday().

Other misc. changes:
- Added function attributes where relevant (const, pure, ...)
- Convert functions to receive scalars: Now that proftime_T is always a
  (uint64_t) scalar (and not a struct), it's clearer to convert the
  functions to receive it as such instead of a pointer to a scalar.
- Extract profiling funcs to profile.c: make everything clearer and reduces
  the size of the "catch-all" ex_cmds2.c
- Add profile.{c,h} to clint and -Wconv:
  - Don't use sprintf, use snprintf
  - Don't use long, use int16_t/int32_t/...
2014-07-16 17:12:34 +02:00
Pavel Platto
34330cf697 tempfile.c: add to clint-files and fix warnings 2014-07-14 21:14:40 +02:00
Pavel Platto
a01f7948bc Add cursor.{c,h} to clint-files.txt 2014-05-28 10:42:06 -04:00
Thiago de Arruda
d6291894d4 Build: Add more files to clint-files.txt and fix errors 2014-05-26 14:02:12 -03:00
Eliseo Martínez
f179081fc8 Remove long_u: hashtab: Enable clint: Add to clint.
- Add hashtab.[ch] to clint file.
- Fix clint errors.
2014-05-24 01:17:51 +02:00
Eliseo Martínez
ffed9bfae9 Remove long_u: hashtab: Enable clint: Sort clint file. 2014-05-24 01:17:50 +02:00
Thiago de Arruda
b87b1a3325 Improve map module: Add to clint and CONV_SRCS 2014-05-19 10:51:47 -03:00
Eliseo Martínez
575deff66d Introduce nvim namespace: Fix clint.
- Fix path to clint-checked files.
- Fix mechanism to calculate define guard names.
2014-05-15 20:46:02 +02:00
Thiago de Arruda
9d18533ca3 Add new files to clint and fix reported errors 2014-05-13 14:11:31 -03:00
Felipe Oliveira Carvalho
ee62510d4e Macro-based log utility for Neovim
This commit introduces 4 macros (for different log levels) that can be used
to log messages to $HOME/.nvimlog:

 - DLOG: log a debug message (e.g. `DLOG("sum(%d, %d): %d", x, y, sum(x, y));`)
 - ILOG: log some useful information (e.g. `ILOG("Main loop started")`)
 - WLOG: log a warning (e.g. `WLOG("Command not found: %s", command)`)
 - ELOG: log an error (e.g. `ELOG("Out of memory. Exiting.")`)

All these macros are disabled if `NDEBUG` or `DISABLE_LOG` is defined. This
guarantees that a `Release` build won't log anything.

`MIN_LOG_LEVEL` can be defined to reduce the verbosity of the log. The log
levels are:

```
DEBUG_LOG_LEVEL     0
INFO_LOG_LEVEL      1
WARNING_LOG_LEVEL   2
ERROR_LOG_LEVEL     3
```

`MIN_LOG_LEVEL` is 0 by default enabling all levels. If `MIN_LOG_LEVEL` is set
to 2, for example, only warnings and errors will be logged.

That's how the log looks like:

```
     DATETIME   LOG_LEVEL  FUNCTION  LINE  PID      FORMATTED MESSAGE

2014/05/01 23:46:14 [info @ main_loop:582] 44376 - Starting Neovim main loop.
2014/05/01 23:46:31 [info @ main_loop:582] 44400 - Starting Neovim main loop.
```
2014-05-06 09:22:39 -03:00
Thiago de Arruda
001d05541b Extract reading boilerplate into rstream.c module
The `RStream` class hides the differences between files and other types of
streams with a simpler, general-purpose API for performing non-blocking reads
with libuv. Most of the code was adapted from input.c.
2014-04-16 09:56:45 -03:00
Thiago de Arruda
1fc7d6a0c5 Fix/add more files with to clint-files.txt 2014-04-08 13:49:45 -03:00
Thiago de Arruda
0805911434 Run clint.py in some files 2014-04-08 13:49:45 -03:00