Mercurial > vim
comparison src/popupwin.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 | 3b3589275ab9 |
children | 3fe45aa3bbc5 |
comparison
equal
deleted
inserted
replaced
20391:9ceee4daa596 | 20392:4c317d8c1051 |
---|---|
96 | 96 |
97 for (i = 0; i < 4; ++i) | 97 for (i = 0; i < 4; ++i) |
98 array[i] = 1; | 98 array[i] = 1; |
99 if (list != NULL) | 99 if (list != NULL) |
100 { | 100 { |
101 range_list_materialize(list); | 101 CHECK_LIST_MATERIALIZE(list); |
102 for (i = 0, li = list->lv_first; i < 4 && i < list->lv_len; | 102 for (i = 0, li = list->lv_first; i < 4 && i < list->lv_len; |
103 ++i, li = li->li_next) | 103 ++i, li = li->li_next) |
104 { | 104 { |
105 nr = (int)tv_get_number(&li->li_tv); | 105 nr = (int)tv_get_number(&li->li_tv); |
106 if (nr >= 0) | 106 if (nr >= 0) |
514 list_T *l = di->di_tv.vval.v_list; | 514 list_T *l = di->di_tv.vval.v_list; |
515 listitem_T *li; | 515 listitem_T *li; |
516 int mincol; | 516 int mincol; |
517 int maxcol; | 517 int maxcol; |
518 | 518 |
519 range_list_materialize(l); | 519 CHECK_LIST_MATERIALIZE(l); |
520 li = l->lv_first; | 520 li = l->lv_first; |
521 if (l->lv_len == 3) | 521 if (l->lv_len == 3) |
522 { | 522 { |
523 varnumber_T nr = tv_get_number(&l->lv_first->li_tv); | 523 varnumber_T nr = tv_get_number(&l->lv_first->li_tv); |
524 | 524 |
754 { | 754 { |
755 list_T *list = di->di_tv.vval.v_list; | 755 list_T *list = di->di_tv.vval.v_list; |
756 listitem_T *li; | 756 listitem_T *li; |
757 int i; | 757 int i; |
758 | 758 |
759 range_list_materialize(list); | 759 CHECK_LIST_MATERIALIZE(list); |
760 for (i = 0, li = list->lv_first; i < 4 && i < list->lv_len; | 760 for (i = 0, li = list->lv_first; i < 4 && i < list->lv_len; |
761 ++i, li = li->li_next) | 761 ++i, li = li->li_next) |
762 { | 762 { |
763 str = tv_get_string(&li->li_tv); | 763 str = tv_get_string(&li->li_tv); |
764 if (*str != NUL) | 764 if (*str != NUL) |
788 listitem_T *li; | 788 listitem_T *li; |
789 int i; | 789 int i; |
790 | 790 |
791 if (list != NULL) | 791 if (list != NULL) |
792 { | 792 { |
793 range_list_materialize(list); | 793 CHECK_LIST_MATERIALIZE(list); |
794 for (i = 0, li = list->lv_first; i < 8 && i < list->lv_len; | 794 for (i = 0, li = list->lv_first; i < 8 && i < list->lv_len; |
795 ++i, li = li->li_next) | 795 ++i, li = li->li_next) |
796 { | 796 { |
797 str = tv_get_string(&li->li_tv); | 797 str = tv_get_string(&li->li_tv); |
798 if (*str != NUL) | 798 if (*str != NUL) |
843 { | 843 { |
844 ok = FALSE; | 844 ok = FALSE; |
845 break; | 845 break; |
846 } | 846 } |
847 else | 847 else |
848 range_list_materialize(li->li_tv.vval.v_list); | 848 CHECK_LIST_MATERIALIZE(li->li_tv.vval.v_list); |
849 } | 849 } |
850 } | 850 } |
851 if (ok) | 851 if (ok) |
852 { | 852 { |
853 wp->w_popup_mask = di->di_tv.vval.v_list; | 853 wp->w_popup_mask = di->di_tv.vval.v_list; |