Mercurial > vim
changeset 9998:3063d1acd0c9 v7.4.2272
commit https://github.com/vim/vim/commit/9f8187c335b4fb07be9095dfdd0fc52670ba3c3f
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Aug 27 20:34:01 2016 +0200
patch 7.4.2272
Problem: getbufinfo(), getwininfo() and gettabinfo() are inefficient.
Solution: Instead of making a copy of the variables dictionary, use a
reference.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 27 Aug 2016 20:45:05 +0200 |
parents | 872a7f55d59a |
children | 2c5b2fc3a9f9 |
files | src/evalfunc.c src/version.c |
diffstat | 2 files changed, 8 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -3922,7 +3922,6 @@ get_buffer_info(buf_T *buf) { dict_T *dict; dict_T *opts; - dict_T *vars; tabpage_T *tp; win_T *wp; list_T *windows; @@ -3943,10 +3942,8 @@ get_buffer_info(buf_T *buf) buf->b_ml.ml_mfp != NULL && buf->b_nwindows == 0, NULL); - /* Copy buffer variables */ - vars = dict_copy(buf->b_vars, TRUE, 0); - if (vars != NULL) - dict_add_dict(dict, "variables", vars); + /* Get a reference to buffer variables */ + dict_add_dict(dict, "variables", buf->b_vars); /* Copy buffer options */ opts = get_winbuf_options(TRUE); @@ -4994,7 +4991,6 @@ get_tabpage_info(tabpage_T *tp, int tp_i { win_T *wp; dict_T *dict; - dict_T *vars; list_T *l; dict = dict_alloc(); @@ -5012,10 +5008,8 @@ get_tabpage_info(tabpage_T *tp, int tp_i dict_add_list(dict, "windows", l); } - /* Copy tabpage variables */ - vars = dict_copy(tp->tp_vars, TRUE, 0); - if (vars != NULL) - dict_add_dict(dict, "variables", vars); + /* Make a reference to tabpage variables */ + dict_add_dict(dict, "variables", tp->tp_vars); return dict; } @@ -5118,7 +5112,6 @@ f_gettabwinvar(typval_T *argvars, typval get_win_info(win_T *wp, short tpnr, short winnr) { dict_T *dict; - dict_T *vars; dict_T *opts; dict = dict_alloc(); @@ -5138,10 +5131,8 @@ get_win_info(win_T *wp, short tpnr, shor (bt_quickfix(wp->w_buffer) && wp->w_llist_ref != NULL), NULL); #endif - /* Copy window variables */ - vars = dict_copy(wp->w_vars, TRUE, 0); - if (vars != NULL) - dict_add_dict(dict, "variables", vars); + /* Make a reference to window variables */ + dict_add_dict(dict, "variables", wp->w_vars); /* Copy window options */ opts = get_winbuf_options(FALSE);