Mercurial > vim
comparison src/channel.c @ 20392:4c317d8c1051 v8.2.0751
patch 8.2.0751: Vim9: performance can be improved
Commit: https://github.com/vim/vim/commit/7e9f351b2e69b498c4ee5004d7459844e1ba191a
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed May 13 22:44:22 2020 +0200
patch 8.2.0751: Vim9: performance can be improved
Problem: Vim9: performance can be improved.
Solution: Don't call break. Inline check for list materialize. Make an
inline version of ga_grow().
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 13 May 2020 22:45:04 +0200 |
parents | 42ab4d40e78f |
children | bed30e6b5a09 |
comparison
equal
deleted
inserted
replaced
20391:9ceee4daa596 | 20392:4c317d8c1051 |
---|---|
2397 while (item != NULL) | 2397 while (item != NULL) |
2398 { | 2398 { |
2399 list_T *l = item->jq_value->vval.v_list; | 2399 list_T *l = item->jq_value->vval.v_list; |
2400 typval_T *tv; | 2400 typval_T *tv; |
2401 | 2401 |
2402 range_list_materialize(l); | 2402 CHECK_LIST_MATERIALIZE(l); |
2403 tv = &l->lv_first->li_tv; | 2403 tv = &l->lv_first->li_tv; |
2404 | 2404 |
2405 if ((without_callback || !item->jq_no_callback) | 2405 if ((without_callback || !item->jq_no_callback) |
2406 && ((id > 0 && tv->v_type == VAR_NUMBER && tv->vval.v_number == id) | 2406 && ((id > 0 && tv->v_type == VAR_NUMBER && tv->vval.v_number == id) |
2407 || (id <= 0 && (tv->v_type != VAR_NUMBER | 2407 || (id <= 0 && (tv->v_type != VAR_NUMBER |
5300 { | 5300 { |
5301 semsg(_(e_invargval), "ansi_colors"); | 5301 semsg(_(e_invargval), "ansi_colors"); |
5302 return FAIL; | 5302 return FAIL; |
5303 } | 5303 } |
5304 | 5304 |
5305 range_list_materialize(item->vval.v_list); | 5305 CHECK_LIST_MATERIALIZE(item->vval.v_list); |
5306 li = item->vval.v_list->lv_first; | 5306 li = item->vval.v_list->lv_first; |
5307 for (; li != NULL && n < 16; li = li->li_next, n++) | 5307 for (; li != NULL && n < 16; li = li->li_next, n++) |
5308 { | 5308 { |
5309 char_u *color_name; | 5309 char_u *color_name; |
5310 guicolor_T guicolor; | 5310 guicolor_T guicolor; |
5727 win32_build_cmd(list_T *l, garray_T *gap) | 5727 win32_build_cmd(list_T *l, garray_T *gap) |
5728 { | 5728 { |
5729 listitem_T *li; | 5729 listitem_T *li; |
5730 char_u *s; | 5730 char_u *s; |
5731 | 5731 |
5732 range_list_materialize(l); | 5732 CHECK_LIST_MATERIALIZE(l); |
5733 FOR_ALL_LIST_ITEMS(l, li) | 5733 FOR_ALL_LIST_ITEMS(l, li) |
5734 { | 5734 { |
5735 s = tv_get_string_chk(&li->li_tv); | 5735 s = tv_get_string_chk(&li->li_tv); |
5736 if (s == NULL) | 5736 if (s == NULL) |
5737 return FAIL; | 5737 return FAIL; |