Mercurial > vim
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); |