vi: code shrink

- In the '+' and '-' commands the call to dot_skip_over_ws() is
  only needed for the final line processed so it can be moved out
  of the while loop.

- Marking sync_cursor() NOINLINE doesn't seem to offer the same
  advantages it did in 2009 (commit adf922ec2).

function                                             old     new   delta
refresh                                              694     974    +280
do_cmd                                              4900    4887     -13
sync_cursor                                          336       -    -336
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 280/-349)          Total: -69 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Ron Yorston 2021-03-28 13:23:51 +01:00 committed by Denys Vlasenko
parent d56da68057
commit a25b4c2c42

View File

@ -757,7 +757,7 @@ static void new_screen(int ro, int co)
} }
//----- Synchronize the cursor to Dot -------------------------- //----- Synchronize the cursor to Dot --------------------------
static NOINLINE void sync_cursor(char *d, int *row, int *col) static void sync_cursor(char *d, int *row, int *col)
{ {
char *beg_cur; // begin and end of "d" line char *beg_cur; // begin and end of "d" line
char *tp; char *tp;
@ -3302,8 +3302,8 @@ static void do_cmd(int c)
case '+': // +- goto next line case '+': // +- goto next line
do { do {
dot_next(); dot_next();
dot_skip_over_ws();
} while (--cmdcnt > 0); } while (--cmdcnt > 0);
dot_skip_over_ws();
break; break;
case 21: // ctrl-U scroll up half screen case 21: // ctrl-U scroll up half screen
dot_scroll((rows - 2) / 2, -1); dot_scroll((rows - 2) / 2, -1);
@ -3451,8 +3451,8 @@ static void do_cmd(int c)
case '-': // -- goto prev line case '-': // -- goto prev line
do { do {
dot_prev(); dot_prev();
dot_skip_over_ws();
} while (--cmdcnt > 0); } while (--cmdcnt > 0);
dot_skip_over_ws();
break; break;
#if ENABLE_FEATURE_VI_DOT_CMD #if ENABLE_FEATURE_VI_DOT_CMD
case '.': // .- repeat the last modifying command case '.': // .- repeat the last modifying command