comparison src/if_py_both.h @ 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 6e1e4d7a7b39
children d571231175b4
comparison
equal deleted inserted replaced
20391:9ceee4daa596 20392:4c317d8c1051
783 { 783 {
784 Py_DECREF(ret); 784 Py_DECREF(ret);
785 return NULL; 785 return NULL;
786 } 786 }
787 787
788 range_list_materialize(list); 788 CHECK_LIST_MATERIALIZE(list);
789 FOR_ALL_LIST_ITEMS(list, curr) 789 FOR_ALL_LIST_ITEMS(list, curr)
790 { 790 {
791 if (!(newObj = VimToPython(&curr->li_tv, depth + 1, lookup_dict))) 791 if (!(newObj = VimToPython(&curr->li_tv, depth + 1, lookup_dict)))
792 { 792 {
793 Py_DECREF(ret); 793 Py_DECREF(ret);
2254 self = (ListObject *) subtype->tp_alloc(subtype, 0); 2254 self = (ListObject *) subtype->tp_alloc(subtype, 0);
2255 if (self == NULL) 2255 if (self == NULL)
2256 return NULL; 2256 return NULL;
2257 self->list = list; 2257 self->list = list;
2258 ++list->lv_refcount; 2258 ++list->lv_refcount;
2259 range_list_materialize(list); 2259 CHECK_LIST_MATERIALIZE(list);
2260 2260
2261 pyll_add((PyObject *)(self), &self->ref, &lastlist); 2261 pyll_add((PyObject *)(self), &self->ref, &lastlist);
2262 2262
2263 return (PyObject *)(self); 2263 return (PyObject *)(self);
2264 } 2264 }
2822 { 2822 {
2823 PyErr_NoMemory(); 2823 PyErr_NoMemory();
2824 return NULL; 2824 return NULL;
2825 } 2825 }
2826 2826
2827 range_list_materialize(l); 2827 CHECK_LIST_MATERIALIZE(l);
2828 list_add_watch(l, &lii->lw); 2828 list_add_watch(l, &lii->lw);
2829 lii->lw.lw_item = l->lv_first; 2829 lii->lw.lw_item = l->lv_first;
2830 lii->list = l; 2830 lii->list = l;
2831 2831
2832 return IterNew(lii, 2832 return IterNew(lii,
3019 { 3019 {
3020 dict_unref(selfdict); 3020 dict_unref(selfdict);
3021 return NULL; 3021 return NULL;
3022 } 3022 }
3023 argslist = argstv.vval.v_list; 3023 argslist = argstv.vval.v_list;
3024 range_list_materialize(argslist); 3024 CHECK_LIST_MATERIALIZE(argslist);
3025 3025
3026 argc = argslist->lv_len; 3026 argc = argslist->lv_len;
3027 if (argc != 0) 3027 if (argc != 0)
3028 { 3028 {
3029 argv = PyMem_New(typval_T, (size_t) argc); 3029 argv = PyMem_New(typval_T, (size_t) argc);